Python 传递参数

Python 传递参数在Python中,传递参数指的是函数或方法中的参数传输方式。Python中的参数传递有两种方式,分别为“传值调用”和“传引用调用”。

一、基本概念

在Python中,传递参数指的是函数或方法中的参数传输方式。Python中的参数传递有两种方式,分别为“传值调用”和“传引用调用”。

所谓“传值调用”,是指在传参时,将原始变量的值复制一份传入函数中参与运算操作。传值调用不会改变原始变量的值,在函数内部改变参数的值,不会对原始变量造成影响。而所谓“传引用调用”,则是在传参时,将原始变量的引用地址传给函数,在函数内部改变参数的值,会对原始变量造成影响。

在Python中,函数和方法的参数传递默认采用“传值调用”方式。

二、传值调用

在Python中,传值调用又分为对不可变对象(如:数字、字符串、元组)和可变对象(如:列表、字典)进行传参,不同类型的对象传参方式也有所不同。

1、对不可变对象进行传参

不可变对象的值一旦赋值就无法改变,因此将其传递给函数时,只是将其值复制一份传递给函数。在函数内部对参数进行修改不会对原始变量造成影响。


def change_number(num):
    num += 10
  
number = 10  # 定义一个变量
change_number(number)  # 调用函数
print(number)  # 输出结果为10

上述代码将数字类型的变量number传递给change_number()函数中,在函数内部对num进行加10操作,但是并不会对原始变量number造成影响。

2、对可变对象进行传参

而对于可变对象的传参,则与不可变对象不同,将其传递给函数时,传递的是原始对象的引用地址,即传递的是对象的指针,这意味着对其进行操作时会对原始变量造成影响。


def change_list(alist):
    alist.append(4)
  
list1 = [1, 2, 3]  # 定义一个列表
change_list(list1)  # 调用函数
print(list1)  # 输出结果为 [1, 2, 3, 4]

上述代码将列表类型的变量list1传递给change_list()函数中,函数在内部对list1进行了操作,结果会对原始变量造成影响,最终输出的结果为[1, 2, 3, 4]。

三、传引用调用

在Python中,使用特定的方式来实现传引用调用,通过使用import引入copy模块,在函数内部对参数进行修改时,不会对原始变量造成影响。


import copy

def change_dict(adict):
    adict["name"] = "Tom"

dict1 = {"name":"Jack", "age":21}  # 定义一个字典
dict2 = copy.copy(dict1)  # 使用copy模块拷贝一个字典
change_dict(dict2)  # 调用函数
print(dict1)  # 输出结果为 {"name":"Jack", "age":21}
print(dict2)  # 输出结果为 {"name":"Tom", "age":21}

上述代码引入了copy模块,并使用copy()函数对字典进行拷贝,将字典dict1拷贝给字典dict2。然后将字典dict2传递给change_dict()函数中,函数内对字典dict2进行了修改,但是原始字典dict1并没有受到影响,输出的结果也能够证明这点。

四、总结:

Python中,参数传递可以使用“传值调用”和“传引用调用”两种方式,对于不可变对象的传参,使用“传值调用”的方式,并且不会对原始变量造成影响;对于可变对象的传参,则使用“传引用调用”的方式,并且对原始变量造成影响。在Python中,如果需要在函数内部修改某个对象的值,可以在函数内部先使用copy()函数对其进行拷贝,这样就能够保证函数内部修改的对象不会对原始变量造成影响。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/21012.html

(0)
上一篇 2024-05-12
下一篇 2024-05-12

相关推荐

  • mysql水平拆分_MySQL多表查询

    mysql水平拆分_MySQL多表查询一、背景 老大安排要对某张大容量表进行分割,根据年份分割成多张表。 二、水平分割 水平拆分是指数据表行的拆分,表的行数超过百万行时,就会变慢,这时可以把一张的表的数据拆成多张表来存放。 定义规则分表后

    2022-12-26
    154
  • HMS核心服务让应用更智慧

    HMS核心服务让应用更智慧     华为新款旗舰机P40系列全面搭载HMS核心服务为用户带来更智能的应用。作为P40的用户,我想和大家分享一下硬核的HMS核心服务,它为华为P40系列手机用户提供多项基础服务,而HMS核心服务…

    2023-02-21
    148
  • Redis内存_redis内存管理

    Redis内存_redis内存管理Redis内存消耗:自身内存 + 对象内存 + 缓冲内存 + 内存碎片 自身内存:Redis进程自身内存占用量很小,大约在3.8M左右。 对象内存:sizeof(keys) + sizeof(val…

    2023-04-01
    155
  • [学习笔记] Oracle字符串函数、日期函数、数值函数、转换函数、聚合函数

    [学习笔记] Oracle字符串函数、日期函数、数值函数、转换函数、聚合函数函数 单行函数:对一行数据进行操作的函数,如字符串函数、数值函数、转换函数、日期函数等。 聚合函数:同时对多行数据进行操作,如求和函数等。 字符串函数 | 函数 | 说明 | | | | | ASCI

    2023-02-06
    144
  • 深入理解Python中的map()函数

    深入理解Python中的map()函数Python中的map()函数是一种非常强大的函数,它可以作为列表、元组、字典等可迭代对象的内置函数。它接受一个函数和一个可迭代对象作为参数,然后将函数应用到可迭代对象中的每个元素,并返回一个包含结果的迭代器。map()函数是函数式编程的一个核心概念,具有简单、灵活、高效等优点。

    2024-08-19
    20
  • 50个SQL语句(MySQL版) 问题二十二[亲测有效]

    50个SQL语句(MySQL版) 问题二十二[亲测有效]表结构 student(StuId,StuName,StuAge,StuSex) 学生表 teacher(TId,Tname) 教师表 course(CId,Cname,C_TId) 课程表 sc(S

    2023-03-07
    145
  • mysql中int、bigint、smallint和tinyint的区别与长度[通俗易懂]

    mysql中int、bigint、smallint和tinyint的区别与长度[通俗易懂]对比发现 int bigint smallint 和 tinyint
    类型,如果创建新表时没有指定 int(M) 中的M时,默认分别是 :int ——- int(11)bigint –…

    2023-05-21
    138
  • 使用 Python 输入整数的方法

    使用 Python 输入整数的方法计算机科学的许多应用需要输入整数,Python 中有多种方法可以输入整数。在本篇文章中,我们将介绍 Python 中输入整数的方法,并提供代码示例,帮助读者更好地理解。

    2024-07-21
    32

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注