路径是否可以在python中的'if'语法中使用布尔值的intsead



我在图像处理中遇到了使用以下语句的代码:

#args is a dictionary     
if not args.get("video",False)

get((方法返回:

如果关键字在字典中,则指定关键字的值。

如果找不到键并且未指定值,则无。

如果找不到键并且指定了值,则为值。

但字典有一个关键的"视频",它是视频文件的路径,以后会以这种方式使用:

if args.get("video")

所以args.get("video"(会给出一个文件的路径。我的问题是,这是"if"的有效语法吗?还是我遗漏了什么?

python中的类可以建立一个__bool__(self)方法。如果定义了函数,那么当通过if访问成员时,__bool__中的代码将运行并决定是返回True还是返回False。所以是的,这行是有效的python。无论args.get()返回什么,它都将调用bool(),这将运行父类的__bool__()方法。

如果args.get()返回一个字符串,例如某个文件的位置,它将计算为True。如果所有python字符串不为空,则它们的求值结果将为True

是的,它是有效的。

只要不是""str就会返回True

根据文件-真值测试:

任何对象都可以测试真值,用于if或while条件,或用作下面布尔运算的操作数。

默认情况下,除非对象的类定义了返回False的__bool__((方法或使用对象调用时返回零的__len__((方法,否则对象将被视为true。以下是大多数被认为是错误的内置对象:

•定义为false的常量:NoneFalse

•任何数字类型的零:00.00jDecimal(0)Fraction(0, 1)

•空序列和集合:''()[]{}set()range(0)

是的,这是一个有效的语句。但是,如果此args.get("video"(返回,则如果阻止,它将不会执行

最新更新