[英]Implicit Argument Passing in Python?
下面的代碼來自hackermeter.com,我不知道該怎么想。 變量i是隱式傳遞給run()還是期望更多修改而不是它指定的位置?
import sys
def run():
# Code here!
for i in range(int(sys.stdin.readline())):
run()
我認為這是一個糟糕的編碼實踐。 run()
訪問i
的唯一原因是i
是全球性的。
以下可以說是更好,因為它會強制程序員明確地將i
傳遞給run()
(如果需要):
import sys
def run():
# Code here!
def main():
for i in range(int(sys.stdin.readline())):
run()
if __name__ == '__main__':
main()
這是問題中的代碼:
import sys
def run():
# Code here!
for i in range(int(sys.stdin.readline())):
run()
i
在全局范圍內定義(即在模塊的頂層),因此可以在run
訪問。 這是因為基本上只有函數和類引入了一個新的局部作用域,因此迭代變量是其封閉作用域的正常變量。
如果run
不接i
,這對於一個錯誤造成如果潛在的i
尚未確定(例如,如果一個條件語句防止從所有正在執行的循環)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.