加深对Python 3函数调用和变量的了解

时间:2019-02-12 09:53:21

标签: python python-3.x

对于以下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

1 个答案:

答案 0 :(得分:1)

我不确定这是否更清楚,但是这里...

您不能真正将变量仅传递给Python中的函数。
(当我们说“将x传递给f”时,表示“将x的值传递给f”。)

current_line value 作为第一个参数传递给print_a_line
该参数称为“ line_count”,其值与您传入的值相同。

current_line的角度来看,变量 print_a_line不存在;它是在其他 scope 中定义的,您无法从该函数中观察到它。