2024-06-26 10:05:17 发布
网友
下面的代码来自黑客网我不知道该怎么想。是隐式地将变量i传递给run()还是它需要比指定位置更多的修改?在
import sys def run(): # Code here! for i in range(int(sys.stdin.readline())): run()
以下是问题中的代码:
i是在全局范围(即模块的顶层)中定义的,因此可以在run内部访问。这是因为本质上只有函数和类引入了一个新的局部作用域,所以迭代变量是其封闭范围的普通变量。在
i
run
如果run确实访问i,那么如果i尚未定义(例如,如果条件语句根本阻止循环执行),则可能会出现错误。在
我认为这是一个糟糕的编码实践。run()可以访问i的唯一原因是{}是全局的。在
run()
下面的方法可能更好,因为它将迫使程序员显式地将i传递到run()中(如果需要):
import sys def run(): # Code here! def main(): for i in range(int(sys.stdin.readline())): run() if __name__ == '__main__': main()
以下是问题中的代码:
i
是在全局范围(即模块的顶层)中定义的,因此可以在run
内部访问。这是因为本质上只有函数和类引入了一个新的局部作用域,所以迭代变量是其封闭范围的普通变量。在如果
run
确实访问i
,那么如果i
尚未定义(例如,如果条件语句根本阻止循环执行),则可能会出现错误。在我认为这是一个糟糕的编码实践。}是全局的。在
run()
可以访问i
的唯一原因是{下面的方法可能更好,因为它将迫使程序员显式地将
i
传递到run()
中(如果需要):相关问题 更多 >
编程相关推荐