2024-09-28 22:01:29 发布
网友
我想访问while循环正在修改的变量的值,在循环外连续打印。我所做的:
x=0 def funcA(): global x while True: x=x+1 return x def funB(): print x
现在,我希望x继续打印:
但事实并非如此。我不想要这个:
def funB(): while True: print x
也就是说,我不希望函数funcB()内部有while循环。 非常感谢你!在
我不知道这是不是你要找的,但是你可以用一个generator。在
def funcA(): x = 0 while True: yield x x += 1 def funcB(): for x in funcA(): print x #=> 1, 2, 3...
回调将起作用,并避免对全局x的需要:
x
def funcA(cb): x = 0 while True: x=x+1 cb(x) def funB(a): print a funcA(funB)
你没有一个有用的循环。在funcA中,您有一个while True:,但它只在每次循环中执行return,这意味着它只运行一次。在
funcA
while True:
return
因此,您可以在这两个函数之外放置一个循环:
while True: funcA() funB()
或者,您可以修复funcA,使其永远循环而不是只循环一次,然后从它内部调用funB:
funB
或者,您可以将funB传递给funcA,并让它调用所传递的任何内容:
def funcA(*functions): global x while True: x=x+1 for function in functions: functions() funcA(funB)
或者,您可以每次使funcAyield,而不是return,并使用它来驱动funB:
yield
def funcA(): global x while True: x=x+1 yield x for _ in funcA(): funB()
或者…你可以做很多事情。问题是你到底想做什么。如果有人能帮你解释的话,请写下来。在
同时,在大多数情况下,实际上并不需要全局变量。假设funcA已经在尝试return x,那么您只需将返回的值传递给外循环版本中的funB,或者在接下来的两个版本中将{}本身传递给funB和{},并将生成的值传递到生成器版本中
return x
我不知道这是不是你要找的,但是你可以用一个generator。在
回调将起作用,并避免对全局
x
的需要:你没有一个有用的循环。在
funcA
中,您有一个while True:
,但它只在每次循环中执行return
,这意味着它只运行一次。在因此,您可以在这两个函数之外放置一个循环:
或者,您可以修复
^{pr2}$funcA
,使其永远循环而不是只循环一次,然后从它内部调用funB
:或者,您可以将
funB
传递给funcA
,并让它调用所传递的任何内容:或者,您可以每次使
funcA
yield
,而不是return
,并使用它来驱动funB
:或者…你可以做很多事情。问题是你到底想做什么。如果有人能帮你解释的话,请写下来。在
同时,在大多数情况下,实际上并不需要全局变量。假设}本身传递给},并将生成的值传递到生成器版本中
funcA
已经在尝试return x
,那么您只需将返回的值传递给外循环版本中的funB
,或者在接下来的两个版本中将{funB
和{相关问题 更多 >
编程相关推荐