python - 加深对 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_line
print_a_line line_count
”函数中的变化情况。我能想到的最简单的答案是调用函数并将变量current_line
作为参数传递给line_count
解决方案
我不确定这是否使它更清楚,但这里......
您不能真正将变量传递给 Python 中的函数,只能传递它们的值。
(当我们说“将 x 传递给 f”时,它的意思是“将 x 的值传递给 f”。)
的值作为其第一个参数current_line
传递给。
该参数称为“line_count”,其值与您传入的值相同。 print_a_line
从的角度来看,该变量 current_line
不存在;print_a_line
它是在不同的范围内定义的,您无法从该函数中观察到它。
推荐阅读
- php - mpdf需要在android studio webView中强制下载
- reactjs - 已解决:useState 更新但组件不会重新渲染
- javascript - Array.find 方法是否返回给定数组的匹配元素形式的副本或引用?
- android - 在应用程序关闭并且服务在 bg 中运行后,如何强制执行 Application onCreate?
- google-apps-script - 如何使用谷歌脚本将定义的名称范围添加到任何单元格
- mongodb - 我可以在 MongoDb 的单个文档中将多个字段标记为 @indexed 吗?
- regex - 我想编写一个正则表达式来匹配精确 16 位银行卡的文件内容
- java - Java:双倍到整数
- java - 无标题的未知 16 位灰度图像文件格式
- maven - 依赖于其他项目的子项目的单独版本控制