📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)
📝 职场经验干货:
一、什么是不可变对象?
Python 中常见的 不可变对象 包括:
int
float
bool
str
tuple
frozenset
这些对象一旦创建,就不能被修改。
🔁 二、不可变对象作为函数参数的行为
当不可变对象作为参数传入函数时,函数内部对该参数的“修改”不会影响外部变量,因为:
函数内部操作的是原始值的副本(实际上是重新绑定变量名到新对象)。
✅ 示例 1:整数作为参数
def change_number(x):
print("函数内修改前 x:", x, id(x))
x += 10
print("函数内修改后 x:", x, id(x))
a = 5
print("调用前 a:", a, id(a))
change_number(a)
print("调用后 a:", a, id(a))
输出:
调用前 a: 5 140735682296864
函数内修改前 x: 5 140735682296864
函数内修改后 x: 15 140735682297216
调用后 a: 5 140735682296864
📌 说明:
x += 10 实际是创建了一个新的整数对象 15。
外部变量 a 的值没有变化。
✅ 示例 2:字符串作为参数
def modify_string(s):
s += " World"
print("函数内的 s:", s)
text = "Hello"
modify_string(text)
print("函数外的 text:", text)
输出:
函数内的 s: Hello World
函数外的 text: Hello
📌 说明:
字符串是不可变的,s += " World" 创建了新的字符串对象。
外部变量 text 没有被修改。
✅ 示例 3:元组作为参数(虽然是容器,但内容不可变)
def modify_tuple(t):
# t[0] = 99 # ❌ 报错!不能修改元组中的元素
t = (99, 100) # 可以重新赋值给局部变量 t
print("函数内的 t:", t)
tpl = (1, 2, 3)
modify_tuple(tpl)
print("函数外的 tpl:", tpl)
输出:
函数内的 t: (99, 100)
函数外的 tpl: (1, 2, 3)
📌 说明:
元组本身是不可变的,不能修改其中的元素。
函数内对 t 的赋值只是改变了局部变量指向的对象。
📌 三、总结:不可变对象作为参数的特点
🧩 四、对比:可变对象 vs 不可变对象
💡 五、实际应用建议
函数设计原则:
如果不希望函数修改外部变量,使用不可变对象作为参数。
如果需要修改外部数据结构,使用可变对象(如列表或字典)。
避免副作用:
避免在函数内部意外修改外部状态,使用不可变对象可以增强代码安全性。
最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】