在 Python 中,or 运算符不仅可以用来进行逻辑运算,还可以用于简化某些条件赋值操作。特别是当你想要在某个变量为空值(如 None''0 等)时,赋予它一个默认值。这种用法被称为“短路”赋值,因为它利用了 or 运算符的短路特性:如果第一个操作数为真值,or 运算符会返回第一个操作数;否则,它会返回第二个操作数。

示例 1:基本用法

假设你有一个变量 a,你希望它的值为自己或者一个默认值 b(如果 a 是空值)。

a = None
b = 10

result = a or b
print(result)  # 输出: 10
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

在这个示例中,由于 aNonea or b 表达式的结果是 b,即 10

示例 2:在函数参数中的使用

or 运算符常用于函数参数默认值的设置。如果传递的参数为空,可以使用默认值。

def greet(name=None):
    name = name or "Guest"
    print(f"Hello, {name}!")

greet("Alice")  # 输出: Hello, Alice!
greet()         # 输出: Hello, Guest!
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

在这个函数中,如果 nameNone 或其他假值,name 会被赋值为 "Guest"

示例 3:结合多个条件

你可以结合多个条件使用 or 运算符,从多个变量中选择第一个真值。

x = None
y = ""
z = "Hello"

result = x or y or z
print(result)  # 输出: Hello
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

在这个示例中,xy 都是假值,所以 or 运算符最终返回 z 的值 "Hello"

示例 4:在列表或字典中的使用

这种用法也可以在列表或字典的初始化过程中使用。

data = None
default_data = [1, 2, 3]

result = data or default_data
print(result)  # 输出: [1, 2, 3]
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
config = {}
default_config = {"key": "value"}

result = config or default_config
print(result)  # 输出: {'key': 'value'}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

注意事项

  1. 短路特性or 运算符的短路特性意味着如果第一个操作数为真,第二个操作数不会被评估。因此,当使用复杂表达式时,要小心副作用。
  2. 假值:Python 中的假值包括 NoneFalse0、空字符串 ''、空列表 []、空元组 ()、空字典 {} 和空集合 set() 等。如果这些值作为 or 运算符的第一个操作数,它们会被视为假值。