函数的进阶

函数的进阶

函数的注释

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)

 函数名的使用

直接打印函数名得到函数的内存地址

函数名可以当做值赋值给变量

函数名可以当做元素放到容器里

原文地址:https://www.cnblogs.com/yaoyanxin007/p/10531385.html