Ninth 形参/名称空间/域/加载和取值的顺序/关键字

processon  # 一个用于在线作图的工具

1、万能函数*args **kwargs:形参顺序:位置参数、*args,默认参数,**kwargs

def func(*args, **kwargs)    # 在定义函数中,*代表聚合  **代表聚合字典
    print(args)
    print(kwargs)
func(*[1,2,3],*'abcd',**{'name':'benjas'},**{'age':23})    
# 在执行的时候*代表打散,**代表打散字典 # 输出结果为(1, 2, 3, 'a', 'b', 'f', 'c') {'name': 'alex', 'age': 46}

 2、命名空间:

    全局名称空间:存放的是py文件中变量与值的对应关系

    局部名称空间:临时存放的是函数体里面的变量与值的对应关系

    内置名称空间:内置函数,关键字等等。如:input() print()

3、作用域:

    全局作用域:全局名称空间,内置名称空间

    局部作用域:局部名称空间

    加载顺序:内置名称空间——>全局名称空间——>局部名称空间

    取值(调用)顺序:就近原则(局部——>全局——>内置)

4、print(golobals())  # 返回一个字典:包含全局作用域的所有内容

   print(locals())  # 返回一个字典:包含当前作用域的所有内容

5、关键字:global nonlocal (一般情况下内层函数不能对外层函数的变量进行修改,只能引用)

    global:可以在局部声明一个全局变量

    nonlocal:1、不能操控全局变量 

         2、在局部作用域中,对父级作用域(或者多层局部作用域),进行声明整个局部作用域的变量

posted @ 2018-12-29 14:50  pythonernoob  阅读(112)  评论(0)    收藏  举报