动态传参

1.动态参数(形参的一种方式),可以接收任意的参数.

1).位置参数的动态传参,写法:*参数名.

接收的参数是tuple类型,不能接受关键字.

    def   eat(**kwargs):      #**关键字参数

      print(kwargs)

    eat(food = "主食",junk = "火锅",drink = "脉动")

2)关键字参数的动态传参,写法是:**参数名

例如:  **kwargs           接受的参数类型是字典,关键字参数必须放在最后面.

无敌传参:  def   nana(*args,**kwargs):

        print(args,kwargs)

      nana(1,4,7,a = 10,b = 34,c = 56)

def   eat(*fruit):     #聚合成元组

  print(fruit)

lst = ["香蕉","苹果","大白梨","桃子"]

eat(*lst)                 #这里的*表示的是把lst打散.

def   eat(**kwargs):         #把所有的关键字参数聚合成字典.

  print(kwargs)

dic = {"a":1,"b":2,"c":3}

eat(**dic)        #打散字典,依次传参.

*   **  在形参表示聚合,在实参表示打散.

def   read(*args):

  print(args)

read(*"你好啊")

 

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

print(locals())打印局部作用域中的内容.又可以理解为打印当前这个函数局部作用域的内容.

2.作用域的问题

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

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

三.函数的嵌套

只要遇见了()就是函数的调用,没有()就不是函数的调用.

a = 10

def  func():

  global  a         #这里用的是全局的,在局部作用域空间访问全局作用与

  a = 20

  print(a)

func()

print(a)

a = 10

def   func1():

  a = 20

  print(a)

  def  func2():

    nonlocal   a     #调用上一级的变量,且不能是全局

    a = 30

    print(a)

  fun2()

  print(a)

func1()

print(a)

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

nonlocal:寻找上一级作用域中的内容,且不能是全局.

def   func():

  print("哈哈哈哈哈")

a = func          #函数可以赋值,a和func是一回事了

a()

 

posted @ 2018-06-12 17:32  冯坤大神  阅读(305)  评论(0编辑  收藏  举报