隐式参数在Python中传递?

2024-06-26 10:05:17 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的代码来自黑客网我不知道该怎么想。是隐式地将变量i传递给run()还是它需要比指定位置更多的修改?在

import sys

def run():
   # Code here!

for i in range(int(sys.stdin.readline())):
   run()

Tags: run代码inimportforreadlineheredef
2条回答

以下是问题中的代码:

import sys

def run():
   # Code here!

for i in range(int(sys.stdin.readline())):
   run()

i是在全局范围(即模块的顶层)中定义的,因此可以在run内部访问。这是因为本质上只有函数和类引入了一个新的局部作用域,所以迭代变量是其封闭范围的普通变量。在

如果run确实访问i,那么如果i尚未定义(例如,如果条件语句根本阻止循环执行),则可能会出现错误。在

我认为这是一个糟糕的编码实践。run()可以访问i的唯一原因是{}是全局的。在

下面的方法可能更好,因为它将迫使程序员显式地将i传递到run()中(如果需要):

import sys

def run():
   # Code here!

def main():
   for i in range(int(sys.stdin.readline())):
      run()

if __name__ == '__main__':
   main()

相关问题 更多 >