捕获对yield语句之外的对象所做的更改python

问题描述 投票:0回答:1

我需要一种Python式的方法来让它工作

def generator():
    i=0
    yield(i)
    print(i)

for i in generator():
    i=2
##should print 2

如何修改提供的 Python 代码以确保在迭代生成器时打印

2
而不是
1
?我需要一种更Pythonic的方法来满足此要求,因为我有特定的约束,涉及确保基于更改的值将对象放置在正确的数据库中,这些更改既高效(因为我的数据库将相关对象存储在彼此附近)又难以修改外面。

.

python syntax
1个回答
0
投票

i
内的
geenrator
创建一个新的局部变量。您需要使用
global
:

来引用全局的
def generator():
    global i=0
    yield(i)
    print(i)
© www.soinside.com 2019 - 2024. All rights reserved.