一、函数返回值
说到返回值,相信大家肯定都认识,没错,就是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