2012-02-23 7 views
2

練習をしながら、私は研究の後でさえ、私は単に把握できない何かを見つけました。本当に、本当に私を混乱だが(f)の一部であるhttp://learnpythonthehardway.org/book/ex20.htmlPythonの難しい方法を学ぶ、エクササイズ20、機能について混乱している

:全スクリプトの

def print_all(f): 
    print f.read() 

ここでは、コードの特定のビットです。 それはどこから来たのですか?その目的は何ですか?

ああ、事前に感謝!

+1

数学の関数に精通していますか? –

+0

これは練習18でカバーされています。 –

答えて

2

fは、関数の引数であり、オブジェクトのようなファイルであると予想され、提供された例ではオープンコールで構築されます。 (sysモジュールによって提供される)argvを文字列のリストは、例えば、コマンドライン上に設けられている

script, input_file = argv 
#... 
current_file = open(input_file) 
#... 
#here, the body of current_file is executed, 
#with f replaced by the value of current_file 
print_all(current_file) 

["ex20.py", "test.txt"]

+0

もちろん!愚かな私。時々、私はどれくらい遅くてもいいか自分自身を驚かせることがあります。 – user1227453

+1

自分を落とさないでください。間違いを犯し、学び、移動する。 – Paragon

1

彼らは

script, input_file = argv  

$ python ex20.py test.txt 

を提供例がfがファイルであることを意味しています。

3

fは、print_allに渡される読み取りメソッドをサポートするファイルまたはその他のオブジェクトです。 readメソッドは、すべての内容を読み取ります。 printステートメントはそれを表示します。

2

fはパラメータです。それは関数に渡されます。たとえば:

x = double(2) 
print(x) 

が生成されます:呼び出し、この関数の定義を考えると

def double(n): 
    return n * 2 

4 

あなたは、単にprint(double(2))を行うことができます。

このパラメータの受け渡しは、関数、オブジェクト、オブジェクトメソッドの基本的な部分です。これを理解することは、 Pythonコードを理解するために必要です。

0

fは、それに渡される最初の引数としてprint_all()によって使用される名前です。

print_all(some_file) 
print_all('Hello, World!') 
print_all(23) 

上記ランの各々の間some_file'Hello, World!'、及び23を含む関数内fprint_all() 3回実行されます。

1

fは、引数であり、あなたがその機能に何かを渡すときに定義されています。

script, input_file = argv 
current_file = open(input_file) 

print_all(current_file) 
0

あなたは私が昨日のPythonを学び始めご覧ください。しかし

script, input_file = argv 

は、対応する変数に渡す引数(スクリプト名、および入力ファイル名)を置き、私は明確にしてみましょう。

current_file = open(input_file) 

これはファイル名のファイルハンドラオブジェクトを作成し、あなたが

print_all(current_file) 

に合格している、これは問題の関数を呼び出しました。したがって、この関数が何個のパラメータを取るか(そして名前は何になるのか)を通知するために、def functionName(arg1, arg2)のような関数を定義します。

したがって、def print_all(f)は、この関数がローカル名fを持つ1つのパラメータをとり、その関数内でのさらなる使用に使用されると定義しています。

関連する問題