加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

在python或其他语言中它究竟是什么意思“if var”

发布时间:2020-12-20 12:23:49 所属栏目:Python 来源:网络整理
导读:这是 python中用于验证日期条目的算法.我想知道这究竟是什么意思“if day”(语义).我只知道“if”对布尔表达式的影响,而不是整数或数组等变量(我见过一些).有人有解释吗? def valid_day(day): if day and day.isdigit():#if day day = int(day) if day 0 an
这是 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:
(要么)
如果x不是None:

只有一个None对象,x是None将告诉你x是否引用该对象,并且总是给你一个bool(如果是,则为True,对于任何其他对象为False).比较x == None(我在开始使用Python时经常犯的错误)通常会起作用,但它会激活Python的通用比较机制,这不是你想要的;如果x是类的实例,则比较可能引发异常.是简单快速的,只是进行身份测试 – 它不能超载.

同样,如果x为True,则表示“如果x是布尔对象,意思是真的,而根本没有其他对象” – 这可能很有用,但对于刚刚测试真值时的情况来说太窄了.有人可能最终传递1,这将失败’是真’测试,但其他行为非常像真.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读