为什么不需要牛

干燥设备2021年09月06日

问:Python中为什么没有swap(a, b)方法?我们在Python中如何交换对象?

Python 不使用这种方式(swap(a, b))。Python以引用方式管理对象,你可以交换引用,但通常不能交换内存中的对象值。当然你也不需要这样做。

在C++中这种函数用来交换“a和b的值”。在Python中,a和b的值不会发生交换,但位于当前命名空间中的标记(如a和b)是可以交换的。而对象本身是仍然保留。

所以与其调用一个swap(a, b),你倒不如使用:a,b = b,a。

通常python函数不会混淆它们的命名空间,所以它不能像C++的swap(a, b)那样进行引用操作。

因此,在python中应该这样做:

a = 1

b = 2

def swap(t1, t2):

return t2, t1

a,b = swap(a, b) # After this point, a == 2 and b == 1

But there is not way (other than abusing globals or the module

namespace) to do it like this:

不过下面这段代码不可能像我们希望的那样工作(全局命名空间和局部命名空间是隔离的):

a = 1

b = 2

def swap(t1, t2):

t2, t1 = t1, t2

return

swap(a, b)

# After this point, a == 1 and b == 2. The calling namespace is

# not changed.

在类中,你可以构造一个命名空间来操作可调用的对象(类实例方法),事实上,这意味着也许可以实现一个swap()方法。但是它们仍然只是操作命名空间中的对象引用,而不会交换对象本身(或者它们在机器内存中的数据)。以下只是一个示例,并不表示它们有什么实用性:

class Pair:

def __init__(self, t1, t2):

self.t1 = t1

self.t2 = t2

def get(self):

return self.t1, self.t2

def swap(self):

self.t1, self.t2 = self.t2, self.t1

a = 1

交警部门就在厦门市各媒体公布了我市各固定探头的位置。同时 b = 2

pair = Pair(a, b)

t() # returns 1,2

ap() # changes the namespace of the pair object

t() # returns 2,1

a == 1

b == 2 # The a and b labels did NOT change

太原哪里治疗皮肤科
室内门定制加盟
用什么洗头可以生发
相关阅读
人到了一定的年龄,才知道太过善良,多半得不偿失!

孙权过世以前,在给其子刘禅的敕命中会真是:“勿以善小而不为,勿以无最...

2024-12-29
2022年高考本科没录取,专科不顾一切,选韩国留学申请本科名校

研究工作天和院与来得高职之间的差是主观假定的,而且考天和内心深东南侧...

2024-08-30
应采儿带儿子出游,老大外表帅气招风耳惹眼,小儿子清秀似女孩

在在,应采儿在社交平台上社交了一张自己和两个孩子的截图,配文是:“这...

2024-07-21
公职考试也看“家庭背景”,这3类人很有优势,考上机会很大!

公详的垄断压力却是是一年比一年大,每年省详、国详都是几十上百万人报上...

2024-07-06
华杰专硕第四届大湾区MBA名校大联展在深圳圆满举办!

六年初夏日炎炎,MBA应考们也在热火朝天地取用里!2023高等院校MBA入学措施...

2024-06-07
直击调研 | 中材科技(002080.SZ):今年叶片出货量预计同比增加20% 十四五末期膜产能或达

7月5日,中会材科技应用领域(002080.SZ)在接受调研时表示,的公司是杂货店投...

2024-05-27
友情链接