def valid_day(day): if day and day.isdigit():#if day day = int(day) if day > 0 and day <= 31: return day
解决方法
如果var:
与写作具有相同的效果
如果bool(var):
(其中bool是内置的bool类型,它也可以作为bool对象的构造函数).
如果该值已经是bool(值为True或False),则含义很明确 – bool(var)返回相同的值.对于其他类型,几乎总是转换为bool avaliable,这取决于类型.对于整数(如在C中),它与var!= 0相同;对于列表或字符串或字符串,它与len(var)!= 0相同,依此类推.你可以在python文档中找到它.
当您定义自己的类时,可以通过def __nonzero __(self):定义一个方法,该方法将在此上下文中调用(当您的对象显式传递给bool时,或隐式地传递给if – 或者就此而言).
一个值得注意的例外:numpy数组对象不会转换为bool(它们引发异常).它们需要使用像(arr!= 0).any()或(arr> 0).all()这样的结构进行显式转换.
在类似的方面:不要养成写任何一个的习惯
if x == True: # This only works as expected when x is a bool if x is True: # Can be useful but you need to understand what it really means. if x == None: # Often works as expected,except when it doesn't
应该始终与无比较
如果x为None:
(要么)
如果x不是None:
只有一个None对象,x是None将告诉你x是否引用该对象,并且总是给你一个bool(如果是,则为True,对于任何其他对象为False).比较x == None(我在开始使用Python时经常犯的错误)通常会起作用,但它会激活Python的通用比较机制,这不是你想要的;如果x是类的实例,则比较可能引发异常.是简单快速的,只是进行身份测试 – 它不能超载.
同样,如果x为True,则表示“如果x是布尔对象,意思是真的,而根本没有其他对象” – 这可能很有用,但对于刚刚测试真值时的情况来说太窄了.有人可能最终传递1,这将失败’是真’测试,但其他行为非常像真.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。