1. 程式人生 > >函數的動態參數,命名空間

函數的動態參數,命名空間

關鍵字 查看 args 調用 動態參數 默認 位置 nonlocal out

1 函數的動態參數

1 *args位置參數動態傳參 *在這裏表示接收位置傳參的動態傳參,接收到的是元組

def chi(*food):   #參數名:food   *表示動態傳參
print(food)
chi("菜花","饅頭","花卷","小吃")


結果:(菜花,饅頭,花卷,小吃)

2 **kwargs關鍵字參數動態傳參

def chi(**food)            **關鍵字傳參     food是參數名
print(food)
chi(冰淇淋="哈根達斯",零食="辣條",小吃="香腸")


結果:{冰淇淋:"哈根達斯",零食:"辣條",小吃:"香腸"}   結果是形成字典

順序:位置參數,*args,默認值,**kwargs

def func(a,*args,c=6,**kwargs)
print(a,args,c,kwargs)
fun(2,12,23,c=4,哈哈="呵呵",多的="道德")

結果:2 (12,23),{哈哈:"呵呵",多的:"道德"}

形參的位置*,**,聚合

def func(*food):      形參 聚合,位置參數
print(food)
lst =["雞蛋","黃瓜","蘋果"]

fun(*lst) 實參 打散 把list,tuple,set,str進行叠代打散

形參: 位置參數 按位置傳參

默認參數 放在後面

動態參數 *args(形成元組) **kwargs(形成字典)

實參的位置*,**,打散

def func(**kwargs):      形參  聚合成關鍵字實參
     print(kwargs)
dic ={name:"alex",age:18}
func(**dic)    實參  打散成關鍵字

實參: 位置參數 按形參的位置傳值

關鍵字參數 按形參的關鍵字傳值

混合參數(位置在前,關鍵字在後)

2 命名空間

1 內置名稱空間

2 全局名稱空間

3 局部名稱空間

a =10   全局名稱空間中的內容
def fn():   fn 也在全局名稱空間
    b=20      局部名稱空間
    print(a)
def gn():
    print(a)
fn()
gn()

作用域

1 全局作用域:內置+全局

2 局部作用域 局部(函數被調用時)

globals()查看全局中的內容

a=110
def fn():
   b =20   局部
   def gn():   局部
      print(globals())    可以查看全局作用域中的內容
      print(locals())   查看當前作用域中的內容
  gn()
fn()

locals()查看當前作用域中的內容

3 函數的嵌套

def outer():
    print("哈哈")
    def inner_1():
        print("呵呵")
        def inner_1_1():
            print("嘻嘻")
        inner_1_1()
        print("哄哄")
    def inner_2():
        print("嘿嘿")
    inner_2()
    inner_1()
outer()

結果:哈哈
嘿嘿
呵呵
嘻嘻
哄哄

函數可以相互嵌套

4 global和nonlocal關鍵

global:在局部訪問全局中的內容

nonlocal:在局部尋找外層函數中裏他最近的那個變量

a=10
def global a    作用:1 可以把全局中的內容引入到函數內部  2 在全局創建一個變量
     a=10
     a+=10
print(a)

a =10
def outer():
    def inner():#inner中改變a的值
nonlocal a 尋找外層函數中離他最近的那個變量 a=20 inner() outer()

函數的動態參數,命名空間