1

すべての argv 引数を関数に渡したい。このコードを作成しましたが、エラーが発生します。これを機能させる方法をどのように知っていますか?助けてくれて本当にありがとうございます。

if __name__ == "__main__":
    import sys
    createP(sys.argv[1:])

def createP( a, b, c):
    print a + b + c

コマンドラインを使用してこのアプリを実行しています:

python filename.py d e f

戻る:

NameError: name 'createP' is not defined
4

3 に答える 3

4

createP定義する前に呼び出しています。また、間違った数の引数を渡しています。配列を展開する必要があります:

def createP( a, b, c):
    print a + b + c

if __name__ == "__main__":
    import sys
    createP(*sys.argv[1:])
于 2011-08-26T13:01:28.183 に答える
1

定義と の間で順序を入れ替えてみてくださいif

于 2011-08-26T13:01:57.160 に答える
1

すでに述べたように、順序を逆にする必要があります。
可変長のargvを表示するには、次のように記述します。

def createP(*x):
    print '\n'.join(x)
    # or ' '.join(x) if you prefer

if __name__ == "__main__":
    import sys
    createP(*sys.argv[1:])

sys.argvのすべての要素は文字列だと思います。私は正しいですか?

アップデート

私の答えは少しばかげています。次のコード (引数の受け渡しとパラメーターの定義に * を使用しない) が便利ではないのはなぜですか? :

def createP(x):
    print '\n'.join(x)
    # or ' '.join(x) if you prefer

if __name__ == "__main__":
    import sys
    createP(sys.argv[1:])
于 2011-08-26T13:11:59.927 に答える