在阅读Pytorch的官方文档时,突然看到这个代码,一时之间没反应过来。仔细看是个嵌套的三元运算符。
# Get cpu, gpu or mps device for training.
device = (
"cuda"
if torch.cuda.is_available()
else "mps"
if torch.backends.mps.is_available()
else "cpu"
)
print(f"Using {device} device")
上面代码先使用 torch.cuda.is_available()
函数来判断当前计算机是否支持 CUDA(即是否有可用的 GPU 设备)。如果支持 CUDA,则将设备类型设置为 "cuda",否则继续判断是否支持 MPS,如果支持 MPS,则将设备类型设置为 "mps",否则将设备类型设置为 "cpu"
下面梳理下三元运算符,加深下印象。
三元运算符是一种简化代码的语法结构,它可以用于在一行代码中进行简单的条件判断,其语法格式如下:condition
是一个布尔表达式,如果为 True,则返回 a
的值,否则返回 b
的值。这种语法结构也被称为条件表达式。
a if condition else b
示例代码:
x = 10
y = 20
max_value = x if x > y else y
print(max_value)
三元运算符的其他用法
- 返回函数值
可以使用三元运算符在一行代码中返回函数的值。例如:
def get_max(a, b):
return a if a > b else b
print(get_max(10, 20)) # 输出 20
- 列表推导式
可以使用三元运算符在列表推导式中进行条件筛选。例如:
numbers = [1, 2, 3, 4, 5]
even_numbers = [x for x in numbers if x % 2 == 0]
odd_numbers = [x for x in numbers if x % 2 != 0]