"return someString and partString in someString" 在 Python3
"return someString and partString in someString" in Python3
test1 = "this is test line" # non-empty string
test2 = "" # empty string
def test_line(line):
return line and not "is" in line
test1_result = test_line(test1)
test2_result = test_line(test2)
print(test1_result) # True
print(test2_result) # empty line printed
我见过几个人使用这种代码进行布尔输出
return someString and not partString in someString # "not" is optional
为什么 test2
结果是空行?通过添加 someString
作为参数,与仅使用 partString in someStirng
?
相比,我们得到了什么附加功能
在你第二次使用空字符串调用函数时,你实际上是这样做的
return "" and not "is" in ""
and
表达式由于第一个条件评估为 False
而短路(您不需要两个条件都失败才能使 and
失败)和因此它作为空字符串返回。不会评估第二个布尔条件。
>>> bool("")
False
>>> "" and 1 == 1/0
''
>>> False and 1 == 1/0
False
但是,当您使用非空字符串执行此操作时,布尔表达式的两个部分都会被求值,因此如预期的那样给出异常
>>> bool("b")
True
>>> "b" and 1 == 1/0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
>>> "b" and 1 == 1
True
test1 = "this is test line" # non-empty string
test2 = "" # empty string
def test_line(line):
return line and not "is" in line
test1_result = test_line(test1)
test2_result = test_line(test2)
print(test1_result) # True
print(test2_result) # empty line printed
我见过几个人使用这种代码进行布尔输出
return someString and not partString in someString # "not" is optional
为什么 test2
结果是空行?通过添加 someString
作为参数,与仅使用 partString in someStirng
?
在你第二次使用空字符串调用函数时,你实际上是这样做的
return "" and not "is" in ""
and
表达式由于第一个条件评估为 False
而短路(您不需要两个条件都失败才能使 and
失败)和因此它作为空字符串返回。不会评估第二个布尔条件。
>>> bool("")
False
>>> "" and 1 == 1/0
''
>>> False and 1 == 1/0
False
但是,当您使用非空字符串执行此操作时,布尔表达式的两个部分都会被求值,因此如预期的那样给出异常
>>> bool("b")
True
>>> "b" and 1 == 1/0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
>>> "b" and 1 == 1
True