python中函數的參數

函數介紹

函數是帶有名字的代碼塊,能夠執行特定的任務。當咱們須要執行這一特定任務時,調用該函數。固然若是須要屢次執行該任務,只需屢次調用該函數便可。定義函數的時候,咱們把參數的名字和位置肯定下來,函數的接口定義就完成了。對於函數的調用者來講,只須要知道如何傳遞正確的參數,以及函數將返回什麼樣的值就夠了,函數內部的複雜邏輯被封裝起來,調用者無需瞭解。python

形參與實參

函數定義的時候使用的參數叫形參,函數調用的時候使用的參數叫實參。函數

def f(n):    # 在函數定義過程當中使用的參數是形參:n
    print('The argument is:',n) #該函數僅僅打印一句話
    return None # 函數反饋空值None
# 如下爲函數的調用,支持多種數據類型:
>>> f(100)    # 實參爲Number型
The argument is: 100
>>> f('It is funny')    # 實參爲str型
The argument is: It is funny
>>> f((1,2,3))    # 實參爲tuple型
The argument is: (1, 2, 3)
>>> f([1,2,3])    # 實參爲list型
The argument is: [1, 2, 3]
>>> f({'name':'Adam','age':18})    # 實參爲dict型
The argument is: {'name': 'Adam', 'age': 18}

在函數定義的時候,形參能夠有默認值,以上代碼能夠修改成:code

def f(n=1):    # 形參n的默認值爲1,表示在函數調用不輸入實參時,實參則取默認值
    print('The argument is:',n) #該函數僅僅打印一句話
    return None # 函數反饋空值None
# 函數調用:
>>> f()    # 能夠不輸入實參直接調用函數,實參則取默認值
The argument is: 1

實參的類型

1 位置實參

函數調用中的實參與函數定義中形參以相同的順序關聯,這種關聯方式稱爲位置實參。使用位置實參調用函數時,若是實參的順序不正確,結果可能出乎意料,乃至出錯。接口

# 函數定義
def f(name,age):
    print(name)
    print(age)
# 函數調用
>>> f('Cathy',18)
Cathy
18

2 關鍵字實參

關鍵字實參,在函數調用時直接將實參的名稱與值關聯起來,所以向函數傳遞的實參不會混淆。關鍵字實參能夠讓函數調用無需考慮實參的順序。it

# 函數定義
def f(name,age):
    print(name)
    print(age)
# 函數調用
>>> f(age=18,name='Cathy')
Cathy
18

3 任意數量的實參

3.1 帶*號的形參將任意數量的實參接收爲tuple類型

# 函數定義
def f_lt(*n):
    print(type(n))    # *號將傳進來的參數變成了tuple類型
    for i in n:
            print(i)

# 函數調用
# 第一次調用
f_lt(1,2,3,4,5)
print('_ '*20)
# 第二次調用,參數爲list類型
l = [1,2,3,4,5]
f_lt(*l)
print('_ '*20)
# 第三次調用,參數爲tuple類型
t = (1,2,3,4,5)
f_lt(*t)
print('_ '*20)

# 返回結果
<class 'tuple'>
1
2
3
4
5
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
<class 'tuple'>
1
2
3
4
5
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
<class 'tuple'>
1
2
3
4
5
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

3.2 帶**號的形參將任意數量的關鍵字參數接收爲dict類型

# 函數定義
def f_d(**kw):
    print(type(kw))     # **號將傳進來的參數變成了dict類型
    print(kw)
    for k,v in kw.items():
        print(k,': ',v)

# 函數調用
# 第一次調用
f_d(name='Adam',age=18)
print('_ '*20)
# 第二次調用,參數爲dict類型
d = {'name':'Bob','Age':19}
f_d(**d)
print('_ '*20)

# 返回結果
<class 'dict'>
{'name': 'Adam', 'age': 18}
name :  Adam
age :  18
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
<class 'dict'>
{'name': 'Bob', 'Age': 19}
name :  Bob
Age :  19
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
相關文章
相關標籤/搜索