iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python参数的传递
  • 407
分享到

Python参数的传递

java开发语言 2023-09-10 16:09:08 407人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

一、参数的传递  函数的参数传递本质上就是:从实参到形参的赋值操作。python中“一切皆对象”,所有的赋值操作都是“引用的赋值”。所以,Python中参数的传递都是“引用传递”,不是“值传递”。 具体操作时分为两类: 对“可变对象”进行

一、参数的传递 

函数的参数传递本质上就是:从实参到形参的赋值操作。python中“一切皆对象”,所有的赋值操作都是“引用的赋值”。所以,Python中参数的传递都是“引用传递”,不是“值传递”。

具体操作时分为两类:

  1. 对“可变对象”进行“写操作”,直接作用于原对象本身。
  2. 对“不可变对象”进行“写操作”,会产生一个新的“对象空间”,并用新的值填充这块空间。
  • 可变对象有:

字典、列表、集合、自定义的对象等

  • 不可变对象有:

数字、字符串、元组、function等

二、传递可变对象的引用

传递参数是可变对象(例如:列表、字典、自定义的其他可变对象等),实际传递的还是对象的引用。在函数体中不创建新的对象拷贝,而是可以直接修改所传递的对象。

【操作】参数传递:传递可变对象的引用

b = [10,20]def f2(m):  print("m:",id(m))    #b和m是同一个对象  m.append(30)  #由于m是可变对象,不创建对象拷贝,直接修改这个对象​f2(b)print("b:",id(b))print(b)

执行结果:

m: 45765960

b: 45765960

[10, 20, 30]

三、传递不可变对象的引用

传递参数是不可变对象(例如:intfloat、字符串、元组、布尔值),实际传递的还是对象的引用。在”赋值操作”时,由于不可变对象无法修改,系统会新创建一个对象。

【操作】参数传递:传递不可变对象的引用

a = 100def f1(n):  print("n:",id(n))    #传递进来的是a对象的地址  n = n+200      #由于a是不可变对象,因此创建新的对象n  print("n:",id(n))  #n已经变成了新的对象  print(n)f1(a)print("a:",id(a))

执行结果:

n: 1663816464

n: 46608592

300

a: 1663816464

显然,通过id值我们可以看到na一开始是同一个对象。给n赋值后,n是新的对象。

四、浅拷贝和深拷贝

为了更深入的了解参数传递的底层原理,我们需要讲解一下“浅拷贝和深拷贝”。我们可以使用内置函数:copy(浅拷贝)、deepcopy(深拷贝)。

  1. 浅拷贝:拷贝对象,但不拷贝子对象的内容,只是拷贝子对象的引用。
  2. 深拷贝:拷贝对象,并且会连子对象的内存也全部(递归)拷贝一份,对子对象的修改不会影响源对象
#测试浅拷贝和深拷贝import copy​def testCopy():  '''测试浅拷贝'''  a = [10, 20, [5, 6]]  b = copy.copy(a)​  print("a", a)  print("b", b)  b.append(30)  b[2].append(7)  print("浅拷贝......")  print("a", a)  print("b", b)​def testDeepCopy():  '''测试深拷贝'''  a = [10, 20, [5, 6]]  b = copy.deepcopy(a)​  print("a", a)  print("b", b)  b.append(30)  b[2].append(7)  print("深拷贝......")  print("a", a)  print("b", b)​testCopy()print("*************")testDeepCopy()

运行结果:

a [10, 20, [5, 6]]

b [10, 20, [5, 6]]

浅拷贝......

a [10, 20, [5, 6, 7]]

b [10, 20, [5, 6, 7], 30]


a [10, 20, [5, 6]]

b [10, 20, [5, 6]]

深拷贝......

a [10, 20, [5, 6]]

b [10, 20, [5, 6, 7], 30]

 五、传递不可变对象包含的子对象是可变的情况

#传递不可变对象时。不可变对象里面包含的子对象是可变的。则方法内修改了这个可变对象,源对象也发生了变化。​a = (10,20,[5,6])print("a:",id(a))​def test01(m):  print("m:",id(m))  m[2][0] = 888  print(m)  print("m:",id(m))​test01(a)print(a)

运行结果:

a: 41611632

m: 41611632

(10, 20, [888, 6])

m: 41611632

(10, 20, [888, 6])

来源地址:https://blog.csdn.net/Calor13/article/details/130693052

--结束END--

本文标题: Python参数的传递

