• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

python如何传递引用

python 搞java代码 3年前 (2022-05-21) 15次浏览 已收录 0个评论

Python中函数参数是引用传递(注意不是值传递)。对于不可变类型,因变量不能修改,所以运算不会影响到变量自身;而对于可变类型来说,函数体中的运算有可能会更改传入的参数变量。

引用传参一:

>>> a = 100 #这里的a是不可变类型
>>> def test(a):
...     a+=a 
        #这个式子有两层含义:1.这里可能是重新定义一个新的变量a,2.也有可能是修改a的值,但由于全局
        #变量a不能修改,所以此处是重新定义了一个a;
...     print("函数内:%d"%a)
...
>>> test(a)
函数内:200
>>> print(a)
100

www#gaodaima.com来源gao!daima.com搞$代!码网搞代码

引用传参二:

>>> a = [100] #这里的a是一个列表,是可变类型
>>> def test(a):
...     a+=a #由于列表a是可变类型,所以这里是修改a
...     print("函数内:")
...     print(a)
...
>>> test(a)
函数内:
[100, 100]
>>> print(a)
[100, 100]

引用传参三:

>>> a = 100
>>> def test(a):
...     a=a+a  #最初为了好理解,所以可以认为a+=a等价于a=a+a,所以这里同引用传参一
...     print("函数内:%d"%a)
...
>>> test(a)
函数内:200
>>> print(a)
100

引用传参四:

>>> a = [100]
>>> def test(a):
        #1. 先算 =号右边的
        #2. 算出来的结果是[100,100]
        #3. a = [100,100]
        #4. 让a变量指向了[100,100],即a保存的是[100,100]的引用(内存地址)
...     a=a+a #对于这种情况,等号左边的a是重新定义的一个量,此时a=a+a与a+=a不一样
...     print("函数内:")
...     print(a)
...
>>> test(a)
函数内:
[100, 100]
>>> print(a)
[100]

事实上,我们可以通过打印相应变量的地址来帮助我们理解,例如:

a是int类型的情况:

a是列表的情况:

搞代码网,免费的在线学习python平台,欢迎关注!

来源:搞代码网:原文地址:https://www.gaodaima.com


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:python如何传递引用

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址