首页 > 解决方案 > 加深对 Python 3 函数调用和变量的理解

问题描述

对于以下 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) 我被要求“追踪”变量在“ current_lineprint_a_line line_count”函数中的变化情况。我能想到的最简单的答案是调用函数并将变量current_line作为参数传递给line_count

标签: pythonpython-3.x

解决方案


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

您不能真正将变量传递给 Python 中的函数,只能传递它们的值。
(当我们说“将 x 传递给 f”时,它的意思是“将 x 的值传递给 f”。)

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

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


推荐阅读