简述python函数参数传值和传址的区别_【IT专家】Python 函数参数引用(传值 or 传址)copy和deepcopy...

本文由我司收集整编,推荐下载,如有疑问,请与我司联系

Python

函数参数引用(传值

or

传址)

copy

deepcopy

2017/06/30

0

博文结构:

1

、传值、传址的概念和区别

2

python

参数传递

的方式

3

copy

deepcopy

的使用

4

python

的数据存储方式

传值、传址的概念和区别:传值:被调函数局部变量改变不会影响主调函数局部

变量

传址:被调函数局部变量改变会影响主调函数局部变量

传值就是传入一个参数的值,传址就是传入一个参数的地址,也就是内存的地址

(相当于指针)

。他们的区别是如果函数里面对传入的参数重新赋值,函数外的全局

变量是否相应改变,用传值传入的参数是不会改变的,用传址传入就会改变。

a=1def f(b): b=2 return bf(a)print a 2 1

在这段代码里面,首先声明

a

的值为

1

,把

a

作为参数传入到函数

f

里面,函数

f

里面对

b

重新赋值为

2

,如果是传值的形式传入

a

的话,

a

的值是不会变的,依然为

1

,如果以传址的形式(但是在

python

中这个不

是程序员能决定的)传入

a

a

就会变成

2

。这个就是传值和传址的区别。

python

参数传递的方式

Python

是不允许程序员选择采用传值还是传址的。

Python

参数传递采用的肯定是

传对象引用

的方式。实际上,这种方式相当于传值和传址

的一种综合。

如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的

原始值

——

相当于传址。如果函数收到的是一个不可变对象(比如数字、字符或者

元组)的引用(其实也是对象地址!!!)

,就不能直接修改原始对象

——

相当于传

值。

因此

python

的传值和传址是比如根据传入参数的类型来选择的

传值的参数类型:数字,字符串,元组(

immutable

)

传址的参数类型:列表,字典(

mutable

)

a=1def f(b): b=b+1 return bf(a)print a 2 1

这段代码里面,因为

a

是数字类型,因此

是传值的方式,

a

的值并不会变,输出为

1

a=[1]def

f(b):

b[0]+=1

return

bf(a)print

a

[2]

[2]

这段代码里面,因为

a

的类型是列

表,因此是传址的形式,

a[0]

的值会改变,输出为

[2]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值