Python可通过if语句来实现三目运算符的功能,因此可以近似地把这种if语句当成三目运算符。作为三目运算符的f语句的语法格式如下
True_statements if expression else False_statements
三目运算符的规则是:先对逻辑表达式expression求值,如果逻辑表达式返回True,则执行并返回True statements的值;如果逻辑表达式返回 False,则执行并返回False statements的值。看如下代码。
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/01
# @Author : Laopi
a = 7
b = 4
c = "a大于b" if a > b else "a不大于b"
# 输出"a大于b"
print(c)
实际上,如果只是为了在控制台输出提示信息,还可以将上面的三目运算符表达式改为如下形式(程序清单同上)。
# 输出"a大于b"
print("a大于b") if a > b else print("a不大于b")
Python允许在三目运算符的True statements或False statements中放置多条语句。Python主要支持两种放置方式。
1)多条语句以英文逗号隔开:每条语句都会执行,程序返回多条语句的返回值组成的元组.
2)多条语句以英文分号隔开:每条语句都会执行,程序只返回第一条语句的返回值。
#第一种返回值部分使用两条语句,用逗号隔开
d = print('测试划水老师傅'),'a大于b' if a>b else 'a不大于b'
print(d) #(None, 'a大于b')
上面程序中True statements为print('测试划水老师傅'),a大于b这两条语句都会执行,程序将会返回这两条语句的返回值组成的元组。由于 print()函数没有返回值组成的元组,由于print()函数没有返回值,相当于它的返回值是 None。运行上面代码,将看到如下结果。
#第一个返回值部分使用两条语句,用分号隔开
d = print('测试划水老师傅');x ='a大于b' if a>b else 'a不大于b'
print(d) #(None, 'a大于b')
print(x)
此时虽然Truestatements包含两条语句,但程序只会返回第一条语句print('测试划水老师傅')的返回值,该语句同样返回None,因此相当于str 的返回值为None。运行上面代码,将看到如下结果。
需要指出的是,三目运算符支持嵌套,通过嵌套三目运算符,可以执行更复杂的判断。例如,
下面代码需要判断c、d两个变量的大小关系:
#下面将输出“e=f”
print("e大于f") if e>f else (print("e小于f") if e<f else print("e等于f"))
上面代码首先对e>f求值,如果该表达式为True,程序将会执行并返回第一个表达式:print("e大于f");否则系统将会计算else后面的内容:(print("e小于f") if e<f else print("e等于f")),这个表达式又是一个嵌套的三目运算符表达式一注意,进入该表达式时只剩下"e小于f"或"e等于f"两种情况,因此该三目运算符再次判断e<f,如果该表达式为 True,将会输出"e小于f"否则只剩下"e等于f"一种情况,自然就输出该字符串了。