2013-11-04 35 views
1

這可能是一個基本問題,但不幸的是我在搜索時無法獲得任何東西。如何在函數中使用* args?

我有一個函數,它使用*args在函數在命令行上運行時捕獲參數。

def func(*args): 
    <code starts> 
    ... 
    </code ends> 

func("arg1", "arg2", "arg3") 

這裏的問題是,代碼工作,如果我傳遞參數的代碼文件本身出現在上面的代碼片段:

的基本結構如下。我一直在尋找如何實際運行命令行此代碼,下面的參數:

# python <file.py> arg1 arg2 arg3 

對於這一點,我知道我應該改變線「FUNC(‘ARG1’,‘ARG2’,「ARG3 「)'在代碼文件本身,但我不知道它是如何。

有人可以請指出我可以如何糾正這一點。

非常感謝

注意:兩個方案的工作,是兩者是相同的。可惜我不能接受這兩個答案。

回答

7

sys.argv[1:]將爲您提供所有命令行參數作爲列表。

因此,您可以在代碼中執行func(*sys.argv[1:])以接收所有參數。但是,沒有理由使用可變參數 - 只需使該函數接受列表args並直接傳遞sys.argv[1:]即可。

+0

這工作真的很好,謝謝.. :) – vimal

+0

在這種情況下,請不要忘記接受答案,通過點擊左側的複選標記圖標:) – ThiefMaster

6

你會使用類似的語法時調用功能:

func(*sys.argv[1:]) 

這裏*sys.argv列表展開列表爲單獨的參數之前。

sys.argv list本身包含在命令行中找到的所有參數,包括腳本名稱;從第二個項目開始將其切片,將爲您提供沒有腳本名稱的所有選項。

+0

謝謝,那工作:) – vimal

相關問題