博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python——变量的引用和函数的参数和返回值的传递方式
阅读量:4485 次
发布时间:2019-06-08

本文共 1042 字,大约阅读时间需要 3 分钟。

变量的引用

  在python中,所有的变量都是指向地址,变量本身不保存数据,而是保存数据在内存中的地址。我们用下面的程序来理解:

1 a = 102 print(id(a))3 a = 114 print(id(a))

(利用id( )方法查看数据的地址)

输出结果为:

可以发现:修改变量的值,变量保存的地址随之改变。

python中:

  1. 变量和数据是分开存储的
  2. 变量 中保存着数据在内存中的地址

我们把变量中记录数据的地址的行为,叫做 引用。

通俗的来说,在 Python 中,变量的名字类似于 便签纸 贴在 数据 上。

 

再看一段代码:

1 a = 102 print(id(a))3 b = a4 print(id(b))5 c = 106 print(id(c))7 d = 118 print(id(d))

结果如下:

 

 

从上面运行结果中,我们可以知道:

1.b=a是地址传递

2.声明一个变量时,如果内存中已经有变量要保存的内容了,会将该变量指向内存中原有内容的地址,如果内存中没有变量要保存的内容,就会在内存中开辟一块新的空间用来保存变量要保存的内容。

 

 


 

函数的参数和返回值的传递

我们通过一个程序来弄清楚函数的参数和返回值的传递方式是地址传递还是值传递。

def test(num):    print("-" * 40)    print("%d 在函数内的内存地址是 %x" % (num, id(num)))  # 说明函数的参数传递时地址传递    result = 100    print("返回值 %d 在内存中的地址是 %x" % (result, id(result)))    print("-" * 40)    return resulta = 10print("调用函数前,变量a引用的地址是 %x" % id(a))r = test(a)print("调用函数时,实参内存地址是 %x" % id(a))print("调用函数后,返回值内存地址是 %x" % id(r))  # 说明return返回值是地址传递

 

运行结果如下:

 

通过上面程序:

  1. 我们发现变量a以及将a传给函数的参数num的地址都是一致的,说明函数的参数传递是地址传递。
  2. 函数中result变量和接受返回值的r变量的地址是相同的,说明函数中的返回值传递也是地址传递

 

转载于:https://www.cnblogs.com/crazyechoaoo/p/10727353.html

你可能感兴趣的文章
UVA GCD - Extreme (II)
查看>>
完成个人中心—导航标签
查看>>
【C++】C++中变量的声明与定义的区别
查看>>
前端性能优化
查看>>
static
查看>>
属性动画
查看>>
Hadoop集群时钟同步
查看>>
C++二维数组讲解、二维数组的声明和初始化
查看>>
纹理映射和混合
查看>>
PHP获取域名、IP地址的方法
查看>>
php验证复选框的小例子
查看>>
Sql Server 判断表或数据库是否存在
查看>>
计算机网络
查看>>
iOS-浅谈runtime运行时机制
查看>>
数字证书原理 - 转自 http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html
查看>>
关于float和margin
查看>>
Python练习-内置函数的应用
查看>>
洛谷P3905 道路重建
查看>>
数据表格 - DataGrid - 行编辑
查看>>
HQL查询语句
查看>>