3

ZedShawの「LearnPythontheHard Way」では、スクリプトのすべての行が何をするのかを「英語で書き出す」ように頻繁に求められます。コードの特定の部分に名前を付ける方法がわからないため、関数(コマンド?) argvに関連するものでそれを行うのに苦労しています。一体、私はargv--関数を何と呼ぶべきかさえ知りませんか?コマンド?変数?私はそれがモジュールであることを知っています。しかし、軌道に戻る:

演習13のコードは次のとおりです。

from sys import argv

script, first, second, third = argv

print "The script is called:", script
print "Your first variable is:", first
print "Your second variable is:", second
print "Your third variable is:", third

Zedは、「'argv'は"引数変数"です。私の質問は、3行目の等号の左側にあるものの名​​前は何ですか?

口語的に言えば、私の衝動は「スクリプト」、「最初の」などの単語自体を変数と呼ぶことですが、Zed argvによると「引数変数」であるため、それは正しくないようです。

私はそれらを「議論」と呼ぶことも正しいとは思いませんでした。私はコマンドライン引数の観点から「引数」を読んだだけです。

「パラメータ」は演習のタイトルで言及されているため、可能性が高いように見えましたが、「等号」、「=」、「python」、「argv」、「definition」などの組み合わせでWeb検索を行うことはできませんでした。非常に啓発的です。何と呼ばれているのかわからない場合、物事を探すのは非常に困難です。

このスクリプトで何が起こっているのかは非常に明確ですが、その一部の名前は明確ではありません。これが答えられたら、私は額を平手打ちするつもりだと確信しています。

4

3 に答える 3

3

左側にあるの"="は、右側の変数からを取得する変数です。

与えられた:

script, first, second, third = argv

argvこの場合は4つの項目を含む文字列のリストです。これらの文字列は「解凍」され、の左側にある4つの変数に割り当てられます=

argvその値を取得するのは、次のように、コマンドラインからPythonプログラムが呼び出されたときです。

test.py this is sure cool

この場合、argvが含まれます ['test.py', 'this', 'is', 'sure', 'cool']。コマンドの後のこれらの文字列は、「コマンドライン引数」(このチュートリアルを参照)およびスクリプトの名前と呼ばれ、引数はすべてに格納されargvます。これは、スクリプトを開始したときにスクリプトに情報を送信する方法です。

この場合、変数は次の値を取得します。

  script is set to  "this.py"  # the string is in argv[0]
  first to "is"     # argv[1]
  second to "sure"  # argv[2]

  third to "cool"   # argv[3]

それで:

  script, first, second, third = argv

本当に同等です:

  script = argv[0]
  first = argv[1]
  second = argv[2]
  third = argv[3]

Pythonでこの割り当てを一挙に実行できるのはそれだけです。

適切なインデックス値を使用して、コマンドライン引数を任意の順序で引き出すことができることに注意してください。

このメカニズムは、Pythonスクリプトに情報を伝達するために使用されます。入力ファイルと出力ファイルを期待するプログラムを実行することを想像できます。スクリプトにハードコーディングする代わりに、コマンドラインで提供することもできます。例えば、

 computeData.py input.txt result.txt
于 2012-08-25T02:53:35.510 に答える
1

インタラクティブなPythonプロンプトにコードを入力して、これらがどのように機能するかを確認する方が簡単な場合があります。

sys.argvは、Python自体によって定義されるリストですが、自分で定義するリストまたはタプル(Pythonの可変および非可変配列のようなタイプ)とそれほど違いはありません。ですから、自分で定義して試してみてください。リスト型であるという名前の変数を宣言したらargv = ['123','456','789']、それを別の名前に割り当ててみてください。

  anothername = argv

特別なことは何も起こらないことに注意してください。ここで、代わりに3つの異なる変数に割り当てようとするとどうなるかに注意してください。

  v1,v2,v3 = argv

argvの最初の(技術的には「zeroeth」)要素はv1に格納され、argvの2番目の要素はv2に格納されます。

私はv1、v2、v3を「リストargvの要素であったものを保持する変数のリストですが、解凍して自分の場所に保存したい」と呼んでいると思います。

于 2012-08-25T02:57:19.903 に答える
0

最初の質問に答えるために、はモジュールargv属性です。sys2番目の質問については、Pythonのドキュメントでは代入式の右辺の名前を指定していませんがscriptfirstこのコンテキストでは、、などを変数と呼ぶことができます。

于 2012-08-25T02:56:57.033 に答える