2011-07-30 14 views
1

こんにちは皆、これはおそらく私が見落としているような非常に単純なものですが、誰かがこの問題の対処方法を正しい方向に向けることができます。Pythonの関数内から* argsにアクセス

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

基本的に私がしようとしているのは、引数を渡されたデータを取得することです。私はちょうど*argsを使用するときに関数内の引数を参照するための構文に固執しています。

+0

Pythonの経験則は、名前はどこかから来なければならないということです。彼らは言語によって魔法のように挿入されません。 (インスタンスメソッドはインスタンスを 'self'と呼んでいるのは、メソッドの最初の引数であるためです - マジック' this'はありません。プロパティのセッターは、引数として設定している値を参照しています。あなたがモジュール '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

Bloody hell、私はそんなにばかげています。まだPythonのハングを取得します。それはまさに私が探していたものです、ありがとうございます。私はできれば病気を答えます。 – SacredGeometry

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

*arg意味:変数argにリストとしてremaning引数を渡します。ですので、listの処理方法を確認してください。注:リストインデックスは0から始まります。