Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用;及;及;或;带Python字符串的运算符_Python_String_Boolean Operations - Fatal编程技术网

使用;及;及;或;带Python字符串的运算符

使用;及;及;或;带Python字符串的运算符,python,string,boolean-operations,Python,String,Boolean Operations,我不明白这句话的意思: parameter and (" " + parameter) or "" 其中,参数是字符串 通常,为什么要在python字符串中使用和和或运算符?它检查参数是否有值。如果它这样做了,它会预留一个空间。如果不是,则返回一个空字符串 $ python Python 2.7.2 (default, Oct 11 2012, 20:14:37) [GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60

我不明白这句话的意思:

parameter and (" " + parameter) or ""
其中,参数是字符串


通常,为什么要在python字符串中使用
运算符?

它检查
参数是否有值。如果它这样做了,它会预留一个空间。如果不是,则返回一个空字符串

$ python
Python 2.7.2 (default, Oct 11 2012, 20:14:37) 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> foo = 'bar'
>>> foo and (" " + foo) or ""
' bar'

它检查
参数
是否有值。如果它这样做了,它会预留一个空间。如果不是,则返回一个空字符串

$ python
Python 2.7.2 (default, Oct 11 2012, 20:14:37) 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> foo = 'bar'
>>> foo and (" " + foo) or ""
' bar'

假设您使用的是
参数的值
,但如果该值为
None
,则您希望使用空字符串
,而不是
None
。你一般会怎么做

if parameter:
    # use parameter (well your expression using `" " + parameter` in this case
else:
    # use ""
这就是那个表达式所做的。首先,您应该了解
以及
操作员的工作:

  • a和b
    返回
    b
    如果a为
    True
    ,否则返回
    a
  • a或b
    返回
    a
    如果a为
    True
    ,否则返回
    b
那么,你的表情:

parameter and (" " + parameter) or ""
这实际上相当于:

(parameter and (" " + parameter)) or  ""
#    A1               A2               B
#           A                     or   B
在以下情况下如何计算表达式:

  • 参数-A1
    的计算结果为
    True

    result = (True and " " + parameter) or ""
    
    result = (" " + parameter) or ""
    
    result = " " + parameter
    
    result = (None and " " + parameter) or ""
    
    result = None or ""
    
    result = ""
    
  • 参数-A1

    result = (True and " " + parameter) or ""
    
    result = (" " + parameter) or ""
    
    result = " " + parameter
    
    result = (None and " " + parameter) or ""
    
    result = None or ""
    
    result = ""
    

作为一般建议,使用
a if C else B
form表达式作为条件表达式更好、更具可读性。因此,您应该更好地使用:

" " + parameter if parameter else ""

而不是给定的表达式。有关
if else
表达式背后的动机,请参阅。

假设您使用的是
参数的值,但如果该值为
None
,则您希望使用空字符串
,而不是
None
。你一般会怎么做

if parameter:
    # use parameter (well your expression using `" " + parameter` in this case
else:
    # use ""
这就是那个表达式所做的。首先,您应该了解
以及
操作员的工作:

  • a和b
    返回
    b
    如果a为
    True
    ,否则返回
    a
  • a或b
    返回
    a
    如果a为
    True
    ,否则返回
    b
那么,你的表情:

parameter and (" " + parameter) or ""
这实际上相当于:

(parameter and (" " + parameter)) or  ""
#    A1               A2               B
#           A                     or   B
在以下情况下如何计算表达式:

  • 参数-A1
    的计算结果为
    True

    result = (True and " " + parameter) or ""
    
    result = (" " + parameter) or ""
    
    result = " " + parameter
    
    result = (None and " " + parameter) or ""
    
    result = None or ""
    
    result = ""
    
  • 参数-A1

    result = (True and " " + parameter) or ""
    
    result = (" " + parameter) or ""
    
    result = " " + parameter
    
    result = (None and " " + parameter) or ""
    
    result = None or ""
    
    result = ""
    

作为一般建议,使用
a if C else B
form表达式作为条件表达式更好、更具可读性。因此,您应该更好地使用:

" " + parameter if parameter else ""

而不是给定的表达式。有关
if-else
表达式背后的动机,请参阅。

Python中的空字符串相当于
False
布尔值,与空列表的方式相同。您介绍的这行代码是三元运算符的Python版本(如下面的注释所述,现在是一种过时的构造,如Python)。它基于三条规则:

  • 对于
    a和b
    ,如果
    a
    False
    ,则不会对
    b
    进行评估
  • 对于
    a或b
    如果
    a
    True
    则不会对
    b
    进行评估
  • 逻辑子句的值是其最近计算的表达式的值
如果
参数
的计算结果为
则将计算
子句的第二部分:
(“”+参数)
。因此,如果
参数不是空字符串,它将向该参数添加前导空格。
子句的第二部分不会被计算,因为您已经知道整个表达式是
True
True
或任何东西总是
True

如果
参数
False
(本上下文中为空字符串),
子句的第二部分将不会得到计算,因为您已经知道它是
False
False
,并且任何内容都始终是
False
)。因此,
子句的第二部分得到计算,返回一个空字符串

$ python
Python 2.7.2 (default, Oct 11 2012, 20:14:37) 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> foo = 'bar'
>>> foo and (" " + foo) or ""
' bar'
您可以用更详细的方式编写:

if parameter:
    return " " + parameter
else:
    return ""

Python中的空字符串相当于
False
布尔值,与空列表的方式相同。您介绍的这行代码是三元运算符的Python版本(如下面的注释所述,现在是一种过时的构造,如Python)。它基于三条规则:

  • 对于
    a和b
    ,如果
    a
    False
    ,则不会对
    b
    进行评估
  • 对于
    a或b
    如果
    a
    True
    则不会对
    b
    进行评估
  • 逻辑子句的值是其最近计算的表达式的值
如果
参数
的计算结果为
则将计算
子句的第二部分:
(“”+参数)
。因此,如果
参数不是空字符串,它将向该参数添加前导空格。
子句的第二部分不会被计算,因为您已经知道整个表达式是
True
True
或任何东西总是
True

如果
参数
False
(本上下文中为空字符串),
子句的第二部分将不会得到计算,因为您已经知道它是
False
False
,并且任何内容都始终是
False
)。因此,
子句的第二部分得到计算,返回一个空字符串

$ python
Python 2.7.2 (default, Oct 11 2012, 20:14:37) 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> foo = 'bar'
>>> foo and (" " + foo) or ""
' bar'
您可以用更详细的方式编写:

if parameter:
    return " " + parameter
else:
    return ""

考虑一下这个TTL。然后插入不同的场景,看看会发生什么:)

请注意,