引言
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
的函数,它有一个参数list1
list1.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
的函数,它有一个参数list1
list1 = [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()
可以改变外部变量所引用的列表,而赋值操作通常不会改变外部变量所引用的对象的原因