【发布时间】:2020-05-10 23:41:15
【问题描述】:
抱歉,如果这是一件简单的事情,我只是没有运气在网上获得答案(如果这不是一个发帖的好地方)。
我一直在尝试改进我的 Python,并且一直在尝试理解神经网络/自然语言处理包的一些代码。我遇到了这个:
if args.encoder_layers_to_keep:
args.encoder_layers = len(args.encoder_layers_to_keep.split(","))
我还没有遇到过带有这样表达式的 if 语句。变量或任何东西之间没有比较。我唯一的猜测是它返回一个 true 或 false 值并且可以使用它,但我真的不确定。
作为参考,这里是完整的脚本 - https://github.com/pytorch/fairseq/blob/master/fairseq/models/transformer.py
我将不胜感激。
谢谢, 贾斯汀
【问题讨论】:
-
如果
args.encoder_layers_to_keep的布尔值相当于true,它将评估为真,或者如果它具有0以外的整数值,它将再次评估为真。否则,它将是错误的。或空字符串 -> false 而任何其他字符串 -> true,如下面的答案所述。 -
这能回答你的问题吗? if statement without a condition
-
args是作为参数传递给方法的对象。encoder_layers_to_keep是 args 的属性。从下面的行来看,它应该是一个字符串。空字符串None和False是python 中falsy values 的示例。嵌套语句仅在属性为真值(例如非空字符串)时才会执行。
标签: python if-statement expression