函数的进阶
函数的注释
def login(user,pwd): """ 登录函数 :param user: 用户名 :param pwd: 密码 :return: 校验后的账号和密码 """ print(111) print(login.__doc__) print(login.__name__) # login
命名空间和作用域
命名空间分为三种:
内置空间——python解释器中所有代码
全局空间——自己写的py文件
局部空间——函数中的代码
加载顺序:
内置空间 —> 全局空间 —>局部空间
取值顺序:
局部空间 —> 全局空间 —>内置空间
作用域:
全局作用域:包含内置空间和全局空间
局部作用域:只在局部空间内
global和nonlocal关键字
global:
1,声明一个全局变量。
2,在局部作用域想要对全局作用域的全局变量进行修改时,需要用到 global(限于字符串,数字)。
def func(): global a a = 3 func() print(a) count = 1 def search(): global count count = 2 search() print(count)
注意:对可变数据类型(list,dict,set)可以直接引用不用通过global
nonlocal:
1,不能修改全局变量。
2,在局部作用域中,对父级作用域(或者更外层作用域非全局作用域)的变量进行引用和修改,并且引用的哪层,从那层及以下此变量全部发生改变。
def add_b(): b = 42 def do_global(): b = 10 print(b) def dd_nonlocal(): nonlocal b b = b + 20 print(b) dd_nonlocal() print(b) do_global() print(b) add_b()
函数的嵌套
函数的嵌套定义
def func(): print(3) def f(): print(1) print(2) f() func()
函数的嵌套调用
def max2(x,y): m = x if x>y else y return m def max4(a,b,c,d): res1 = max2(a,b) res2 = max2(res1,c) res3 = max2(res2,d) return res3 # max4(23,-7,31,11)
函数名的使用
直接打印函数名得到函数的内存地址
函数名可以当做值赋值给变量
函数名可以当做元素放到容器里