本文链接: https://www.lsjlt.com/news/402466.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python参数的传递
    一、参数的传递  函数的参数传递本质上就是:从实参到形参的赋值操作。Python中“一切皆对象”,所有的赋值操作都是“引用的赋值”。所以,Python中参数的传递都是“引用传递”,不是“值传递”。 具体操作时分为两类: 对“可变对象”进行...
    99+
    2023-09-10
    java 开发语言
  • php函数间的参数传递(值传递/引用传递)
    php:函数间的参数传递 1.值传递 复制代码 代码如下: <php function exam($var1){ $var1++; echo "In Exam:" . $var...
    99+
    2022-11-15
    php函数 参数传递
  • Python 函数作为参数传递
    #map()的功能是将函数对象依次作用于表的每一个元素,每次作用的结果储存于返回的表re中。 #map通过读入的函数(这里是lambda函数)来操作...
    99+
    2023-01-31
    函数 参数 Python
  • python list 参数传递方式
    定义一个方法,接收一个 id参数和一个 list 参数 def test(id, ids=[]): if id: ids.append(id) print ids test(id=1) test(...
    99+
    2023-01-31
    参数 方式 python
  • 向python脚本传递参数
    import sysprint sys.argv[0]sys.argv[0]是python脚本的名字;下面的例子是一个用来提取文本log.txt中含有匹配字符串的文本行,匹配字符串的字符串当作参数传递给python脚本。#!/usr/bin...
    99+
    2023-01-31
    脚本 参数 python
  • Python函数参数传递机制
            最近在写代码的过程中,发现Python参数传递不是很明白。Python确实很灵活,但是灵活的后果就是要花更多的时间去研究。废话不多说,始めましょう!!!Python参数传递有一下几种方式:1:位置参数Fun(arg1,arg...
    99+
    2023-01-31
    函数 机制 参数
  • java 的参数传递
    一、疑惑引入 首先,我们从一个例子来引出这个问题: public static void main(String[] args) throws IOException { List mockList = Lists.newArrayL...
    99+
    2023-12-23
    java 开发语言
  • Python中的函数参数传递问题
    目录一、前言二、了解形式参数和实际参数1.通过作用理解2.通过比喻来理解形参和实参三、位置参数1.数量必须与定义时一致2.位置必须与定义时一致四、关键字参数五、为参数设置默认值六、可...
    99+
    2023-01-04
    Python函数参数传递 Python函数 Python参数传递
  • python如何传递函数中的参数
    在python中传递函数参数的方法有以下几种使用function(**kwargs)方法传参def func(**kwargs):print kwargsfunc(a = 1, b = 2, c = 3)输出为:{'a':1, 'b':2,...
    99+
    2024-04-02
  • Python中怎么传递函数参数
    今天就跟大家聊聊有关Python中怎么传递函数参数,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。函数参数的使用又有俩个方面值得注意:>>> def&nbs...
    99+
    2023-06-17
  • SpringMVC五种类型参数传递及json传递参数
    目录案例分析:1.pom.xml2.ServletContainersInitConfig3.SpringMvcConfig4.UserController5.Address6.Us...
    99+
    2024-04-02
  • Python、SQLAlchemy 在 connection.execute 中传递参数
    在使用SQLAlchemy的`connection.execute()`方法执行SQL语句时,可以通过参数绑定的方式传递参数。以下是...
    99+
    2023-09-27
    Python
  • Python函数值传递引用传递及形式参数和实际参数的区别
    通常情况下,定义函数时都会选择有参数的函数形式,函数参数的作用是传递数据给函数,令其对接收的数据做具体的操作处理。 在使用函数时,经常会用到形式参数(简称“形参&rdqu...
    99+
    2024-04-02
  • Python中函数参数如何传递
    这篇文章主要介绍了Python中函数参数如何传递,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。函数参数如何传递key-value方式传递参数:下面是非常常见的传递方式,参数名...
    99+
    2023-06-25
  • golang函数的参数传递
    Go 函数的参数传递 在 Go 中,函数通过值传递或引用传递传递参数。了解这两种传递方式之间的差异对于优化代码性能和避免意外行为至关重要。 值传递 当以值传递方式传递参数时,函数会收到...
    99+
    2024-04-20
    函数 参数传递 golang
  • python传递参数的方式有哪些
    在Python中,有以下几种方式可以传递参数:1. 位置参数:按照参数顺序传递,参数的位置和数量必须与函数定义中的参数一致。```p...
    99+
    2023-09-27
    python
  • java 函数的参数传递
    The Java programming language always uses call by value. That means that the method gets a copy of all parameter values....
    99+
    2023-06-03
  • python函数的四种参数传递方式
    python中函数传递参数有四种形式 fun1(a,b,c) fun2(a=1,b=2,c=3) fun3(*args) fun4(**kargs) 四种中最常见是前两种,基本上一般点的教程都会涉及,后两种一般...
    99+
    2023-01-30
    四种 函数 参数
  • Python函数值传递、引用传递、形式参数和实际参数的区别是什么
    本篇内容主要讲解“Python函数值传递、引用传递、形式参数和实际参数的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python函数值传递、引用传递、形式参数和实际参数的区别是什么”...
    99+
    2023-06-30
  • python参数怎么传递默认值
    这篇文章主要为大家展示了“python参数怎么传递默认值”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python参数怎么传递默认值”这篇文章吧。1、说明函数在定义时可以指定各参数的默认值,基本...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作