在python或其他语言中它究竟是什么意思“if var”
这是
python中用于验证日期条目的算法.我想知道这究竟是什么意思“if day”(语义).我只知道“if”对布尔表达式的影响,而不是整数或数组等变量(我见过一些).有人有解释吗?
def valid_day(day): if day and day.isdigit():#if day day = int(day) if day > 0 and day <= 31: return day 解决方法
在python中,写作
如果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: 只有一个None对象,x是None将告诉你x是否引用该对象,并且总是给你一个bool(如果是,则为True,对于任何其他对象为False).比较x == None(我在开始使用Python时经常犯的错误)通常会起作用,但它会激活Python的通用比较机制,这不是你想要的;如果x是类的实例,则比较可能引发异常.是简单快速的,只是进行身份测试 – 它不能超载. 同样,如果x为True,则表示“如果x是布尔对象,意思是真的,而根本没有其他对象” – 这可能很有用,但对于刚刚测试真值时的情况来说太窄了.有人可能最终传递1,这将失败’是真’测试,但其他行为非常像真. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |