天天看點

函數注意事項

# 函數的位置參數必須要傳實參,可以按位置,也可以按關鍵字傳
# 函數的預設參數可以不傳實參,可以按位置,也可以按關鍵字
# 不定長參數*args隻收集位置參數形成元組,不定長參數應放在後面,要不會把實參當做位置參數然後報錯
# 用**,隻要定義了關鍵字參數,以後針對這個參數傳值就必須是關鍵字形式傳遞



# 關鍵字參數和關鍵字傳值必須放在位置參數(實參)後面
# def add_num(list1 = []):     # 運作第二次以後裡面的預設參數不會執行,會把第一次運作完的結果當做關鍵字參數放入
#     list1.append(100)
#     print(list1)

# add_num()
# add_num()
# add_num()


# 函數:每個使用者去調用函數,在自己的清單中追加100,不能幹擾别人的
# def add_num(list1=None):
#     if list1==None:
#         list1 = []  # 針對每個使用者建立自己的list
#     list1.append(100)
#     print(list1)

# add_num()
# add_num()
# add_num()

# *args:位置參數,收內建元組
# def func1(name,*args,age=12):
#     print(args)
#     for i in args:
#         print(i)

# func1('python', 'man','meiguo', age=28)

# **kwargs :收集關鍵字參數,合并字典
# def func2(**kwargs):
#     print(kwargs)
#     for key,value in kwargs.items():
#         print(key)
#         print(value)

# func2(name='python',age=28,sex='man',weizhi='helan')

# 定義關鍵字參數
def func1(*,name,age,sex,**k):
    print(name)
    print(age)
    print(sex)
    print(k)
#
# func1('python', 28,sex='man')
func1(name='python', age=30, sex='nv', aw='as',ad=22)


# 工作經驗:不定長參數都是放到最後
def func1(a,b, c=100, *args, **kwargs):
    '''
    sadasdada             # 函數說明文檔,使用help可檢視,函數名前用# ,函數名後用文檔注釋
    '''
    print(a)
    print(b)
    print(c)
    print(args)
    print(kwargs)

# 不定長參數可以不接收值
func1(10,99, 20, f=200, d=90)    # 函數是按順序接收,如果提前把關鍵字參數給了實參
help(func1)                  # 則後面緊跟着的是函數裡寫形參位置,關鍵字參數後面的要傳入實參的形式
# c是第三個位置,能接收第三個資料
# func1(10, 20, 300)

# func1(10, 20, 30, 40,50,60,name='python')

# 下一行報錯:一個參數c隻能接收一個值:這裡是c接收了30和100
# func1(10,20,30,50,60, c=100,name='python')