python表达式类型_条件表达式返回类型 - python

我不太明白这段代码是如何工作的:

def sequence_class(immutable):

return tuple if immutable else list

seq = sequence_class(immutable=False)

s = seq("Nairobi")

s

['N', 'a', 'i', 'r', 'o', 'b', 'i']

seq = sequence_class(immutable=True)

s = seq("Nairobi")

s

('N', 'a', 'i', 'r', 'o', 'b', 'i')

很明显它在做什么,但是我不明白该函数如何仅凭语句return tuple("Nairobi")并且不对该函数添加任何参数就能神奇地返回list("Nairobi")或tuple if mutable else list。

有什么明确的解释吗?

python大神给出的解决方案

Python中的一切都是对象。 tuple和list对象也不例外。

该函数仅基于tuple标志返回对list或immutable对象的引用:

>>> def sequence_class(immutable):

... return tuple if immutable else list

...

>>> sequence_class(True)

>>> sequence_class(False)

然后,将seq绑定到该对象,并调用seq然后调用引用的类型:

>>> seq = sequence_class(True)

>>> seq

>>> seq('abc')

('a', 'b', 'c')

您可以通过直接将tuple或list分配给变量来执行相同的操作,它只会创建对同一对象的另一个引用:

>>> foo = list

>>> foo

>>> foo('abc')

['a', 'b', 'c']

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值