使用各种条件语句设置变量
Setting a variable with various conditional statements
我有这个 python 编码语句:
is_headless = ["--headless"] if sys.argv[0].find('console.py') != -1 else [""]
["--headless"]
和if
之间的空白是通过什么方式控制代码行的?
"--headless"
如何以及将成为 is_headless
变量中的一个元素?
- 使用变量名
is_headless
表明最终值将
是 True
或 False
。这是正确的想法吗?在什么情况下会分配 True
或 False
?
[""]
是表示False
的一种方式吗?
- 有点迷糊...
好吧,从技术上讲,这是 Python 中的一行 if/else
语句,它非常强大且易于使用。我认为理解这一点的最简单方法是分解问题,使其更简单、更容易理解。
例如,替换示例值 'a' 和 'b' 并使用字符串而不是命令行中传递的参数,应该有助于使说明更清楚:
args = 'python console.py testing'
x = 'a' if args.find('console.py') != -1 else 'b'
print(x)
args = 'python testing'
x = 'a' if args.find('console.py') != -1 else 'b'
print(x)
输出:
a
b
另外,为了完整起见,回过头来回答你的其他问题:
- 当用户输入包含单词时
console.py
- 是的,变量命名不太好。
is_headless
的名称通常表明该 var 是一个布尔类型,但在这里并非如此,因为该 var 实际上被分配了一个字符串列表,例如可以将其注释为 list[str]
。
- 嗯,从技术上讲
[""]
不是虚假的,但是空列表 []
可以被认为是虚假的。我不太清楚为什么要在此处设置此设置,但是添加的上下文可能对此处有所帮助。
- In what way does the blank between
["--headless"]
and if
control the code line?
您可以将语句解析为:
is_headless = <expression>
其中 <expression>
的形式为 <true_value> if <condition> else <false_value>
。根据 <condition>
的结果,表达式的计算结果为 <true_value>
或 <false_value>
,并将这两个值之一分配给 is_headless
.
- How would
--headless
ever be an element in the is_headless
variable?
总体效果是将两个值之一分配给 is_headless
,["--headless"]
或 [""]
。奇怪的是,这两个都是单值列表。让我们谈谈这个...
- Using the variable name
is_headless
suggests the final value would be True
or False
. Is this correct thinking? In what case would True
or False
be assigned?
根据变量名,这正是我所期望的。这意味着这是一个坏名字。它没有被分配布尔值,所以它不应该被命名为 is_xxx
.
- Is
[""]
a way to indicate False
?
它应该表示“没有参数”。同样,不要将额外的参数传递给以下命令。有一个空字符串可能是一个错误;我更愿意看到一个空列表 []
而不是一个包含空字符串 [""]
.
的列表
如果变量名简单地命名为 headless
或 headless_argument
.
会更好
或者,我会写什么:
extra_arguments = []
if sys.argv[0].find('console.py') != -1:
extra_arguments.append('--headless')
这就是我的命名方式:extra_arguments
。它是可能会或可能不会传递的额外参数列表。默认情况下它是一个空列表,如果条件为真,那么我们向列表添加一个额外的参数 --headless
。
- A little confused...
我不怪你!
我有这个 python 编码语句:
is_headless = ["--headless"] if sys.argv[0].find('console.py') != -1 else [""]
["--headless"]
和if
之间的空白是通过什么方式控制代码行的?"--headless"
如何以及将成为is_headless
变量中的一个元素?- 使用变量名
is_headless
表明最终值将 是True
或False
。这是正确的想法吗?在什么情况下会分配True
或False
? [""]
是表示False
的一种方式吗?- 有点迷糊...
好吧,从技术上讲,这是 Python 中的一行 if/else
语句,它非常强大且易于使用。我认为理解这一点的最简单方法是分解问题,使其更简单、更容易理解。
例如,替换示例值 'a' 和 'b' 并使用字符串而不是命令行中传递的参数,应该有助于使说明更清楚:
args = 'python console.py testing'
x = 'a' if args.find('console.py') != -1 else 'b'
print(x)
args = 'python testing'
x = 'a' if args.find('console.py') != -1 else 'b'
print(x)
输出:
a
b
另外,为了完整起见,回过头来回答你的其他问题:
- 当用户输入包含单词时
console.py
- 是的,变量命名不太好。
is_headless
的名称通常表明该 var 是一个布尔类型,但在这里并非如此,因为该 var 实际上被分配了一个字符串列表,例如可以将其注释为list[str]
。 - 嗯,从技术上讲
[""]
不是虚假的,但是空列表[]
可以被认为是虚假的。我不太清楚为什么要在此处设置此设置,但是添加的上下文可能对此处有所帮助。
- In what way does the blank between
["--headless"]
andif
control the code line?
您可以将语句解析为:
is_headless = <expression>
其中 <expression>
的形式为 <true_value> if <condition> else <false_value>
。根据 <condition>
的结果,表达式的计算结果为 <true_value>
或 <false_value>
,并将这两个值之一分配给 is_headless
.
- How would
--headless
ever be an element in theis_headless
variable?
总体效果是将两个值之一分配给 is_headless
,["--headless"]
或 [""]
。奇怪的是,这两个都是单值列表。让我们谈谈这个...
- Using the variable name
is_headless
suggests the final value would beTrue
orFalse
. Is this correct thinking? In what case wouldTrue
orFalse
be assigned?
根据变量名,这正是我所期望的。这意味着这是一个坏名字。它没有被分配布尔值,所以它不应该被命名为 is_xxx
.
- Is
[""]
a way to indicateFalse
?
它应该表示“没有参数”。同样,不要将额外的参数传递给以下命令。有一个空字符串可能是一个错误;我更愿意看到一个空列表 []
而不是一个包含空字符串 [""]
.
如果变量名简单地命名为 headless
或 headless_argument
.
或者,我会写什么:
extra_arguments = []
if sys.argv[0].find('console.py') != -1:
extra_arguments.append('--headless')
这就是我的命名方式:extra_arguments
。它是可能会或可能不会传递的额外参数列表。默认情况下它是一个空列表,如果条件为真,那么我们向列表添加一个额外的参数 --headless
。
- A little confused...
我不怪你!