gpt4 book ai didi

python - 当我不小心使用生成器功能时,我可以得到警告吗

转载 作者:行者123 更新时间:2023-11-28 19:52:02 25 4
gpt4 key购买 nike

我正在处理一个类的生成器函数和私有(private)函数。我在想

  1. 为什么在 __someFunc 中让步(在我的一个案例中是偶然的)时,这个函数似乎不是从 __someGenerator 中调用的。另外,在提到语言的这些方面时,我想使用什么术语?
  2. python 解释器可以对此类情况发出警告吗?

下面是我的场景的示例片段。

class someClass():
def __init__(self):
pass

#Copy and paste mistake where yield ended up in a regular function
def __someFunc(self):
print "hello"
#yield True #if yielding in this function it isn't called

def __someGenerator (self):
for i in range(0, 10):
self.__someFunc()
yield True
yield False

def someMethod(self):
func = self.__someGenerator()
while func.next():
print "next"

sc = someClass()
sc.someMethod()

我为此焦头烂额,花了一些时间试图弄清楚为什么函数没有被调用。我终于发现我正在屈服于我不想屈服的功能。

最佳答案

与其说“生成器”是一种语言特性,不如说它是“产生”函数的名称。屈服几乎总是合法的。 Python 实际上没有任何方法知道您不是“有意”从某些函数中产生。

此 PEP http://www.python.org/dev/peps/pep-0255/谈论生成器,可能会帮助您更好地了解背景。

我同情你的经历,但编译器无法弄清楚你“想让他们做什么”,只能弄清楚你实际告诉他们要做的事情。

关于python - 当我不小心使用生成器功能时,我可以得到警告吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1087019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com