理解Python‘;if语句’;不熟悉的表达类型
道歉如果这是一件直截了当的事情,我只是没有运气在网上得到答案(如果这不是一个发布的好地方) 我一直在努力改进我的Python,并且我一直在努力理解一些用于神经网络/自然语言处理包的代码。我遇到了这样一个问题:理解Python‘;if语句’;不熟悉的表达类型,python,if-statement,expression,Python,If Statement,Expression,道歉如果这是一件直截了当的事情,我只是没有运气在网上得到答案(如果这不是一个发布的好地方) 我一直在努力改进我的Python,并且我一直在努力理解一些用于神经网络/自然语言处理包的代码。我遇到了这样一个问题: if args.encoder_layers_to_keep: args.encoder_layers = len(args.encoder_layers_to_keep.split(",")) 我没有遇到过这样的if语句。变量之间没有可比性。我唯一的猜测是,它返回一个真
if args.encoder_layers_to_keep:
args.encoder_layers = len(args.encoder_layers_to_keep.split(","))
我没有遇到过这样的if语句。变量之间没有可比性。我唯一的猜测是,它返回一个真值或假值,并与它一起工作,但我真的不确定
以下是完整的脚本供参考-
我很感激你能帮我做这件事
谢谢,
Justin空序列(例如列表、元组、字符串)的计算结果为False
。非空序列的计算结果为True
args.encoder\u layers\u to\u keep
似乎是一个字符串变量。空字符串“
的计算结果为False
,非空字符串的计算结果为True
您可以通过使用内置函数bool
将其转换为布尔值来证明这一点。试试bool(“”)和bool(“foobar”)
这在(PEP8)中提出:
对于序列(字符串、列表、元组),请使用空序列为false的事实:
if not seq:
if seq:
# Wrong:
if len(seq):
if not len(seq):
如果args.encoder\u layers\u to_keep
的布尔值等价于true
,它将计算为true,或者如果它的整数值不是0
,它将再次计算为true。否则,它将是错误的。或者空字符串->假,而任何其他字符串->真,如下面的答案所述。这是否回答了您的问题args
是作为参数传递给方法的对象encoder\u layers\u to\u keep
是args的属性。从下面的行判断,它应该是一个字符串。空字符串、None
和False
是python中的示例。只有当属性是真实值(如非空字符串)时,才会执行嵌套语句。谢谢!我到处都能看到这些,但从来没有在任何在线教程或解释中看到过。那么,它是否还有其他特殊用途,比如变量=0时的,
,或者它本身就是“正确的符号”?不,变量=0时的没有特殊用途。我想这是一种捷径,因为您不必使用len
(空序列的len
为0)。如果这是您问题的答案,请选择绿色箭头将其标记为答案。