【python实操】python小程序之函数的方法和赋值的区别

引言

python小程序之函数的方法和赋值

一、函数的方法和赋值

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 的内容

  1. def func(list1)::这行代码定义了一个名为 func 的函数,它有一个参数 list1
  2. list1.append(10):在 func 函数内部,这行代码调用了列表对象 list1append 方法,将整数 10 添加到列表的末尾
  3. my_list = [1, 2]:这行代码创建了一个新的列表 my_list,并初始化为包含两个元素 [1, 2]
  4. func(my_list):这行代码调用了 func 函数,并将 my_list 作为参数传递。由于列表是可变对象,func 函数中对 list1 的任何修改都会反映在原始的 my_list
  5. print(my_list):这行代码打印出 my_list 的当前内容。由于在 func 函数中向 my_list 添加了一个元素 10,因此打印的结果将是 [1, 2, 10],这表明 func 函数成功地修改了 my_list,向其添加了一个新的元素

1.3.2 赋值

这段代码定义了一个函数func,该函数接收一个列表作为参数,并在函数内部修改这个参数。然后,代码创建了一个列表my_list,并调用了func函数,最后打印出my_list的值

  1. def func(list1)::定义了一个名为func的函数,它有一个参数list1
  2. list1 = [2, 1]:在函数内部,将参数list1的值重新赋为一个新的列表[2, 1]。这是一个局部变量赋值操作,它不会影响函数外部的任何变量
  3. my_list = [1, 2]:在函数外部,初始化一个列表my_list,其值为[1, 2]
  4. func(my_list):调用函数func,并将my_list作为参数传递给它
  5. func函数内部,参数list1被重新赋值为[2, 1],但这不会改变函数外部的my_list变量。因为函数参数在Python中是通过引用传递的,但在这个函数内部,参数list1被重新赋值,这相当于在函数内部创建了一个新的局部变量,它与外部的my_list不再有关联
  6. 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_listanother_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() 可以改变外部变量所引用的列表,而赋值操作通常不会改变外部变量所引用的对象的原因
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值