day10 动态传参

一动态传参

  1动态传参,可以接受任意的参数

    顺序: 位置参数   *args  默认值  **kwargs

  1位置参数的动态传参 写法*参数名  例如  *args 接受的参数是tuple

# def eat(*good): #动态传参,可以接受多个实参
#     print(good)
# eat("可乐","麻辣烫","火锅")
# eat("麻辣烫")   #接受的是元祖,括号里面的元素每个用逗号隔开

  2关键字参数的动态传参, 写法 ** 参数名  例如**keargs 接受的参数是dict类型

 

  

# def eat(**kwargs): #接受的是关键字参数,也可接受多个传参
#     print(kwargs)
# eat(good="麻辣烫,盖浇饭",fruit="苹果",drink="七喜") #字典

  3 无敌传参

    def  fun(*args,**keargs):

      pass

# def rat(*args,**kwargs):#接受的是位置参数跟关键字参数
#     print(args,kwargs)
# rat(1,6,65,95+9,a=6,n=6) #打印的是元祖加字典

  

  *,**的作用:

    在形参:聚合

def fun(**kwargs):  #吧打散的在聚合
    print(kwargs)
dic={"a":[1,2,3],"b":2}
fun(**dic)  # 吧字典打散

二  作用域的问题

  1.globals()获取全局作用域的内容

  2.locals()获取局部作用域中的内容

# a = 10
# def func():
#     global a # 这里用的a是全局的
#     a = 20
#     print(a)
# func()
# print(a)    # 20

a = 10
def func1():
    a = 20
    print(a)
    def fun2():
        nonlocal a # 上一级, 且不能是全局
        a = 30
        print(a)
    fun2()
    print(a)

func1()
print(a)

三 函数嵌套-函数的执行流程

  所有的()表示的是函数的调用

# def fun1():
#     print(111)
#
# def fun2():
#     print(222)
#     fun1()
#
# fun2()
# print(333)

# def fun2():
#     print(222)
#     def fun3():
#         print(666)
#     print(444)
#     fun3()
#     print(888)
#
# print(33)
# fun2()
# print(555)
# def func():
#     print("哈哈哈")
# a = func # 函数可以赋值 .相当于. a和func是一回事儿
# func()
# a()

四 global和nonlocal

  1global:寻找全局作用域中的内容

# a = 10
# def func():
#     global a # 这里用的a是全局的
#     a = 20
#     print(a)
# func()
# print(a)    # 20

  2nonlocai:寻找上一级作用域中的内容,但不能是全局的

a = 10
def func1():
    a = 20
    print(a)
    def fun2():
        nonlocal a # 上一级, 且不能是全局
        a = 30
        print(a)
    fun2()
    print(a)

func1()
print(a)

五额外追加的内容 命名空间

a = 10  # 全局
def func(): # 全局
    a = 40  # 局部
    b = 20  # 局部
    def abc():  # 局部
        d = 30 # 是局部
        print("哈哈")
        print(a, b) # 这⾥使⽤的是局部作⽤域
        print(locals())
    abc()

    # print(globals()) # 打印全局作用域中的内容
    # print(locals()) # 打印局部作用域中的内容,locals()打印当前这个函数局部作用与中的内容
func()

print(globals())
# print(globals()) # 打印全局作用域中的内容

  

 

 

  

posted @ 2018-06-12 14:49  山东张铭恩  阅读(133)  评论(0编辑  收藏  举报