Python 使变量条件全局化
假设我需要运行一个带有循环的函数,直到满足一个条件。为了使函数正常工作,我只允许在函数中返回一个值,但一旦条件清除,我希望将我执行的一些计算带入全局范围。我不允许使用return命令来执行此操作,因此我决定在post中全球化变量。这提出了一个警告,但似乎效果不错。这是做事情的最好方式吗 下面是一个例子:Python 使变量条件全局化,python,python-2.7,global-variables,Python,Python 2.7,Global Variables,假设我需要运行一个带有循环的函数,直到满足一个条件。为了使函数正常工作,我只允许在函数中返回一个值,但一旦条件清除,我希望将我执行的一些计算带入全局范围。我不允许使用return命令来执行此操作,因此我决定在post中全球化变量。这提出了一个警告,但似乎效果不错。这是做事情的最好方式吗 下面是一个例子: def check_cond(x,cond): return (x - cond,3) def loop(x,func): relevant_value = 0 whi
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
这可能会稍微滥用系统,但您可以将变量设置为函数的属性,然后稍后通过该命名空间访问它:
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:
loop.local_expensive_calculation = local_expensive_calculation
return relevant_value
x = 4
loop(x,check_cond)
print loop.local_expensive_calculation
如果您绝对坚持将it作为一个全球品牌,您可以通过改变产品线来实现这一点:
global local_expensive_calculation
致:
它会让你的警告消失
我对上下文了解不多,似乎您想要一个Python2.7的答案(Python3.?)是非本地的
请记住
你可以写:
while x>0:
# do calculation and stuff
else:
# make calculation result global
PS:你给
x
的作业中有一个输入错误:(计算-->计算
)你不能返回一个包含多个值的对象,比如元组吗?另外,“我只允许在函数中返回一个值…”似乎与“我不允许使用return命令”相矛盾。好吧,我使用scipy的newton函数来实现这一点。它要求您在其中使用的函数只返回一个浮点,不允许使用元组。至于我的矛盾,我指的是在我被允许的范围之外使用返回。这当然有效,并且不会引起任何错误,所以我接受它。
while x>0:
# do calculation and stuff
else:
# make calculation result global