学习Python艰难的方式,练习20,混淆功能

时间:2012-02-23 04:38:56

标签: python

在进行练习的过程中,我发现了一些东西,即使经过研究,我根本无法掌握。

这是代码的具体位:

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

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

真正令我困惑的是(f)部分。 那个f来自哪里?它的目的是什么?

哦,好的,提前谢谢!

7 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

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"]

答案 2 :(得分:2)

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

def double(n):
    return n * 2

鉴于此函数定义,请调用:

x = double(2)
print(x)

将产生:

4

你也可以做print(double(2))

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

答案 3 :(得分:1)

他们提供的例子

script, input_file = argv    

$ python ex20.py test.txt

表示f是文件。

答案 4 :(得分:1)

f是一个参数,在您将某些内容传递给该函数时定义:

script, input_file = argv
current_file = open(input_file)

print_all(current_file)

答案 5 :(得分:0)

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

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

上述操作将print_all()三次,f在每次运行期间包含some_file'Hello, World!'23的函数中。{ / p>

答案 6 :(得分:0)

你看我昨天开始学习Python了。但是让我试着澄清一下,

script, input_file = argv

将传递的参数(脚本名称和输入文件名)放入相应的变量中。

current_file = open(input_file)

这将为您传递的文件名创建文件处理程序对象

 print_all(current_file)

这称为有问题的功能。因此,您定义了一个类似def functionName(arg1, arg2)的函数,以通知此函数将采用多少参数(以及它的名称是什么)。

所以,你已定义def print_all(f)说这个函数接受一个具有本地名称f的参数,该参数将用于该函数内的进一步使用。