python内部函数和比外部函数快_Python:如何允许“内部函数”更改多个“外部函数”中的非局部变量...
假設我有一個函數,它在函數中的不同位置重復了大量代碼,我可以執行以下操作:def foo():
def bar():
# do some stuff
bar()
# do some other stuff
bar()
我可以在bar內“讀取”在foo范圍內的變量,此外,如果需要編輯它們,我可以這樣做:
^{pr2}$
問題
現在假設我有幾個函數,foo_1,foo_2,foo_3等等,所有這些函數都有相同的bar代碼行。在每個foo_i內定義bar會很單調(更不用說每次我想更改bar)會很單調,但是下面的操作并不起作用,因為nonlocal似乎是在定義函數的范圍內工作,而不是在其中調用函數:def bar():
nonlocal var1, var2 # SyntaxError: no binding for nonlocal 'var1' found
# do some stuff
def foo_1():
# stuff involving var1 and var2
bar()
# do some other stuff
bar()
潛在解決方案
解決這個問題的一種方法是傳入所有需要更改的變量,然后再返回它們。像這樣:def bar(var1, var2):
# do some stuff
return var1, var2
def foo_1():
# stuff involving var1 and var2
var1, var2 = bar(var1, var2)
# do some other stuff
var1, var2 = bar(var1, var2)
我的問題
上述解決方案存在一些問題:它比簡單的bar()更為冗長(尤其是當變量較多時)
實際上,在每個foo_i中定義bar并沒有多大的改進,因為假設我之前剛剛在bar中訪問了一個變量,現在我決定編輯它。我不僅需要更改函數,而且還需要更改調用它的所有地方(因為現在我必須返回一個額外的變量)。在
有沒有更好的方法來實現上述目標?在
(這感覺像是一個沒有答案的問題,所以如果是重復的問題,我道歉。我還沒找到任何東西。)
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的python内部函数和比外部函数快_Python:如何允许“内部函数”更改多个“外部函数”中的非局部变量...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python用途适合做什么生意-Pure
- 下一篇: python编程购物车_python编写