Python入门:变量、引用、可变与不可变类型解析

0 下载量 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编程打下坚实的基础。