今どうなりますか? line_count = 3か、それともline_count = current_line = 3ですか?
line_count
は、print_a_line
の呼び出しの中で3にバインドされています。変数current_line
は、呼び出しの影響を受けません。
私は別の引数名を渡すと(私が代わりにLINE_COUNTのCURRENT_LINEで、ここで行ったように?)また、それが悪いことだ
それは全く悪いことではないのです。名前付き引数ではなく、定位置引数を使用しています。
Pythonには、位置引数と名前付き引数の2種類の引数があります。上の関数print_a_line
のように宣言された関数は、位置引数だけを使用しています。唯一の名前付き引数を持つ関数は、位置と名前付き引数の両方を持つ関数は、位置引数は、位置と呼ばれていることを
def print_a_line_2(line_count, f, append_newline=True):
if append_newline:
print line_count, f.readline()
else:
print line_count, f.readline(),
理由であるように見えるかもしれません
def print_a_line_2(line_count=3, f=None):
if f is not None:
print line_count, f.readline()
のようになります。その引数の位置のみあなたは問題を渡す。したがって、あなたは好きな2つの式をprint_a_line
の引数として書くことができ、最初に渡される引数はline_count
にバインドされ、print_a_line
の実行中にはf
にバインドされます。
という名前の引数の場合は、の場合はそうではありませんが、構文はそこでは異なります。名前付き引数を渡すには、単にexpression
と書くのではなく、name=expression
と書いてください。だから、あなたは
print_a_line_2(line_count=3, f=current_file)
を書くことができ、print_a_line_2
を呼び出し、前に等号が等号の後でないものを、署名が何であるかを引数の名前から来ています。
名前付き引数と定位置引数については、the Python tutorialをチェックアウトすることをおすすめします。
EDIT:あなたは(line_count(current_line, current_file)
ザ・Pythonインタプリタはあなたのプログラムに関するいくつかの情報を維持し、それは維持の重要な事柄のいくつかは、シンボルテーブルあり、名前を結合する呼び出すたび何がボンネットの下に起こります変数)を値に、現在のステートメントポインタを返します。現在の文ポインタがライン
print_a_line(current_line, current_file)
に達するたびにPythonインタプリタは、print_a_line
を見上げcurrent_line
、およびシンボルテーブルにcurrent_file
。それはprint_a_line
があなたの質問で定義した関数にバインドされており、current_line
は3にバインドされており、current_file
はファイルオブジェクトにバインドされていることがわかります(これは大きな実装定義のデータ構造です。 Fは大文字のFと小文字の小文字の区別があります(f
で少しお会いします)。 print_a_line
が関数であるため、インタプリタは引数3とFで関数を呼び出します。これを実行するには、現在の実行状態を保存し、変数line_count
を3に、f
をシンボルテーブルのFにバインドし、
print line_count, f.readline()
それはそれはシンボルテーブル内のすべての変数を探して、元の関数の呼び出しを実行するのと同じ方法でprint
声明を内蔵しており、作りを実行しているprint_a_line
関数の最初の行関数呼び出しはprint_a_line
への全体関数呼び出しと同じ方法でf.readline()
に呼び出します。次に、print_a_line
関数が返ってくると、Pythonインタプリタはシンボルテーブルからline_count
とf
を削除し、以前に保存した位置にステートメントポインタを戻します。 print_a_line
の呼び出し後、コード行で実行を続けます。
[コンピュータサイエンティストのように考える方法](http://greenteapress.com/thinkpython/html/)のような、プログラミングの良い紹介を読むことをお勧めします。特に[このサブセクション](http://greenteapress.com/thinkpython/html/book004.html#toc32)を参照してください。 –
このPythonチュートリアルhttp://people.csail.mitを見てみることをお勧めします。edu/pgbovine/python/tutor.html#mode =編集。 Pythonコードの小さなスニペットの実行を視覚化するのに最適な方法ですので、プログラムのさまざまな段階で変数がどうなるかを深く理解することができます。 –
@AndrewKurinnyiありがとうございました。 – 0101amt