簡體   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