日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python内部函数和比外部函数快_Python:如何允许“内部函数”更改多个“外部函数”中的非局部变量...

發布時間:2024/7/19 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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:如何允许“内部函数”更改多个“外部函数”中的非局部变量...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。