繁体   English   中英

方括号内带有`or`的python语句

[英]python statement with `or` inside square brackets

这是我从 setup.py python 文件粘贴的代码片段。 我是 python 新手,不理解这个build_args变量。 有人可以给我一些解释吗?

build_args = [NINJA or MAKE]

# control the number of concurrent jobs
if self.jobs is not None:
    build_args.extend(['-j', str(self.jobs)])

subprocess.check_call(build_args)

build_args 的实例化只是评估列表结构中的逻辑布尔 OR 语句 在 OR 语句被评估后,build_args 中将只存储一个布尔值。 (给 ukemi 的道具,打我一拳)

由于它也包含在代码片段中,我会在此处添加“.extend()”的信息 本质上 .extend() 然后只是将可迭代结构的所有项目附加到列表的末尾,因此 build_args' 内容将是[<boolean>, '-j', <job_string>]

用:

build_args = [NINJA or MAKE]
  • 如果NINJA是“真实的”,那么build_args = [NINJA]
  • 如果NINJA是“falsy”,则build_args = [MAKE]


注意:Python 的 Truthy 和 Falsy - 广义布尔值

在 python 中,除了布尔值本身之外,还有其他等效于TrueFalse的值:

在布尔运算的上下文中,以及当控制流语句使用表达式时,以下值被解释为 false:

  • False
  • None
  • 所有类型的数字零
  • 空字符串和容器(包括字符串、元组、列表、字典、集合和冻结集)

所有其他值都被解释为真。


or真值表:

X x or y
真的 真的 X
真的 错误的 X
错误的 真的
错误的 错误的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM