Python入门:变量、引用、可变与不可变类型解析
60 浏览量
更新于2024-08-04
收藏 472KB PDF 举报
"Python入门教程,适合初学者,讲解了变量、引用、可变与不可变类型、局部和全局变量等基础知识。"
Python是一种高级编程语言,以其易读性和简洁的语法著称,使得即便是不懂计算机语言的人也能相对快速地学习。本教程是针对Python初学者的完整版入门指南,特别强调了中文教学,使得学习过程更为直观和无障碍。
在Python中,变量是理解和操作数据的关键。变量就像一个标签,它指向内存中存储的具体数据。当你创建一个变量并给它赋值时,实际上是在内存中为数据分配了一个位置,并让变量保存这个位置的地址。这称为变量的引用。例如,当执行`a = 1`时,`a`这个变量就指向了内存中数值1的位置。如果之后改变`a`的值,如`a = 2`,那么`a`就会更新其引用,指向新的内存位置,而原来1所在的内存可能会被后续的数据覆盖。
在Python中,变量的这种引用特性也体现在函数的参数传递和返回值上。当我们把一个变量作为参数传递给函数时,实际上传递的是变量的引用,而不是值的复制。这意味着函数内部对参数的修改会影响到函数外部的变量。同样,函数的返回值也是通过引用返回,返回的不是新的内存副本,而是原有数据的引用。以下代码示例展示了这一过程:
```python
def test(num):
print("-" * 50)
print("%d在函数内的内存地址是%x" % (num, id(num)))
result = 100
print("返回值%d在内存中的地址是%x" % (result, id(result)))
print("-" * 50)
return result
a = 10
print("调用函数前内存地址是%x" % id(a))
r = test(a)
print("调用函数后实参内存地址是%x" % id(a))
print("调用函数后返回值内存地址是%x" % id(r))
```
在Python中,数据类型分为可变和不可变两种。不可变类型包括整型(int)、布尔型(bool)、浮点型(float)、复数型(complex)以及在Python 2.x中的长整型(long)。这些类型的对象一旦创建,其内存中的数据就不能更改。例如,如果你有变量`a = 1`,然后试图重新赋值为`a = 2`,实际上是创建了一个新的整数对象,并让`a`指向它,原对象1保持不变。
另一方面,可变类型包括列表(list)和字典(dict)。这些类型的对象在内存中可以被修改。例如,你可以对列表进行添加、删除或替换元素的操作,对字典进行添加、删除或修改键值对。这与不可变类型的行为截然不同。下面的代码展示了列表的可变性:
```python
demo_list = [1, 2, 3]
print("定义列表后的内存地址%d" % id(demo_list))
demo_list.append(999)
print(demo_list)
```
在上述代码中,`demo_list`的内存地址在添加元素后并未改变,说明列表对象本身没有被替换,而是原对象被修改。
此外,还有局部变量和全局变量的概念。局部变量在函数内部定义,只在该函数的作用域内有效;全局变量在整个程序中都可见。当函数内部试图访问一个未声明的变量时,Python会查找是否存在全局变量。如果需要在函数内部修改全局变量,可以使用`global`关键字来声明。
通过深入理解这些基本概念,Python初学者能够更好地掌握变量的使用、数据类型的处理以及函数的调用方式,从而为进一步学习Python编程打下坚实的基础。
2023-06-11 上传
2023-06-11 上传
2023-06-11 上传
2024-07-02 上传
2023-06-12 上传
2023-06-11 上传
2019-06-14 上传
xinkai1688
- 粉丝: 383
- 资源: 8万+
最新资源
- Angular实现MarcHayek简历展示应用教程
- Crossbow Spot最新更新 - 获取Chrome扩展新闻
- 量子管道网络优化与Python实现
- Debian系统中APT缓存维护工具的使用方法与实践
- Python模块AccessControl的Windows64位安装文件介绍
- 掌握最新*** Fisher资讯,使用Google Chrome扩展
- Ember应用程序开发流程与环境配置指南
- EZPCOpenSDK_v5.1.2_build***版本更新详情
- Postcode-Finder:利用JavaScript和Google Geocode API实现
- AWS商业交易监控器:航线行为分析与营销策略制定
- AccessControl-4.0b6压缩包详细使用教程
- Python编程实践与技巧汇总
- 使用Sikuli和Python打造颜色求解器项目
- .Net基础视频教程:掌握GDI绘图技术
- 深入理解数据结构与JavaScript实践项目
- 双子座在线裁判系统:提高编程竞赛效率