这可能是一个糟糕的标题,但我的意思是:
由于Python是动态类型的,为什么某些函数坚持仅用于某些数据类型,如果有必要,不在内部处理转换?这会导致什么问题?
示例:
startswith()
:将str
和tuple
作为参数。
list
太?如果有充分的理由(这可能是
case),为什么不简单地在内部转换它们?
join()
:仅接受str
个项目的容器。
[str(x) for x in whatever]
?从语言的设计来看,到目前为止我的印象是它更注重灵活性而不是纯度,因此上述行为似乎是非典型的..
另一个例子来自@VPfB
" IPv4地址(主机,端口)必须是套接字库中的元组 - 而不是列表。"。
由于它们的不变性,是否可以选择元组?是否存在tuple
被拒绝且只接受list
的情况?最好是标准Python发行版及其模块的一部分。
答案 0 :(得分:1)
从语言的设计来看,到目前为止我的印象是它更注重灵活性而不是纯度,因此上述行为似乎是非典型的。
你的印象是错误的。 Python是动态类型的,但也是强类型的,这意味着对象的类型总是固定的。如果您需要不同类型的对象,则必须以某种方式进行比较。
第二个问题是合法的,但这本来是可能的。但明确比隐含更好。
答案 1 :(得分:1)
Python 强烈动态类型化,这意味着对象具有明确的类型,并且必须显式执行转换。为什么,请考虑Zen of Python:
明确比隐含更好。