【问题标题】:Python : Understanding logical or of two object in parameter [duplicate]Python:理解参数中两个对象的逻辑或[重复]
【发布时间】:2021-10-03 11:43:41
【问题描述】:

this python code line 256 to 266

这个使用run in sarge

        p = run(
            cmd,
            input=self.feeder,
            async_=True,
            stdout=self.stdout or Capture(timeout=0.1, buffer_size=1),
            stderr=self.stderr or Capture(timeout=0.1, buffer_size=1),
            cwd=self.cwd,
            env=self.env,
            shell=self.shell,
            **run_args
        )

我无法理解 OR 逻辑运算符 stdout=self.stdout or Capture(timeout=0.1, buffer_size=1)

this OR 参数中有两个对象?

【问题讨论】:

    标签: python logical-operators


    【解决方案1】:

    据我了解,OR 用于在第一个语句不可用(无)的情况下为参数(第二个语句)指定默认值。

    在您的情况下,如果 self.stdout=Nonestdout 将具有第二条语句 (Capture(timeout=0.1, buffer_size=1)) 的值。

    【讨论】:

      【解决方案2】:

      它将使用第一个“真实”变量。在您的示例中,如果 self.stdout 为空,则它将分配给 Capture(timeout=0.1, buffer_size=1)。 这是一个很好的资源https://realpython.com/python-or-operator/ 查看有关“非布尔上下文”的部分

      【讨论】:

      • 嗨,我在 realpython 中阅读了您的链接,但真的没有看到任何“参考”或示例节目可以使用“或”从另外两个问题返回一个函数,如果两者都不为空会发生什么!跨度>
      【解决方案3】:

      如果stdout=self.stdouttrueCapture(timeout=0.1, buffer_size=1)true,则整个语句为true

      如果stdout=self.stdouttrueCapture(timeout=0.1, buffer_size=1)false,则整个语句为true,反之亦然。 p>

      如果stdout=self.stdoutfalseCapture(timeout=0.1, buffer_size=1)false,则整个语句为false

      【讨论】:

      • 嗨,我认为不是真的,因为这个参数接受对象(流)不是布尔值
      猜你喜欢
      • 1970-01-01
      • 2011-06-09
      • 2023-04-06
      • 2022-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多