一 python自动化基础能力:3.python基础上之数据类型,函数( 八 )


打印.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())
打印出
1012
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__': , '__file__': 'Demo.py', '__cached__': None, 's': {...}}
又如