千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > Python指针用法介绍

Python指针用法介绍

来源:千锋教育
发布人:xqq
时间: 2023-11-21 23:41:31 1700581291

Python的指针概念很容易让人混淆,因为Python不像C/C++一样明确地操作内存地址,但Python同样支持指针,并且经常被使用。本文将从多个方面介绍Python的指针。

一、指针的概念

指针是一个变量,其值为另一个变量的内存地址。换句话说,指针存储的是内存地址,可以通过指针来访问或修改这个地址所对应的变量的值。


a = 1  # 定义a变量并赋值为1
b = a  # 将a的值赋值给b
print(a, b)  # 输出结果为1 1
a = 2  # 修改a的值为2
print(a, b)  # 输出结果为2 1

在上面的代码中,a和b都是变量,但是我们通过将a赋值给b,两个变量指向同一个地址。当我们修改a的值时,b的值并未发生改变。

二、Python中的指针

在Python中,指针被称为引用,因为它们引用了内存中对象的位置。Python的所有变量都是对象的引用,而不是对象本身。


a = 1  # 定义a变量并赋值为1
b = a  # 将a的值赋值给b,实际上是将a的引用赋给了b
print(a, b)  # 输出结果为1 1
a = 2  # 修改a的值为2,实际上是让a引用另一个对象(2)
print(a, b)  # 输出结果为2 1

与C/C++中的指针不同,Python中不允许直接访问内存地址。因此,Python的指针概念是通过对象引用来实现的。

三、可变对象和不可变对象

Python中的可变对象是可以在内存中修改的对象,如列表(list)和字典(dict);不可变对象是不能修改的对象,如整数(int)和元组(tuple)。


a = 1  # 定义a变量并赋值为1
b = a  # 将a的值赋值给b,实际上是将a的引用赋给了b
a += 1  # 修改a的值为2
print(a, b)  # 输出结果为2 1

x = [1, 2]  # 定义列表x
y = x  # 将x的引用赋值给y
x.append(3)  # 修改x的值,向列表中添加元素3
print(x, y)  # 输出结果为[1, 2, 3] [1, 2, 3]

在上面的代码中,修改了不可变对象(a),实际上是将a引用的对象改变了,新建了一个值为2的整数对象并让a引用它,而不是在原有的对象上修改值。而修改可变对象(x),实际上是在原有的对象上修改了值,因为列表是可变对象。

四、函数中的指针

在Python中,函数参数传递的是实参的引用,而不是实参本身。因此,在函数内部修改参数的值将会影响到函数外部的变量。


def modify(num):
    num += 1

a = 1
modify(a)
print(a)  # 输出结果为1

def modify_list(lst):
    lst.append(3)

x = [1, 2]
modify_list(x)
print(x)  # 输出结果为[1, 2, 3]

在上面的代码中,modify函数接收一个不可变对象,修改这个对象的值不影响函数外部的变量。而modify_list函数接收一个可变对象,修改这个对象的值将会影响函数外部的变量。

五、指针的应用

Python中的指针可以应用于多种场景,如交换两个变量的值:


a = 1
b = 2
a, b = b, a
print(a, b)  # 输出结果为2 1

还可以在函数中返回多个值:


def foo():
    return 1, 2

x, y = foo()
print(x, y)  # 输出结果为1 2

六、总结

本文从指针的概念、Python中的指针、可变对象和不可变对象、函数中的指针和指针的应用5个方面详细介绍了Python的指针使用。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT