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

news/2024/10/5 1:01:09 标签: python, 开发语言, 函数

引言

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方法

python">def func(list1):
    list1.append(10)

my_list = [1, 2]
func(my_list)
print(my_list)

输出结果:
在这里插入图片描述

1.2.2 赋值

python">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() 方法是列表对象的一个方法,用于在列表的末尾添加一个新的元素。当使用这个方法时,你实际上是在修改列表对象本身,而不是创建一个新的列表。因为列表是可变的,所以任何引用这个列表的变量都会看到这个变化
例如:

python">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,因为不可变对象的赋值实际上是创建一个新的对象
例如:

python">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() 可以改变外部变量所引用的列表,而赋值操作通常不会改变外部变量所引用的对象的原因

http://www.niftyadmin.cn/n/5690546.html

相关文章

论文笔记:Anytime Continual Learning for Open Vocabulary Classification

1. 挑战/问题 在开放词汇表图像分类中,随着时间的推移,模型需要不断学习新的标签,同时保留对旧标签的记忆。这导致几个挑战: 数据增量学习:模型需要在任意时间点有效地吸收新的训练样本。模型持续改进:模…

Jmeter中有关属性的获取的问题

Jmeter中有3个方法用来获取属性值: props.getProperty(propName), ${__property(propName)} ${__P(propName)} 试验了下,在JSR223 Sampler中使用以上3个方法获取属性值的情况 1. 返回结果如下: 这里看到,在jmeter属性列表里…

职业技术学校开设无人机培训技术详解

职业技术学校开设无人机培训技术,是一个涉及多个方面的综合性教学过程。以下是对该培训技术的详细解析: 一、培训目标 无人机培训技术的目标在于培养学员掌握无人机的基本原理、组装调试、飞行操作、安全规范及维修保养等技能,使其成为具备…

平面电磁波(解麦克斯韦方程)电场相位是复数的积分常数,电场矢量每个分量都有一个相位。磁场相位和电场一样,这是因为无损介质中实数的波阻抗

注意无源代表你立方程那个点xyzt处没有源,电场磁场也是这个点的。 j电流面密度,电流除以单位面积,ρ电荷体密度,电荷除以单位体积。 j方程组有16个未知数,每个矢量有三个xyz分量,即三个未知数,…

GEE APP应用:谷歌地球引擎实现 BioNet 算法,利用机器学习量化高分辨率生物物理变量检索中的不确定性

目录 简介 流程图 APP应用链接 代码介绍 代码1 代码2 代码3 引用 简介 谷歌地球引擎实现BioNet 算法,用于估算生物物理参数及其不确定性 利用机器学习量化高分辨率生物物理变量检索中的不确定性 生物物理变量的估算是遥感科学的核心,可以对作物和森林进行密切监测…

FWA(固定无线接入),CPE(客户终端设备)简介

文章目录 FWA(Fixed Wireless Access),固定无线接入CPE(Customer Premise Equipment),用户驻地设备 FWA(Fixed Wireless Access),固定无线接入 固定无线接入&#xff08…

二叉树的广度优先和深度优先遍历

二叉树:一棵树,每个节点最多有两个子节点,通常称为左子节点和右子节点。 在计算机科学中,二叉树是一种非常重要的数据结构,广泛应用于各种场景,比如文件系统的组织、数据库的索引结构、表达式树的构建等。…

【C#生态园】提升开发效率:深度剖析C#开发中不可或缺的工具和库

容器化时代:Kubernetes、Docker Swarm和C#开发库全面解析 前言 随着现代软件开发中容器化和微服务架构的普及,容器编排平台和相关的开发库变得越来越重要。本文将介绍一些流行的容器编排平台和相关的C#开发库,并重点关注它们的核心功能、使…