知行编程网知行编程网  2022-09-16 03:30 知行编程网 隐藏边栏  72 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于Python三目运算符(三元运算符)用法详解的相关知识,包括位运算符的用法,以及双目运算符与单目运算符这些编程知识,希望对大家有参考作用。

Python 三元运算符(ternary operator)的用法详解

Python可以通过if语句来实现三元运算符的功能,所以这个if语句可以近似地看成是一个三元运算符。 if 语句作为三元运算符的语法如下:

True_statements if expression else False_statements

三目运算符的规则是:先对逻辑表达式 expression 求值,如果逻辑表达式返回 True,则执行并返回 True_statements 的值;如果逻辑表达式返回 False,则执行并返回 False_statements 的值。看如下代码:

a = 5
b = 3
st = "a大于b" if a > b else  "a不大于b"
# 输出"a大于b"
print(st)

实际上,如果只是为了在控制台输出提示信息,还可以将上面的三目运算符表达式改为如下形式:

# 输出"a大于b"
print("a大于b") if a > b else print("a不大于b")

Python 允许在三元运算符的 True_statements 或 False_statements 中放置多个语句。 Python主要支持以下两种放置方式:

多条语句用逗号分隔:每条语句都被执行,程序返回一个由多条语句的返回值组成的元组。

多条语句用英文分号隔开:每条语句都会被执行,程序只返回第一条语句的返回值。

先看第一种情形,使用如下代码:

# 第一个返回值部分使用两条语句,逗号隔开
st = print("crazyit"), 'a大于b' if a > b else  "a不大于b"
print(st)

上述程序中,True_statements为print("crazyit"),'a大于b',这两条语句都会被执行,程序会返回一个由这两条语句的返回值组成的元组。由于 print() 函数没有返回值,所以相当于它的返回值为 None。运行上面的代码,你会看到如下结果:

crazyit
(None,'a大于b')

如果将上面语句中的逗号改为分号,将逗号之后的语句改为赋值语句,即写成如下形式:

# 第一个返回值部分使用两条语句,分号隔开
st = print("crazyit"); x = 20 if a > b else  "a不大于b"
print(st)
print(x)

此时,虽然True_statements包含两条语句,但程序只会返回第一个语句print("crazyit")的返回值,同样返回None,所以str的返回值相当于None。运行上面的代码,你会看到如下结果:

crazyit
None
20


需要指出的是,三目运算符支持嵌套,通过嵌套三目运算符,可以执行更复杂的判断。例如,下面代码需要判断 c、d 两个变量的大小关系:

c = 5
d = 5
# 下面将输出c等于d
print("c大于d") if c > d else (print("c小于d") if c < d else print("c等于d"))

上面的代码首先计算 c>d。如果表达式为 True,程序将执行并返回第一个表达式: print("c is greater than d");否则,系统将计算 else 之后的内容: (print ("c is less than d") if c < d else print("c is equal to d")),这个表达式又是一个嵌套的三元运算符表达式。注意,输入表达式时,只剩下两种情况:“c 小于 d”或“c 等于 d”,因此三元运算符再次判断 c<d。如果表达式为True,则输出“c is less than d”;否则只有“c等于d”的一种情况,自然输出字符串。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享