对于以下Python脚本,我有几个问题可以检查我的理解。对于以下第1点和第2点的任何帮助,将不胜感激。
from sys import argv
script, input_file = argv
def print_all(f):
print(f.read())
def rewind(f):
f.seek(0)
def print_a_line(line_count, f):
print(line_count, f.readline())
current_file = open(input_file)
print("First let's print the whole file:\n")
print_all(current_file)
print("Now let's rewind, kind of like a tape.")
rewind(current_file)
print("Let's print three lines:")
current_line = 1
print_a_line(current_line, current_file)
current_line = current_line + 1
print_a_line(current_line, current_file)
current_line = current_line + 1
print_a_line(current_line, current_file)
1)每次运行print_a_line
函数时,变量current_line
都会传递给该函数。我如何找到在每个函数调用中输出等于current_line
的方法?我以为该函数可以简单地更改为使用内置函数print()
,如下所示:
def print_a_line(line_count, f):
print(current_line)
print(line_count, f.readline())
2)我被要求在'print_a_line'函数中“跟踪”变量current_line
如何变成line_count
。我能想到的最简单的答案是调用函数并将变量current_line
作为参数传递给line_count
答案 0 :(得分:1)
我不确定这是否更清楚,但是这里...
您不能真正将变量仅传递给Python中的函数。
(当我们说“将x传递给f”时,表示“将x的值传递给f”。)
current_line
的 value 作为第一个参数传递给print_a_line
。
该参数称为“ line_count”,其值与您传入的值相同。
从current_line
的角度来看,变量 print_a_line
不存在;它是在其他 scope 中定义的,您无法从该函数中观察到它。