全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

Python指针用法介绍

发布时间:2023-11-21 23:41:31
发布人:xqq

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的指针使用。

pywin32中文手册

相关文章

详解length()函数

详解length()函数

2023-11-21
Linux时间戳在线转换

Linux时间戳在线转换

2023-11-21
理解和应用cv2.dct

理解和应用cv2.dct

2023-11-21
详解arr.length

详解arr.length

2023-11-21

最新文章

武汉新媒体行业公司排名

武汉新媒体行业公司排名

2023-11-01
武汉新媒体就业现状好吗

武汉新媒体就业现状好吗

2023-11-01
武汉全媒体行业发展现状及趋势

武汉全媒体行业发展现状及趋势

2023-10-31
武汉全媒体现状

武汉全媒体现状

2023-10-31
在线咨询 免费试学 教程领取