Python函数之返回值、作用域和局部变量

一、函数返回值

  说到返回值,相信大家肯定都认识,没错,就是return。

  所谓返回值可以这样理解:函数外部的代码要想获取函数的执行结果,就可以在函数里用return语句把结果返回。

  那具体怎么用呢?接着往下看: 

#!/usr/bin/env python3
#-*- coding:utf-8 -*-
# write by congcong

# return 表示一个程序的结束,他可以返回任意的元素,列表或字典
def stu_info(name,age,course):
    print(name,age,course)
    if age > 18:
        return True
    else:
        return False

stu_return = stu_info(‘hope‘,19,‘life‘)
print(stu_return) # 输出:True

def stu_info(name,age,course):
    print(name,age,course)
    return ‘good‘,‘work‘
    return 0 #不执行

stu_return = stu_info(‘hope‘,19,‘life‘)
print(stu_return) #输出 (‘good‘, ‘work‘) ,中间逗号分隔时返回转为元组,第二个连续return不执行

 注意:

  1、函数在执行过程中只要遇到return语句,就会停止执行并返回结果,so 也可以理解为 return 语句代表着函数的结束。

  2、如果未在函数中指定return,那这个函数的返回值为None。

 怎么样,这回不敢小看我了吧!

二、作用域

  作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。

  还可以结合函数这么理解:

      python中函数就是一个作用域,局部变量放置在其作用域中代码完成后,作用域便生成了,作用域链向上查找。

  看代码:

# -*-coding:utf-8-*-

age = 21
def func1():
    age = 19
    print(‘func1输出:‘,age) # 输出:19
    def func2():
        print(‘func2输出:‘,age) # 输出:19
    return func2  # 返回函数名

val = func1()  # 调用func1并将返回值赋给变量val,val = func2
print(val)  # 输出:<function func1.<locals>.func2 at 0x000002CE667298C8>
val() # 等于调用func2,返回函数定义处执行
print(‘全局输出:‘,age)  # 输出:21

三、函数局部变量和全局变量

  定义:

    在函数中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。

  区别:

    1、全局变量作用域是整个程序,局部变量作用域是定义该变量的函数。

    2、当全局变量与局部变量同名时,在定义局部变量的函数内,局部变量起作用;在其它地方全局变量起作用。

  注意:

    在函数内部,可以引用全局变量;如果全局和局部都有一个变量,函数查找,由内而外,局部没有,再到全局找

  看实例:

#-*- coding:utf-8 -*-

name_out = ‘daydayup‘

def change_name():
    # name_in = ‘dayup‘ # 局部变量
    # print(‘内部-》‘,name_in,id(name_in))  #内部定义时,优先调用,此时输出:dayup  1997485691096
    print(name_out) # 内部未定义时,便调用函数外面的

change_name()
print(‘外部-》‘,name_out,id(name_out)) #输出:外部-》 daydayup   1997485709552

  那么函数里只能定义局部变量吗?

  当然,但是一般不推荐使用,只能说慎用。看下面的实例:

#-*- coding:utf-8 -*-

name = ‘life‘
def change_name():
    global name     #定义全局变量
    name = ‘poem‘
    print(‘函数里面-》‘,name) #输出:函数里面-》 poem

change_name()
print(‘函数外面-》‘,name) #输出:函数外面-》 poem

   在函数里修改了全局变量,当函数有很多个的时候,就会很蒙逼了(再次友情提示)。

  

原文地址:https://www.cnblogs.com/schut/p/8415453.html

时间: 2024-08-07 20:32:14

Python函数之返回值、作用域和局部变量的相关文章

PYTHON 函数的返回值

def sum(): #定义一个函数名 为 sum print("你好") return 123 # 返回函数值 ret = sum() print(ret) 如果,你好 打印成功了  那么  return返回一个值   ,这个值是可变的 , 你想返回什么就返回什么

C-const和static的区别, 指针作为函数的返回值, 指向函数的指针, 枚举

const和static的区别 const ——只读, 只在声明中使用 1 const int num = 10; 2 int const num = 10; num变量只读, 不能修改 1 const int arr[4] = {10, 20, 30, 40 }; 2 int const arr[4] = {10, 20, 30 ,40 }; 数组的元素的值不能被修改, 只读 1 const int *p1 = &num; 2 int const *p1 = &num; 无法通过p1指针

函数,递归函数,返回值作用域,插入排序

函数数学定义:y=f(x) ,y是x的函数,x是自变量.y=f(x0, x1, ..., xn)Python函数由若干语句组成的语句块.函数名称.参数列表构成,它是组织代码的最小单元完成一定的功能函数的作用结构化编程对代码的最基本的封装,一般按照功能组织一段代码封装的目的为了复用,减少冗余代码代码更加简洁美观.可读易懂函数的分类内建函数,如max().reversed()等库函数,如math.ceil()等 def语句定义函数def 函数名(参数列表):函数体(代码块)[return 返回值]函

Python的函数式编程-传入函数、排序算法、函数作为返回值、匿名函数、偏函数、装饰器

函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. 传入函数 函数的本身也可以作为参数. Python内建的mapreduce的函数.(来源于谷歌的,后来被道格这家伙开源了,成为当今处理大数据最火热的hadoop中的计算模型---MapReduce) 我们先看map.map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序

第二模块 3.6 函数的返回值与作用域

1 函数的返回值与作用域 def cal(x,y): res = x**y return res #返回值, 意味着函数的中止 n = cal(5,8) print(n) def test(): return 1,2,3,4,5 print(test()) 输出结果是: (1, 2, 3, 4, 5)   #  return 多个值,输出的结果就是元组的数据类型 2  全局变量 与 局部变量 name = "Alex" def change(): name = "金角大王&q

Python学习笔记之函数作为返回值、闭包的解释

函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax 但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么办?可以不返回求和的结果,而是返回求和的函数! def lazy_sum(*args): def sum(): ax = 0 for n in args:

python 闭包 Closure 函数作为返回值

一.函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 1 >>> def lazy_sum(*args): 2 ... def sum(): 3 ... ax = 0 4 ... for n in args: 5 ... ax = ax + n 6 ... return ax 7 ... return sum 8 ... 9 >>> f = lazy_sum(1, 3, 5, 7, 9) 10 >>> f 11 <

函数的返回值与作用域

# @Time :2019/6/6 21:57 #-*- encoding:utf-8 -*- # ##############################函数返回值与作用域 # 函数外部的代码要想获取函数的执行结果,就可以在函数里用return语句把结果返回 def stu_register(name, age, course='PY' ,country='CN'): print("----注册学生信息------") print("姓名:", name) p

Python全栈__函数的初识、函数的返回值、函数的参数

1.函数的初识 def关键字 空格 函数名(与变量名命名规则相同):英文冒号 函数体 执行函数:函数名+() 函数是以功能为导向的. def login(): pass def register(): pass 1 def my_len(): 2 l1 = [1, 2, 3, 1, 6, 9, 10] 3 count = 0 4 for i in l1: 5 count += 1 6 my_len() 2.函数的返回值 return: 1.函数中遇到 return 结束函数,下面代码不执行. d