python函數的參數

函數的參數

1、形參和實參

形參:定義階段纔有的形參,形式參數,沒有什麼用,可是具備意義,只是佔個位置,方便調用。app

實參:調用階段纔有的實參,實際的參數,具備具體的值函數

1.1形參

在函數定義的階段括號內定義的參數,稱之爲形式參數,簡稱形參,本質就是變量名。ui

def func(x,y):#定義階段纔有的形參
    print(x)
    print(y)
print(func(1,2))  #調用階段纔有的實參
#輸出:
1
2
None

1.2實參

在函數調用階段括號內傳入的參數,稱之爲實際參數,簡稱實參,本質就是變量的值。code

2、位置參數

位置形參:一個一個的寫形參,就叫位置形參it

位置實參:一個一個的寫形參,就叫位置實參io

位置形參和位置實參要從左到右一一對應。class

2.1位置形參

在函數定義階段,按照從左到右的順序依次定義的形參,稱之爲位置參數。變量

def func(x,y):
    print(x)
    print(y)
print(func(1,2))

==注意:==按照位置定義的參數都必須被傳值,多一個不行少一個也不行。總結

2.2位置實參

在函數調用階段,按照從左到右的順序依次定義的實參,稱之爲位置實參。

fun(1,2)

特色:按照位置爲對應的形參依次傳值。

3、關鍵字實參

在調用函數時,按照key=value的形式爲指定的參數傳值,稱爲關鍵之實參。

==調用的時候,能夠打破位置實參必須和位置形參一一對應的傳值的規定==

def func(x,y):
    print(x)
    print(y)
print(func(x=1,y=2))
#輸出:
1
2
None

特色:能夠打破位置的限制,但仍能爲指定的形參賦值。

注意:

  • 能夠混用位置實參和關鍵字實參,可是位置實參必須在關鍵字實參的左邊。
  • 能夠混用位置實參和關鍵字實參,可是不能對一個形參重複賦值。
def func(x,y):
    print(x)
    print(y)

print(func(1,2))
print(func(x, y=2))# 會報錯NameError: name 'x' is not defined
print(func(y=2,x))#會報錯SyntaxError: positional argument follows keyword argument
print(func(x,x=1))#報錯NameError: name 'x' is not defined


#輸出:
1
2
None

4、默認參數

在定義階段,就已經被賦值

==默認形參必須放在位置形參的後面==

def func(x,y=10):
    print(x)
    print(y)
func(2)

#輸出:
2
10
#
fun(1,2)
#輸出:
1
2

特色:在定義階段就已經被賦值,意味着在調用的時候能夠不用爲其賦值。

注意:

  • 位置形參必須放在默認形參的左邊。
  • 默認形參的值只在定義階段賦值一次,也就是說默認參數的值在函數定義階段就已經固定了。
m = 10

def foo(x=m):
    print(x)

m=111
print(foo())
#輸出:
10
None
  1. 默認參數的值一般應該是不可變類型

    def register(name,hobby,hobby_list=[]):
        hobby_list.append(hobby)
        print(name,hobby)
        print(name,hobby_list)
    
    register('chen','read')
    register('python','zuopao')
    register('shui','pioa')
    #輸出:
    chen read
    chen ['read']
    python zuopao
    python ['read', 'zuopao']
    shui pioa
    shui ['read', 'zuopao', 'pioa']
def register(name,hobby,hobby_list=None):
    if hobby_list is None:
        hobby_list = []
    hobby_list.append(hobby)
    print(name,hobby)
    print(name,hobby_list)

register('chen','read')
register('python','zuopao')
register('shui','pioa')
#輸出:
chen read
chen ['read']
python zuopao
python ['zuopao']
shui pioa
shui ['pioa']

5、總結

實參的應用:取決於我的的習慣

形參的做用:

  1. 大多數狀況的調用值同樣,就應該將該參數定義成位置形參。
  2. 大多數狀況的調用值同樣,就應該將該參數定義成默認形參。
相關文章
相關標籤/搜索