python函數可選參數
㈠ python函數參數的四種類型
必選參數、默認參數、可選參數、關鍵字參數。——望採納
㈡ python怎麼查看函數參數
在開發中我們可以藉助於相關插件或使用Python內置函數"help()」來查看某個函數的參數說明,以查看內置函數sorted()為例:
㈢ Python中定義函數默認參數值的使用注意事項
4.7.1. 默認參數值
最常用的一種形式是為一個或多個參數指定默認值。這會創建一個可以使用比定義是允許的參數更少的參數調用的函數,例如:
def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
while True:
ok = input(prompt)
if ok in ('y', 'ye', 'yes'):
return True
if ok in ('n', 'no', 'nop', 'nope'):
return False
retries = retries - 1
if retries < 0:
raise OSError('uncooperative user')
print(complaint)
這個函數可以通過幾種不同的方式調用:
只給出必要的參數:
ask_ok('Do you really want to quit?')
給出一個可選的參數:
ask_ok('OK to overwrite the file?', 2)
或者給出所有的參數:
ask_ok('OK to overwrite the file?', 2, 'Come on, only yes or no!')
這個例子還介紹了 in 關鍵字。它測定序列中是否包含某個確定的值。
默認值在函數 定義 作用域被解析,如下所示:
i = 5
def f(arg=i):
print(arg)
i = 6
f()
將會輸出 5。
重要警告: 默認值只被賦值一次。這使得當默認值是可變對象時會有所不同,比如列表、字典或者大多數類的實例。例如,下面的函數在後續調用過程中會累積(前面)傳給它的參數:
def f(a, L=[]):
L.append(a)
return L
print(f(1))
print(f(2))
print(f(3))
這將輸出:
[1]
[1, 2]
[1, 2, 3]
如果你不想讓默認值在後續調用中累積,你可以像下面一樣定義函數:
def f(a, L=None):
if L is None:
L = []
L.append(a)
return L
㈣ python如何將可選參數或關鍵字參數從一個函數傳遞到另一個函數
使用函數參數列表中的*和**說明符收集參數;這會將位置參數作為元組,將關鍵字參數作為字典。然後,您可以使用*和**調用另一個函數時傳遞這些參數:
def f(x, *args, **kwargs):
...
kwargs['width'] = '14.3c'
...
g(x, *args, **kwargs)
㈤ 在python的函數中,如何將列表list的一部分作為函數的參數
後面paraTestList(a[2:])中,括弧裡面的a[2:]命令是指創建了一個包含列表a的一部分的一個副本列表。具體做法是:
def
paraTestList(L):
L[0]='z'
a=['a','b','c','d']
b=a[2:]
paraTestList(b)
print(b)
具體情況如下:
1.Python的函數定義簡單但靈活度大。除了正常定義的必選參數外,還可以使用默認參數、可變參數和關鍵字參數,使得函數定義出來的介面,不但能處理復雜的參數,也可以簡化調用者的代碼。
2.默認參數可以簡化函數的調用,設置默認參數時要注意:一是必選參數在前,默認參數在後,否則Python的解釋器會報錯;二是如何設置默認參數。當函數有多個參數時,把變化大的參數放前面,變化小的參數放後面。變化小的參數就可以作為默認參數。
3.默認參數降低了函數調用的難度,而一旦需要更復雜的調用時,又可以傳遞更多的參數來實現。無論是簡單調用還是復雜調用,函數只需要定義一個。
4.有多個默認參數時,調用的時候,既可以按順序提供默認參數。
4.Python函數在定義的時候,默認參數L的值就被計算出來了,即[],因為默認參數L也是一個變數,它指向對象[],每次調用該函數,如果改變了L的內容,則下次調用時,默認參數的內容就變了,不再是函數定義時的[]了。
㈥ 簡單談談Python中函數的可變參數
簡單談談Python中函數的可變參數
在Python中定義函數,可以用必選參數、默認參數、可變參數和關鍵字參數,這4種參數都可以一起使用,或者只用其中某些,但是請注意,參數定義的順序必須是:必選參數、默認參數、可變參數和關鍵字參數。
可變參數( * )
可變參數,顧名思義,它的參數是可變的,比如列表、字典等。如果我們需要函數處理可變數量參數的時候,就可以使用可變參數。
我們在查看很多Python源碼時,經常會看到 某函數(*參數1, **參數2)這樣的函數定義,這個*參數和**參數就是可變參數,一時會讓人有點費解。其實只要把函數可變參數的定義搞清楚了,就不難理解了。
當我們不知道需要用幾個參數來定義函數的時候,可變參數就可以大展手腳了。
在Python里,帶 * 的參數就是用來接受可變數量參數的。
如果一個函數定義如下:
def functionTest(*args):
....
....
....
調用時我們可以的這樣調用:
functionTest(1)
或者
functionTest(1,2)
或者
functionTest(1,2,3)
後面可以傳入多個參數。
看段實例代碼,觀察下*是怎麼具體應用的吧:
def get_sum(*numbers):
sum = 0
for n in numbers:
sum += n
return sum
#在這里寫下你的代碼來調用get_sum來求5個數字的和,並輸出這個結果
print (get_sum(1,2,3,4,5))
結果會是什麼呢?大家可以自己動手操作起來看下,以就是關於Python中函數可變參數的全部內容,希望這篇文章對大家學習或使用python能有所幫助
㈦ python 函數語法中的func(variable[,variable]) 怎麼理解
表示其是可選參數。
一般是這么調用的:
sum([1,2,3,4])
返回 10
也可以填上那個可選參數,
start -- 指定相加的參數,如果沒有設置這個值,默認為0。
那麼sum([1,2,3,4],2)
則在計算完迭代對象後再額外加上2
返回12
㈧ python 函數變數 參數怎麼使用
剛學用Python的時候,特別是看一些庫的源碼時,經常會看到func(*args, **kwargs)這樣的函數定義,這個*和**讓人有點費解。其實只要把函數參數定義搞清楚了,就不難理解了。
先說說函數定義,我們都知道,下面的代碼定義了一個函數funcA
def funcA():
pass
顯然,函數funcA沒有參數(同時啥也不幹:D)。
下面這個函數funcB就有兩個參數了,
def funcB(a, b):
print a
print b
調用的時候,我們需要使用函數名,加上圓括弧擴起來的參數列表,比如 funcB(100, 99),執行結果是:
100
99
很明顯,參數的順序和個數要和函數定義中一致,如果執行funcB(100),Python會報錯的:
TypeError: funcB() takes exactly 2 arguments (1 given)
我們可以在函數定義中使用參數默認值,比如
def funcC(a, b=0):
print a
print b
在函數funcC的定義中,參數b有默認值,是一個可選參數,如果我們調用funcC(100),b會自動賦值為0。
OK,目前為止,我們要定義一個函數的時候,必須要預先定義這個函數需要多少個參數(或者說可以接受多少個參數)。一般情況下這是沒問題的,但是也有在定義函數的時候,不能知道參數個數的情況(想一想C語言里的printf函數),在Python里,帶*的參數就是用來接受可變數量參數的。看一個例子
def funcD(a, b, *c):
print a
print b
print "length of c is: %d " % len(c)
print c
調用funcD(1, 2, 3, 4, 5, 6)結果是
1
2
length of c is: 4
(3, 4, 5, 6)
我們看到,前面兩個參數被a、b接受了,剩下的4個參數,全部被c接受了,c在這里是一個tuple。我們在調用funcD的時候,至少要傳遞2個參數,2個以上的參數,都放到c里了,如果只有兩個參數,那麼c就是一個empty tuple。
好了,一顆星我們弄清楚了,下面輪到兩顆星。
上面的例子里,調用函數的時候,傳遞的參數都是根據位置來跟函數定義里的參數表匹配的,比如funcB(100, 99)和funcB(99, 100)的執行結果是不一樣的。在Python里,還支持一種用關鍵字參數(keyword argument)調用函數的辦法,也就是在調用函數的時候,明確指定參數值付給那個形參。比如還是上面的funcB(a, b),我們通過這兩種方式調用
funcB(a=100, b=99)
和
funcB(b=99, a=100)
結果跟funcB(100, 99)都是一樣的,因為我們在使用關鍵字參數調用的時候,指定了把100賦值給a,99賦值給b。也就是說,關鍵字參數可以讓我們在調用函數的時候打亂參數傳遞的順序!
另外,在函數調用中,可以混合使用基於位置匹配的參數和關鍵字參數,前題是先給出固定位置的參數,比如
def funcE(a, b, c):
print a
print b
print c
調用funcE(100, 99, 98)和調用funcE(100, c=98, b=99)的結果是一樣的。
好了,經過以上鋪墊,兩顆星總算可以出場了:
如果一個函數定義中的最後一個形參有 ** (雙星號)前綴,所有正常形參之外的其他的關鍵字參數都將被放置在一個字典中傳遞給函數,比如:
def funcF(a, **b):
print a
for x in b:
print x + ": " + str(b[x])
調用funcF(100, c='你好', b=200),執行結果
100
c: 你好
b: 200
大家可以看到,b是一個dict對象實例,它接受了關鍵字參數b和c。
㈨ python怎麼查看函數有什麼參數
在開發中我們可以藉助於相關插件或使用Python內置函數"help()」來查看某個函數的參數說明,以查看內置函數sorted()為例:
㈩ python文檔中函數參數怎麼理解
open最多可以帶三個參數,但是後面兩個是可選的,[]內的內容表示可選參數。
open第一個參數是文件名稱,第二個是模式,第三個表示緩沖方式,看隨機文檔有詳細解釋的。