引言
python小程序之函数的方法和赋值
文章目录
- 引言
- 一、函数的方法和赋值
- 1.1 题目
- 1.2 代码
- 1.2.1 append方法
- 1.2.2 赋值
- 1.3 代码解释
- 1.3.1 append方法
- 1.3.2 赋值
- 二、思考
- 2.1 append方法和赋值的区别
- 2.1.1 append方法
- 2.1.2 赋值操作
- 2.1.3 总结
一、函数的方法和赋值
1.1 题目
在函数内用append方法和赋值的区别
1.2 代码
1.2.1 append方法
def func(list1):
list1.append(10)
my_list = [1, 2]
func(my_list)
print(my_list)
输出结果:

1.2.2 赋值
def func(list1):
list1 = [2, 1]
my_list = [1, 2]
func(my_list)
print(my_list)
输出结果:

1.3 代码解释
1.3.1 append方法
这段代码定义了一个名为
func的函数,该函数接收一个列表参数list1,并在该列表的末尾添加一个整数10。然后代码创建了一个名为my_list的列表,并调用了func函数,将my_list作为参数传递。最后,代码打印出my_list的内容
def func(list1)::这行代码定义了一个名为func的函数,它有一个参数list1list1.append(10):在func函数内部,这行代码调用了列表对象list1的append方法,将整数10添加到列表的末尾my_list = [1, 2]:这行代码创建了一个新的列表my_list,并初始化为包含两个元素[1, 2]func(my_list):这行代码调用了func函数,并将my_list作为参数传递。由于列表是可变对象,func函数中对list1的任何修改都会反映在原始的my_list上print(my_list):这行代码打印出my_list的当前内容。由于在func函数中向my_list添加了一个元素10,因此打印的结果将是[1, 2, 10],这表明func函数成功地修改了my_list,向其添加了一个新的元素
1.3.2 赋值
这段代码定义了一个函数
func,该函数接收一个列表作为参数,并在函数内部修改这个参数。然后,代码创建了一个列表my_list,并调用了func函数,最后打印出my_list的值
def func(list1)::定义了一个名为func的函数,它有一个参数list1list1 = [2, 1]:在函数内部,将参数list1的值重新赋为一个新的列表[2, 1]。这是一个局部变量赋值操作,它不会影响函数外部的任何变量my_list = [1, 2]:在函数外部,初始化一个列表my_list,其值为[1, 2]func(my_list):调用函数func,并将my_list作为参数传递给它- 在
func函数内部,参数list1被重新赋值为[2, 1],但这不会改变函数外部的my_list变量。因为函数参数在Python中是通过引用传递的,但在这个函数内部,参数list1被重新赋值,这相当于在函数内部创建了一个新的局部变量,它与外部的my_list不再有关联 print(my_list):打印出my_list的值。由于函数内部的赋值操作没有改变外部列表,所以输出仍然是[1, 2],表明my_list的值没有被func函数改变。这是因为函数内部对参数的赋值操作仅限于函数的局部作用域
二、思考
2.1 append方法和赋值的区别
.append() 方法可以改变外部变量所引用的可变对象(如列表),而赋值操作通常不会改变外部变量引用的对象
2.1.1 append方法
.append() 方法是列表对象的一个方法,用于在列表的末尾添加一个新的元素。当使用这个方法时,你实际上是在修改列表对象本身,而不是创建一个新的列表。因为列表是可变的,所以任何引用这个列表的变量都会看到这个变化
例如:
my_list = [1, 2, 3]
another_ref = my_list
another_ref.append(4)
print(my_list) # 输出 [1, 2, 3, 4]
在这个例子中,my_list 和 another_ref 都引用同一个列表对象。当通过 another_ref 调用 .append() 方法时,实际上是在修改这个列表对象,所以 my_list 也会反映出这个变化
2.1.2 赋值操作
赋值操作,如 a = b,是将变量 a 设置为引用变量 b 所引用的对象。如果 b 引用的是不可变对象(如整数、字符串、元组等),则 a = new_value 不会影响 b,因为不可变对象的赋值实际上是创建一个新的对象
例如:
a = [1, 2, 3]
b = a
b = [4, 5, 6]
print(a) # 输出 [1, 2, 3]
在这个例子中,b 最初引用了 a 所引用的列表。然而,当 b 被赋予一个新的列表 [4, 5, 6] 时,b 开始引用一个全新的列表对象,而 a 仍然引用原始的列表 [1, 2, 3]。赋值操作没有修改原始列表,而是改变了 b 的引用
2.1.3 总结
.append()方法修改了原始对象(在这种情况下是列表),所以所有引用该对象的变量都会看到变化- 赋值操作会改变变量所引用的对象,但它不会修改原始对象。如果赋值的是不可变对象,那么原始对象保持不变;如果赋值的是可变对象,那么原始对象不会被修改,而是变量引用了新的对象
这就是为什么.append()可以改变外部变量所引用的列表,而赋值操作通常不会改变外部变量所引用的对象的原因



















