Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pythonic方法,用一组参数调用函数,直到它返回任何东西,但不返回任何东西_Python_Python 2.7 - Fatal编程技术网

Pythonic方法,用一组参数调用函数,直到它返回任何东西,但不返回任何东西

Pythonic方法,用一组参数调用函数,直到它返回任何东西,但不返回任何东西,python,python-2.7,Python,Python 2.7,我知道使用for循环并调用我的函数,直到我得到的返回值不是None,但我正在寻找一些内置python,可以在这里提供帮助 e、 g.-iter(myfunc(),None)它将调用myfunc(),直到返回None 我正在寻找与此完全相反的代码,例如-iter(myfunc(),而不是None),调用myfunc(),直到它返回除None以外的任何东西 提前感谢。没有现成的内置功能,但构建发电机功能非常简单: def iter_while_none(f): while True:

我知道使用for循环并调用我的函数,直到我得到的返回值不是None,但我正在寻找一些内置python,可以在这里提供帮助

e、 g.-
iter(myfunc(),None)
它将调用
myfunc()
,直到返回
None

我正在寻找与此完全相反的代码,例如-
iter(myfunc(),而不是None),调用myfunc()
,直到它返回除
None以外的任何东西


提前感谢。

没有现成的内置功能,但构建发电机功能非常简单:

def iter_while_none(f):
    while True:
        value = f()
        if value is not None:
            return
        yield value

虽然产生的价值不是那么有趣;毕竟,每次都是
None

不要为每件事寻找一个内置的。在我看来,即使是通常的两参数形式的iter也不值得使用,因为它不是一个众所周知的特性,这使得大多数人更难阅读。只要简单明了就行了。多排一两行不会有什么坏处

while True:
    x = myfunc()
    if x is not None:
        break
只有三行:

x = None
while x is None:
    x = f()

这个答案有点像是对Python功能的练习。我只是感到沮丧,
iter
s2-arity形式没有将函数作为第二个参数

但如果你够疯狂的话,它会的。请参见,可以在对象上重新定义相等,如下所示:

class Something:
    def __eq__(self, other):
        self.lastother = other
        return other is not None

sentinel = Something()
myiter = iter(myfunc, sentinel)
for nope in myiter:
    pass
match = sentinel.lastother

在那里。享受。Python非常惊人,您可以通过这种方式颠覆平等的定义。祝你在城堡里玩得开心

从itertools导入dropwhile,重复,星图;下一步(dropwhile(lambda x:x是None,starmap(my_func,repeat((!))
什么是my_func()做什么?@PadraicCunningham它在参数上应用正则表达式并返回匹配的object是的,字符串将是文件中的行,并一直调用它,直到我得到匹配的object。所以您真正想要的是第一个非无值?我想OP没有说得很清楚,但他们想知道非无值是什么。这个解决方案降低了这个值。你在开玩笑吗?鉴于这个答案的娱乐性和教育性,请不要接受它!接受它意味着不假思索的脚本小子将复制粘贴它,并最终在某些生产系统上。我不想为此负责!请接受Vpfb的回答!我最喜欢这个答案,所以我接受了,我会尊重你的wish@AlokThakur我很感激这一点,但我写的代码更多的是教学性的,而不是正确的。你真的应该考虑Vpfb的回答。