回答
是。
這很簡單,如果你忽略關鍵字參數的工作原理:
def manyArgs(*arg):
print "I was called with", len(arg), "arguments:", arg
>>> manyArgs(1)
I was called with 1 arguments: (1,)
>>> manyArgs(1, 2,3)
I was called with 3 arguments: (1, 2, 3)
正如你所看到的,Python將會給你的所有參數一個元組。
對於關鍵字參數,您需要將這些參數作爲單獨的實際參數接受,如Skurmedel's answer中所示。
http://docs.python.org/tutorial/controlflow.html#more-on-defining-functions – Miles 2009-05-28 08:06:04
添加到退繞後:
您可以發送多個鍵值ARGS了。
def myfunc(**kwargs):
# kwargs is a dictionary.
for k,v in kwargs.iteritems():
print "%s = %s" % (k, v)
myfunc(abc=123, efh=456)
# abc = 123
# efh = 456
你也可以混合使用這兩種:
def myfunc2(*args, **kwargs):
for a in args:
print a
for k,v in kwargs.iteritems():
print "%s = %s" % (k, v)
myfunc2(1, 2, 3, banan=123)
# 1
# 2
# 3
# banan = 123
它們必須既聲明和調用的順序,也就是函數簽名必須是*指定參數時,** kwargs,並呼籲在該訂單。
添加到其他優秀的職位。
有時你不想指定參數的數量和想要爲它們使用鍵(如果方法中沒有使用字典中傳遞的一個參數,編譯器會報錯)。
def manyArgs1(args):
print args.a, args.b #note args.c is not used here
def manyArgs2(args):
print args.C#note args.b and .c are not used here
class Args: pass
args = Args()
args.a = 1
args.b = 2
args.c = 3
manyArgs1(args) #outputs 1 2
manyArgs2(args) #outputs 3
然後,你可以做這樣的事情
myfuns = [manyArgs1, manyArgs2]
for fun in myfuns:
fun(args)
def f(dic):
if 'a' in dic:
print dic['a'],
pass
else: print 'None',
if 'b' in dic:
print dic['b'],
pass
else: print 'None',
if 'c' in dic:
print dic['c'],
pass
else: print 'None',
print
pass
f({})
f({'a':20,
'c':30})
f({'a':20,
'c':30,
'b':'red'})
____________
上面的代碼將輸出
None None None
20 None 30
20 red 30
這是一個用字典的方式傳遞變量參數一樣好
如果可以的話,Skurmedel的c頌歌是爲蟒蛇2;使其適應python 3,將iteritems
更改爲items
並將括號添加到print
。這可能會阻止像我這樣的初學者碰到: AttributeError: 'dict' object has no attribute 'iteritems'
和在其他地方搜索(例如Error 「 'dict' object has no attribute 'iteritems' 」 when trying to use NetworkX's write_shp())爲什麼會發生這種情況。
def myfunc(**kwargs):
for k,v in kwargs.items():
print("%s = %s" % (k, v))
myfunc(abc=123, efh=456)
# abc = 123
# efh = 456
和:
def myfunc2(*args, **kwargs):
for a in args:
print(a)
for k,v in kwargs.items():
print("%s = %s" % (k, v))
myfunc2(1, 2, 3, banan=123)
# 1
# 2
# 3
# banan = 123
- 1. Spark Java:將可變數量的參數傳遞給函數
- 2. 如何將可變數量的參數傳遞給sprintf()函數?
- 3. 可以使用字典將變量傳遞給函數嗎?
- 4. 我可以將參數傳遞給std :: vector排序函數嗎?
- 5. 我可以將參數傳遞給模型函數嗎?
- 6. 動態地將參數傳遞給可變參數函數
- 7. 如何將可變參數傳遞給接受可變參數的函數?
- 8. 如何可變數量的參數傳遞給函數在PHP
- 9. odp.net可以將參數傳遞給布爾pl/sql參數嗎?
- 10. 我可以將參數/開關/參數傳遞給VSPackage MenuCommand嗎?
- 11. 將函數傳遞給變量以便稍後可以調用
- 12. 將可變參數傳遞給方法
- 13. 我可以通過PHP中的變量將DEFINED常量傳遞給函數嗎?
- 14. 將可變數量的參數傳遞給存儲過程
- 15. 將可變數量的參數傳遞給選擇器
- 16. 如何將可變數量的參數傳遞給Web服務
- 17. 如何將可變數量的參數傳遞給LLVM opt pass?
- 18. 將變量傳遞給具有可變長度輸入參數的函數
- 19. 如何將可變數量和類型的參數傳遞給模板函數?
- 20. 是否可以將「未命名」變量傳遞給函數?
- 21. 將可變參數傳遞給plot()函數
- 22. 如何將可變參數傳遞給XPages SSJS函數?
- 23. 傳遞可變數量的參數
- 24. .Net - 傳遞可變數量的參數
- 25. 可以將多少個參數傳遞給bash函數?
- 26. C - 將可變數量的命令行參數傳遞給具有可變數量參數的方法
- 27. 可可Xcode - 如何將一個變量傳遞給函數
- 28. 我可以將參數傳遞給自定義log4net Appender的構造函數嗎?
- 29. 我可以將構造函數參數傳遞給Unity的Resolve()方法嗎?
- 30. 如何將接口參數傳遞給Golang中的可變參數函數?
我指的光榮lottness播客53:http://itc.conversationsnetwork.org/shows/detail4111.html?loomia_si=t0:a16:g2:r2: c0.246273:b24677090 – 2009-05-28 11:10:35
我得和洛特先生一起去這個。您可以在Python文檔中快速獲得關於此文檔的授權答案,此外您還可以瞭解文檔中還有其他內容。如果您計劃使用Python,那麼瞭解這些文檔對您有好處。 – 2009-05-28 19:41:15
最快的答案是Google說的最快的答案。 – 2013-04-02 07:13:18