打印.fn2 at >,即返回了一个函数 。
又如
def fn():def fn2():print('Python')return fn2r= fn()print(r)
打印
.fn2 at >
如果仅仅写一个(后边不加其他值)或者不写,相当于 None 。
如
def fn2():returnr = fn2()print(r)
打印None 。
在函数中,后面的代码都不会执行,一旦执行函数自动结束 。
def fn3():print('Hello')returnprint('ABC')fn3()
打印Hello,没有打印出ABC 。
和break的比较:
def fn4():for i in range(5):if i == 3:#break用于退出当前循环breakprint(i)print('Loop ends')fn4()
打印
012Loop endsdef fn4():for i in range(5):if i == 3:#return用来结束函数returnprint(i)print('Loop ends')fn4()
打印
012123
没有打印出Loop ends 。
计算求和返回结果并运用:
def fn(*nums):#定义变量保存结果result = 0#便利元组,将元组中的元素累加for n in nums:result += nreturn resultr = fn(1,2,3,4)print(r+6)
打印16
def fn5():return 10print(fn5)print(fn5())
打印出
print(fn5)是函数对象,实际上是在打印函数对象;
print(fn5())是在调用函数,实际上是在打印fn5()函数的返回值 。
5.四种函数的类型6.局部变量
在函数内部定义,用来存储临时数据的变量,称为临时变量,形参也是局部变量
7.全局变量
#例:a = 100def test1():print(a)def test2():print(a)
全局变量与局部变量同名问题
a = 100def test():a = 200print(a)test()#这种写法是允许的,打印出的结果为“200”,访问的为离的近的
如果需要在函数内部修改全局变量,则需要使用关键字,来声明变量 。
a = 20def fn2():#声明函数内部使用a是全局变量,此时再修改a时,就是修改全局变量 。global aa = 10print('Inside fn2(),a =',a)fn2()print('Outside fn2(),a =',a)
打印
Inside fn2(),a = 10Outside fn2(),a = 10
8.命名空间
命名空间实际上就是一个字典,专门用来存储变量的字典 。
函数()用来获取当前作用域的命名空间,返回的是一个字典,把所有的变量存到该字典中 。
如果在全局作用域中,调用()则获取全局作用域命名空间,如果在函数作用域中调用()则获取函数命名空间 。
s = locals()print(s)
打印
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000016F7E71CB88>, '__spec__': None, '__annotations__': {}, '__builtins__':
又如
- 最神秘的三座陵墓,一座不能挖,一座不敢挖,另一座挖不动
- 明明是一代传奇词人,偏偏无奈生在帝王家
- 一个开创出了盛世,同时也是历史上最大的败家子的帝王
- 宋仁宗:历史上最宽仁的皇帝之一却也难过美人关
- 一条杆棒等身齐:揭开太祖赵匡胤的武功有多高
- 乾隆皇帝一生最大的过错是什么?他为何这样做
- 三国十大家门不幸的美女:最后一个让人脊背发凉
- 【地图学】二、地图矢量化
- 【批量改文件夹中的图片名称-python】
- 60升电热水器功率一般多大