我在图像处理中遇到了使用以下语句的代码:
#args is a dictionary
if not args.get("video",False)
get((方法返回:
如果关键字在字典中,则指定关键字的值。
如果找不到键并且未指定值,则无。
如果找不到键并且指定了值,则为值。
但字典有一个关键的"视频",它是视频文件的路径,以后会以这种方式使用:
if args.get("video")
所以args.get("video"(会给出一个文件的路径。我的问题是,这是"if"的有效语法吗?还是我遗漏了什么?
__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的常量:
None
和False
。•任何数字类型的零:
0
、0.0
、0j
、Decimal(0)
、Fraction(0, 1)
•空序列和集合:
''
、()
、[]
、{}
、set()
、range(0)
是的,这是一个有效的语句。但是,如果此args.get("video"(返回无,则如果阻止,它将不会执行