Python中的隐式参数传递?

use*_*742 3 python

下面的代码来自hackermeter.com,我不知道该怎么想.变量i是隐式传递给run()还是期望更多修改而不是它指定的位置?

import sys

def run():
   # Code here!

for i in range(int(sys.stdin.readline())):
   run()
Run Code Online (Sandbox Code Playgroud)

NPE*_*NPE 10

我认为这是一个糟糕的编码实践.唯一的原因,run()访问i的是,i是全球性的.

以下可以说是更好的,因为它会迫使程序员传递irun()明确的(如果需要):

import sys

def run():
   # Code here!

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

if __name__ == '__main__':
   main()
Run Code Online (Sandbox Code Playgroud)