gpt4 book ai didi

python - 条件表达式返回类型

转载 作者:行者123 更新时间:2023-11-28 21:51:36 25 4
gpt4 key购买 nike

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

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')

很明显它在做什么,但我不明白该函数如何神奇地返回 tuple("Nairobi")list("Nairobi") 仅包含语句 return tuple if mutable else list 且函数没有任何参数。

对此有明确的解释吗?

最佳答案

Python 中的一切都是对象; tuplelist 对象也不异常(exception)。

该函数根据immutable 标志简单地返回对tuplelist 对象的引用:

>>> def sequence_class(immutable):
... return tuple if immutable else list
...
>>> sequence_class(True)
<class 'tuple'>
>>> sequence_class(False)
<class 'list'>

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

>>> seq = sequence_class(True)
>>> seq
<class 'tuple'>
>>> seq('abc')
('a', 'b', 'c')

您可以通过直接将 tuplelist 赋给一个变量来实现同样的效果,它只是创建了对同一对象的另一个引用:

>>> foo = list
>>> foo
<class 'list'>
>>> foo('abc')
['a', 'b', 'c']

关于python - 条件表达式返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29930592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com