假設我需要運行帶有循環的函數,直到遇到條件。爲了使函數正常工作,我只允許在函數中返回一個值,但一旦條件清除,我想將我執行的一些計算帶入全局範圍。我不允許使用return命令來做到這一點,所以我決定在之後將變量全球化。這引發了一個警告,但似乎工作正常。這是做事的最佳方式嗎?製作有條件的全局變量
下面是一個例子:
def check_cond(x,cond):
return (x - cond,3)
def loop(x,func):
relevant_value = 0
while x > 0:
local_expensive_calculation = 1 #use your imagination
x = func(x,local_expensive_calculation)[0]
relevant_value += func(x,local_expensive_calculation)[1]
if x == 0:
global local_expensive_calculation
return relevant_value
x = 4
loop(x,check_cond)
#then do stuff with local_expensive_calculation, which is now global
你能不能只是返回一個包含多個值的對象,如元組?另外,「我只能在函數中返回一個值......」似乎與「我不能使用返回命令」相矛盾。 – Carcigenicate
那麼,我使用scipy的牛頓函數來做到這一點。它要求你在裏面使用的函數只返回一個浮點數,不允許使用元組。至於我的矛盾,我指的是使用我可以做的事情之外的回報。 – rp0