簡體   English   中英

Python中的隱式參數傳遞?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM