1. 程式人生 > >Python全棧__動態參數、名稱空間、作用域、作用域鏈、加載順序、函數的嵌套、global、nonlocal

Python全棧__動態參數、名稱空間、作用域、作用域鏈、加載順序、函數的嵌套、global、nonlocal

sharp 空間 Python全棧 highlight 參數 int() 相等 lex 動態參數

1、動態參數

  當實參數量與形參數量相等時,參數傳遞正常。

def func1(a, b, c):
    pass
func1(1, 2, 3)

技術分享圖片

  當實參數量與形參數量不相等時,則會報錯。

def func1(a, b, c):
    pass
func1(1, 2, 3, 4, 5, 6, 6)

技術分享圖片

  用戶傳入到函數中的實參數量不確定時,或者為了以後擴展,此時要用到動態參數 *args **kwargs(萬能參數)。

  順序:

    位置參數,*args,默認參數,**kwargs

  1、*args

    *args是接收的是所有的位置參數。

def func(*args, **kwargs):
    print(args)
    print(kwargs)
func(1, 2, 3, 4)

技術分享圖片

  註意:print()裏面的args前面不能帶 * 。

  2、**kwargs

    **kwargs接收的是所有的關鍵字參數。

def func(*args, **kwargs):
    print(args)
    print(kwargs)
func(x=4, y=5, z=6)

技術分享圖片

  註意:print()裏面的args前面不能帶 * 。

def func(*args, **kwargs):
    print(args)
    print(kwargs)
func(1, 2, 3, x=4, y=5, z=6)

技術分享圖片

  順序

    位置參數,默認參數

def func2(a, b, sex = ‘男‘):
    print(a)
    print(b)
    print(sex)
func2(1, 2, ‘女‘)

技術分享圖片

  位置參數、*args、默認參數

def func2(a, b,*args, sex = ‘男‘):
    print(a)
    print(b)
    print(args)
    print(sex)
func2(1, 2, 5,6,7,8,9, sex=‘女‘)

技術分享圖片

  位置參數、*args、默認參數、**kwargs

def func2(a, b, *args, sex=‘男‘,age=20, **kwargs):
    print(a)
    print(b)
    print(args)
    print(sex)
    print(age)
    print(kwargs)
func2(1, 2, 5, 6, 7, 8, 9, x=6, y=5, name=‘alex‘)

技術分享圖片

  加法器:

def sum1(*args):
    ret = 0
    for i in args:
        ret += i
    return ret
print(sum1(1, 2, 3,))

技術分享圖片

def func3(*args, **kwargs):
    print(args)
    print(kwargs)
l1 = [1, 2, 3]
l2 = [11, 21, 32]
func3(l1, l2)

技術分享圖片

def func3(*args, **kwargs):
    print(args)
    print(kwargs)
l1 = [1, 2, 3]
tu1 = (1, 2, 3)
tu2 = (11, 22, 33)
func3(*l1, *tu1, *tu2)

技術分享圖片

def func3(*args,**kwargs):
    print(args)
func3(1, 2, 3, 1, 2, 3, 11, 22, 33)

技術分享圖片

  在函數的定義中, * 是聚合的意思。

def func3(*args,**kwargs):
    print(args)
    print(kwargs)
l1 = [1, 2, 3]
dic ={‘name‘: ‘alex‘}
dic1 ={‘age‘: 1000}
func3(*l1, **dic, **dic1)

技術分享圖片

  * 的魔性用法:

def func3(*args,**kwargs):  # 函數的定義 *用意是聚合。
    print(args)
    print(kwargs)
l1 = [1, 2, 3]
tu1 = (1, 2, 3)
tu2 = (11, 22, 33)
func3(*l1, *tu1, *tu2)

技術分享圖片

def func3(*args,**kwargs):
    print(args)
    print(kwargs)
func3(1,2,3,1,2,3,11,22,33)

技術分享圖片

def func3(*args,**kwargs):
    print(args)
    print(kwargs)
l1 = [1, 2, 3]
dic ={‘name‘: ‘alex‘}
dic1 ={‘age‘: 1000}
func3(*l1, **dic, **dic1)

技術分享圖片

2、名稱空間、作用域、作用域鏈、加載順序

  1、空間名稱

  2、作用域

  3、作用域鏈

  4、加載順序

3、函數的嵌套

4、global、nonlocal

   1、global

  2、nonlocal

Python全棧__動態參數、名稱空間、作用域、作用域鏈、加載順序、函數的嵌套、global、nonlocal