2012-02-23 111 views
2

虽然经历了练习,但我偶然发现了一些事情,即使经过研究,我根本无法理解。学习Python困难的方法,练习20,困惑功能

下面是特定的代码位:

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

对于整个脚本:http://learnpythonthehardway.org/book/ex20.html

什么是真的,真的很困惑我的是(F)的一部分。 f从哪里来?它的目的是什么?

唉,在此先感谢!

+1

您是否熟悉数学中的函数? – 2012-02-23 04:42:20

+0

这在练习18中有所涉及。 – 2012-02-23 06:49:58

回答

2

f是该函数的一个参数,它应该是一个类似于对象的文件,并且在提供的示例中使用公开调用构造。

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) 

其中argv(由sys模块提供的)是设置在所述命令行字符串列表例如["ex20.py", "test.txt"]

+0

当然!傻我。有时我会感到惊讶,我自己可能会有多慢。 – user1227453 2012-02-23 04:58:24

+1

不要让自己失望。犯错误,学习,继续前进。 – Paragon 2012-02-23 05:21:30

1

示例它们提供

script, input_file = argv  

$ python ex20.py test.txt 

意味着f是文件。

3

f是支持传递给print_all的读取方法的文件或其他对象。 read方法读取所有内容。打印语句打印它。

2

f是一个参数。它传递给函数。例如:

def double(n): 
    return n * 2 

鉴于这种函数的定义,称:

x = double(2) 
print(x) 

会产生:

4 

你也可以简单地做print(double(2))

该参数传递是函数,对象和对象方法的基本部分;理解这一点对于理解任何 Python代码都是必要的。

0

fprint_all()用于传递给它的第一个参数的名称。

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

上面将每次运行期间含有some_file'Hello, World!'23在函数内运行print_all()三次,用f

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,这个参数将被用于该函数内部的进一步使用。