2011-07-30 62 views
1

大家好這可能是一個非常簡單的事情,我忽略了,但是有人可以指出我如何處理這個問題的正確方向。從Python中的函數中訪問* args

def nodeFunction(self,*args): 
    return self[1] + self[2]  

基本上我想要做的就是抓取通過參數傳入的數據。當我使用*args時,我只是停留在函數內引用參數的語法上。

+0

Python中整齊的經驗法則是名稱必須來自某個地方;他們不會被語言魔法插入。 (一個實例方法只將實例稱爲self,因爲它是該方法的第一個參數 - 沒有什麼神奇的'this'。屬性的setter指的是它被設置爲參數的值 - 沒有如果你想在一個模塊'foo'中使用一個函數,你必須導入'foo',這樣解釋器就知道它是什麼了等等) – katrielalex

回答

7

args是一個簡單的列表:

def nodeMethod(self, *args): 
    return args[0], args[1] 

那是什麼意思?

請注意,沒有什麼特別的「args」。你可以使用任何變量名稱。這就是重要的運營商*

>>> class Node(object): 
...  def nodeMethod(self, *cornucopia): 
...   return cornucopia[0], cornucopia[1] 
... 
>>> n = Node() 
>>> n.nodeMethod(1, 2, 3) 
(1, 2) 

儘管如此,「args」是最常用的變量名稱;沒有一個好的理由,我不會使用其他任何東西,這對其他人來說是顯而易見的

+0

血腥的地獄,我是一個白癡,對不起仍然得到蟒蛇的竅門。那就是我正在尋找的謝謝。我可以接受答案。 – SacredGeometry

1
def nodeFunction(self, arg1, arg2, *args) 

*arg在參數列表是指:通過其剩餘參數作爲變量arg列表。因此請檢查如何處理list。注意:列表索引從0開始。