`
ikeycn
  • 浏览: 146239 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Python入门系列:References

阅读更多
References
当你创建对象并把它赋给一个变量后,这个变量仅仅只是关联到(refer to)这个对象,而并不代表这个对象本身。这就意味着变量名指向了你的计算机的内存中对象保存的位置。这个叫做把变量名绑定到对象上(This is called as binding of the name to the object)。
通常你并不需要太关注这个问题,但却会对你的应用有微妙的影响,所以你需要意识到这个问题。
请看下面的示例:
# Filename: reference.py
print('Simple Assignment')
shoplist = ['apple', 'mango', 'carrot', 'banana']
mylist = shoplist # mylist is just another name pointing to the same
object!
del shoplist[0] # I purchased the first item, so I remove it from the
list
print('shoplist is', shoplist)
print('mylist is', mylist)
# notice that both shoplist and mylist both print the same list without
# the 'apple' confirming that they point to the same object
print('Copy by making a full slice')
mylist = shoplist[:] # make a copy by doing a full slice
del mylist[0] # remove first item
print('shoplist is', shoplist)
print('mylist is', mylist)
# notice that now the two lists are different

输出结果:
$ python reference.py
Simple Assignment
shoplist is ['mango', 'carrot', 'banana']
mylist is ['mango', 'carrot', 'banana']
Copy by making a full slice
shoplist is ['mango', 'carrot', 'banana']
mylist is ['carrot', 'banana']

执行过程:
程序的注释部分已经说的很明白,值得注意的是如果你想对一个list或者类似的sequence对象或其他的复杂做复制操作的话(像integer这样的简单对象不需要考虑这个问题),你就要使用slicing操作来完成复制。如果仅仅把一个变量名赋值给另外一个变量名,那么这两个变量将指向同一个对象。如果你没有注意到这一点,那么将会给你带来不必要的麻烦。

说明:该文章从 A byte of Python v1.92 for Python3.0翻译而来,望指正
分享到:
评论

相关推荐

    欧拉公式求圆周率的matlab代码-Python_Course:Python入门和中级课程

    欧拉公式求圆周率的matlab代码 An introductory and intermediate course on Python Topics Python ...References Python Resources Why Python? , , , Python IDEs , , Git & Github , Exercises:

    Python Tutorial 入门指南3.6英文版

    The Python Tutorial 1 1. Whetting Your Appetite 4 2. Using the Python Interpreter 6 2.1. Invoking the Interpreter 7 2.1.1. Argument Passing 8 2.1.2. Interactive Mode 8 2.2. The Interpreter and Its ...

    python gtk3 tutorial

    - **参考资料**(References):推荐进一步学习的资源和链接。 #### 六、布局容器 **5. 布局容器** - **盒子**(Boxes):垂直和水平布局的盒子容器。 - **网格**(Grid):使用网格容器进行复杂布局。 - **列表框**...

    Vmware虚拟化变成入门教程

    ### VMware vSphere Web Services API 入门教程 #### 一、引言 随着云计算和虚拟化技术的发展,VMware作为虚拟化领域的领导者,其产品和服务受到了广泛的关注和应用。VMware vSphere Web Services API(以下简称...

    research-references-bot:使用Python在Telegram上创建搜索引擎Bot

    入门这些说明将为您提供在本地计算机上运行并运行的项目的副本,以进行开发和测试。 有关如何在实时系统上部署项目的注释,请参阅部署。先决条件确保在设备上安装了Python 3档案结构此文件用于获取更新并根据请求...

    Udacity_IntroMachineLearning:“机器学习入门”优达学城课程的最终项目——确定安然感兴趣的人

    这是 Udacity 机器学习入门课程的最终项目“从安然电子邮件中识别欺诈”的存储库,我将其作为 Udacity 数据分析师纳米学位的一部分。 作者:泰勒·拜尔斯 日期:2015 年 2 月 18 日 联系方式: 项目交付 评分者或...

    MySQL语法入门.pdf

    ### MySQL语法入门知识点详解 #### 一、SQL简介与重要性 **SQL**(Structured Query Language,结构化查询语言)是一种标准化的语言,专门用于管理和操作关系型数据库管理系统(RDBMS)。它不仅支持基本的数据操作,如...

    omnet4.0++实例入门教程

    ### omnet4.0++实例入门教程知识点解析 #### 一、Omnet++简介与环境搭建 **Omnet++** 是一款广泛应用于通信系统、计算机网络等领域的高性能、可扩展的离散事件仿真软件。Omnet++4.0 版本在功能与用户界面上进行了...

    mysql数据库结课课程设计大二上

    ('Python入门', '王五', 3, 3, 39.99, '2022-03-01'), ('C++实战', '赵六', 4, 4, 69.99, '2022-04-01'), ('算法设计', '陈七', 5, 5, 79.99, '2022-05-01'); ``` ### 三、基本功能实现 #### 数据添加 实现向各表...

    Intro-to-ML-FINAL

    这个项目可能包括一系列的教程、代码实现和理论讲解,旨在为参与者提供一个全面的入门体验。 【描述】中的关键点是,所有文件都是为一个名为“机器学习入门”的小组项目准备的,意味着它将包含实践性的学习材料。...

    Study-Notes

    - **编程语言**:例如Python、Java、C++、JavaScript的语法、特性、常见问题及最佳实践。 - **数据结构与算法**:数组、链表、栈、队列、树、图、排序算法、查找算法等的讲解和实例。 - **操作系统**:进程...

Global site tag (gtag.js) - Google Analytics