剛開始學習python,看了一些資料,總結記錄一下基本的python函式引數。
python中函式定義,有五種引數分類,分別為:位置引數、預設引數、可變引數、關鍵字引數、命名關鍵字引數。
(1)位置引數
也稱必選引數,也就是函式呼叫時,必須傳遞實參值。這類引數很簡單,如下,呼叫add函式時必須傳值給引數x,y,否則報錯。
def(2)預設引數add(x, y):
print("x+y="
, x+y)
add(3
,5)
預設引數,顧名思義,引數有預設值,呼叫函式時,可不傳值給預設引數。如下:
def注:(1)預設引數必須在必選引數之後;(2)預設引數必須指向不變物件。add(x, y=5):
print("x+y="
, x+y)
add(3)
例如,
def執行結果:addtest(l=):
print(l)
addtest()
addtest()
這是由於引數l指向了列表,每次呼叫都會改變l的值,每次呼叫l值都不相同,都會多乙個字串「test」。
修改:
def(3)可變引數addtest(l=none):
if l is none:
l =
print(l)
addtest()
addtest()
可變引數是指傳入函式的引數個數是可變的,可以是0個或者任意多個。在函式內部,可變引數接收到的是乙個元組tuple。
如,求和計算sum=1+2+3+4+......
def當然,以上_sum函式的引數也可以是列表或者元組,執行結果是一樣的,如果是列表或者元組的話,就是普通的位置引數。_sum(*numbers):
s = 0
for n in numbers:
s=s+n
print("結果為:"
, s)
_sum(1, 2
, 3)
_sum(1, 2
, 3, 4
, 5)
此外,對於已構建的列表,可以加「*」號,將列表元素作為可變引數傳遞給函式。
def(4)關鍵字引數_sum(*numbers):
s = 0
for n in numbers:
s=s+n
print("結果為:"
, s)
_sum(1, 2
, 3)
_sum(1, 2
, 3, 4
, 5)
#定義列表,*numbers將list的所有元素作為可變引數傳進去
numbers=[1,2
,3,4
,5]_sum(*numbers)
可變引數可以傳遞0或任意多個實參,在函式內部自動組裝成元組。關鍵字引數允許傳遞0或任意多個含引數名的引數,這些關鍵字引數在函式內部組裝成字典。
def對於已構建的字典,可以加「**」,將字典的所有key-value用關鍵字引數傳遞到函式的**keywords中,keywords將獲得乙個字典,它是傳入字典的拷貝student(name, age, **keywords):
print("name:"
,name,
",age:"
,age,
",keywrods:"
,keywords)
student("guangyi"
,16)
student("guangyi"
, 16
, city="hang"
,gender="m")
def注:對字典keywrods的更改不會影響原字典informationstudent(name, age, **keywords):
print("name:"
,name,
",age:"
,age,
",keywrods:"
,keywords)
student("guangyi"
,16)
student("guangyi"
, 16
, city="hang"
,gender="m")
information=
# 將字典information的所有key-value用關鍵字引數傳遞到函式的**keywords中,keywords將獲得乙個字典,它是傳information的拷貝
student("guangyi"
, 16
, **information)
(5)命名關鍵字引數
它與關鍵字引數的不同在於,關鍵字引數是命名的,必須且只能傳入指定名字的引數,如下,只能傳入引數名為「city」和「job」的關鍵字引數。(命名關鍵字引數需要乙個分隔符「*」,「*」後面的為命名關鍵字引數)
def另,如果關鍵字引數前面有可變引數,可不加分隔符「*」student(name,age,*,city,job):
print("name:"
, name,
",age:"
, age,
",city:"
, city,
"job:"
,job)
student("guangyi",16
,city="hang"
,job="it engineer")
def總結:命名關鍵字引數前必須有分隔符「*」,或者可變引數,否則無法識別命名關鍵字引數student(name,age,*args,city,job):
print("name:"
, name,
",age:"
, age,
"args:"
,args ,
",city:"
, city,
"job:"
,job)
student("guangyi",16
,1,2
,"test"
,city="hang"
,job="it engineer")
命名關鍵字引數可以有預設值,如下,引數「city」給定預設值「hang zhou」,函式呼叫時,該引數可以使用預設值。
def最後,引數可以組合使用,但是定義的順序必須為位置引數、預設引數、可變引數、命名關鍵字引數、關鍵字引數。student(name,age,*args,city="hang zhou "
,job):
print("name:"
, name,
",age:"
, age,
"args:"
,args ,
",city:"
, city,
"job:"
,job)
student("guangyi"
, 16, 1
, 2, "test"
, job="it engineer")
Python學習筆記 函式引數
定義函式的時候,我們把引數的名字和位置確定下來,函式的介面定義就完成了。對於函式的呼叫者來說,只需要知道如何傳遞正確的引數,以及函式將返回什麼樣的值就夠了,函式內部的複雜邏輯被封裝起來,呼叫者無需了解。python的函式引數十分靈活,可以分為 必選引數 作為函式呼叫的介面所必須具備的引數。預設引數 ...
Python學習筆記 函式引數
power x,n 函式有兩個引數 x和n,這兩個引數都是位置引數,呼叫函式時,傳入的兩個值按照位置順序依次賦給引數x和n def power x,n 2 s 1 while n 0 n n 1 s s x return s預設引數必須指向不變物件!設定預設引數時,有幾點要注意 一是必選引數在前,預...
Python學習筆記 Python函式引數
本人使用python已有一段時間,一直沒有時間進行系統學習,現在根據使用過程中記錄的問題,逐個尋找答案,並記錄至此。在使用python的過程中,不可避免的需要閱讀python原始碼,對其中的函式引數一直不是很明白,今天個人實踐一下。def func arg1,arg2 pass 這是我在編碼過程中寫...