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

时间:2018-06-08 21:53:16

标签: python

这是我从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)

2 个答案:

答案 0 :(得分:0)

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

由于它也包含在代码段中,我会为&#39; .extend()&#39;添加该信息。可以找到以下here。基本上.extend()然后只是在列表的末尾附加可迭代结构的所有项,所以build_args&#39;内容将为[<boolean>, '-j', <job_string>]

答案 1 :(得分:-1)

build_args = [NINJA or MAKE]

如果NINJA等同于True,则build_args = [NINJA]

如果NINJA等同于False,则build_args = [MAKE]

注意:在python中,other values相当于TrueFalse,而不是布尔人本身:

  

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

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

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

x     | y     | x or y
------|-------|---------
True  | True  | x
True  | False | x
False | True  | y
False | False | y