函数-参数+作用域

函数-参数+作用域

参数:

  定义函数时(参数常见的使用):1.  def  i(num)  2.  def  i(num1,num2 = 自己定义)  3.def  i(*arg,*kwarg)

  调用函数时  (参数的传入):位置参数>关键字参数

    

不定长参数:*args:调用函数时使用位置传参,得到元组**kwaaargs:调用函数时使用关键字传参,得到字典
*args:def funk(*arg):print(arg)funk(1,2,3)funk(*(1,2,3))  #*可以理解为对列表进行拆散>>>(1, 2, 3)(1, 2, 3)
**kwargs:def funk(**kwargs):print(kwargs)funk(a = 1,b =2)funk(**{'a':1,'b':2})>>>{'a': 1, 'b': 2}{'a': 1, 'b': 2}
def i (*args,**kwargs):print(args,kwargs)
i (1,[1,2],*[1,2,3],a = 1,**{"b":2})
>>>(1,[1,2],(1,2,3)){"a":1,"b":2}

作用域:

    全局作用域和一个函数为一个作用域  --> 全局变量,局部变量

    定义的函数中变量的查找:自己->父级->父级->....父级->全局    :即函数调用时可读取全局变量,修改全局变量(可变类型,如对列表添加元素)但此处的修改不能是对全局变量重新进行赋值

    改变全局变量关键字:global

    改变父级变量关键字:nonlocal

      

name = "gh"
def i():name = "g"def e():global name #声明这层使用的全局变量namename = "guohan"  #全局变量重新赋值print(name) #guohane()print(name) #g,其在第一层函数下
i()
print(name) #输出全局变量name(i()被调用则全局name被重新赋值