当前位置:  开发笔记 > 编程语言 > 正文

Python:可以返回布尔值和字符串吗?

如何解决《Python:可以返回布尔值和字符串吗?》经验,为你挑选了5个好方法。

原始问题

我已经创建了一个函数,它等待特定字符串出现在串行端口上,并返回所有字符读取,直到找到该字符串,否则返回false.这很方便,但我想知道它是否被认为是不好的做法?

澄清:

主要目标是等待特定字符串在给定的时间内出现.除了IO错误,可能的结果是True(字符串确实出现)或False次要目标是获取整个输出,因为在寻找的实际答案之前可能存在我想要解析的信息.我想可能是我可以在一个返回值中合并主要和次要目标.

def MyFunc(s, timeout) :
    test = get_some_input(timeout)
    if test.endswith(s)
        return test
    else
        return False

编辑:另一个建议的答案是提出异常.我不认为这是一个好主意,因为超时是预期的行为.我的意思是,如果有一个用于指定超时的参数,那么超时是可能的结果,而不是例外.

编辑2:因为我需要存储输入,所以使用类是正确的解决方案.wait for函数具有明确的返回值,但是也可以访问在超时之前读取的整个字符串.

class Parser :
        def __init__(self, sport_name):
                self.currentMsg = ''
                self.ser = serial.Serial(sport_name, 115200)
        def WaitFor(self, s, timeOut=None):
                self.ser.timeout = timeOut
                self.currentMsg = ''
                while self.currentMsg.endswith(s) != True :
                        # should add a try catch here
                        c=self.ser.read()
                        if c != '' :
                               self.currentMsg += c
                        else :
                                print 'timeout waiting for ' + s
                                return False
                return True

jelovirt.. 26

是不是更适合返回None而不是False



1> jelovirt..:

是不是更适合返回None而不是False



2> Steven Huwig..:

我相信正统的Python设计将返回None.该手册说:

没有

此类型具有单个值.有一个具有此值的对象.可以通过内置名称None访问此对象.它用于表示在许多情况下缺少值,例如,它从未明确返回任何内容的函数返回.它的真值是错误的.



3> Tim Ottinger..:

最好返回一个字符串AND一个布尔值(如标题中所示),而不是返回一个字符串或一个布尔值.您不必弄清楚返回值的含义.它应该是完全明确的,正交问题应该分成不同的变量.

(okay,value) = get_some_input(blah);
if (okay): print value

我倾向于不再返回元组,因为它感觉很有趣.但这样做完全有效.

返回"无"是一个有效的解决方案,已在此处提及.



4> utku_karatas..:

方便的是在这种情况下返回一个空字符串.

除了Python中的空字符串,无论如何都将评估为False.所以你可以称之为:

if Myfunc(s, timeout):
    print "success"

另外:正如S.Lott指出的那样,真正的Pythonic方式是返回None.虽然我选择在字符串相关的函数中返回字符串.确实是一个偏好的问题.

此外,我假设Myfunc的调用者只关心获取一个字符串来操作 - 空或不.如果调用者需要检查超时问题等,最好使用异常或返回None.



5> Ber..:

如果字符串及时到达,您可以返回该字符串,或者引发指示超时的适当异常.

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有