6.1 变量是引用
在 Python 中,变量是对象的引用,而不是变量本身。这意味着,当你在 Python 中创建一个变量时,你只是创建了一个指向内存中对象的引用。
这种语言特性对变量操作有重要影响,特别是当对象传递给函数或者它们分配给其他变量时。
当你创建一个变量并赋值时,Python 会为该值在内存中分配一个对象,并使变量成为该对象的引用。如果你将一个变量赋值给另一个变量, 新变量将引用与原变量相同的对象。这意味着,如果对象是可变的,通过一个变量所做的更改也会影响另一个变量。
示例:
a = [1, 2, 3]
b = a
b.append(4)
print(a) # 输出: [1, 2, 3, 4]
我们向变量 b
添加了数字 4
,但是它也被添加到了变量 a
的列表中,因为实际上两个变量都只是指向对象列表 [1, 2, 3] 的引用。
6.2 不可变对象
在 Python 中,对象被分为可变和不可变。可变对象,如列表和字典,可以在创建后修改。
不可变对象,如字符串和数字,在创建后不能被修改。当你处理不可变对象时,修改会导致创建一个新对象:
赋值不会改变对象:
a = 5 # a 保存对对象 5 的引用
b = a # b 也保存对对象 5 的引用
b = 3 # 现在 b 保存对对象 3 的引用
print(a) # 输出: 5
对象可以通过调用其函数进行修改:
a = [1, 2, 3]
b = a
b.append(4)
print(a) # 输出: [1, 2, 3, 4]
但是,有些不可变对象有函数。这些函数不会改变原始对象,而是返回一个包含新结果的新对象:
name = "Alex"
print(name) # 输出: Alex
name2 = name.lower()
print(name2) # 输出: alex
字符串是不可变的对象。尽管它们有方法,这些方法从不改变字符串对象,而是始终返回一个新字符串(新对象)。旧对象保持不变。
6.3 操作 None 类型
在 Python 中,有一种特殊的数据类型用于表示值的缺失——None
。它用于表示空变量或作为不返回任何值的函数的返回值。理解 None 对于管理程序的行为尤其重要,特别是在条件操作符和数据操作中。
None 的基础使用
None
是类 NoneType
的唯一实例。它用于指示变量没有值。在条件语句中,None
被评估为假的 (False
)。
a = None
if a:
print("a 是 True")
else:
print("a 是 None 或 False")
与 None 的比较
检查变量是否为 None 应使用 is 操作符
,而不是 ==。操作符 is
检查的是身份,而不是值的相等性。
a = None
if a is None:
print("a 是 None")
else:
print("a 有值")
None 在函数中
None
常用于不需要显式返回值的函数。如果函数没有返回值,它会隐式返回 None
。
def func():
print("这个函数返回 None")
result = func()
print(result) # 输出: None
None 和列表
None
可以在列表、元组或其他集合中使用,以指示某个位置上缺少元素。
my_list = [1, None, 3]
print(my_list) # 输出: [1, None, 3]
GO TO FULL VERSION