str.join
是否可以在 python3中使用别名?
例如:
a=['a','b','c']
j=str.join
''.j(a)
还要能够做到
' '.j(a)
具有相同的别名或更一般地能够像这样使用它:
string_here.j(iterable here)
str.join
是否可以在 python3中使用别名?
例如:
a=['a','b','c']
j=str.join
''.j(a)
还要能够做到
' '.j(a)
具有相同的别名或更一般地能够像这样使用它:
string_here.j(iterable here)
不完全符合您想要的语法,但足够接近:
>>> a=['a','b','c']
>>> j=str.join
>>> j('', a)
'abc'
>>> j(' ', a)
'a b c'
str.join
是一个未绑定的方法。要将其应用于对象,您需要将该对象指定为第一个参数。
TL;DR:是的,但不是你期望的那样。
在您的示例中,您正在为未绑定的函数设置别名。这意味着它没有隐式应用它的对象,因此您必须传递对要执行操作的对象的引用。
这就是self
方法中的参数的用途。通常,当您使用 ` 时,它会自动为您传递。样式表示法,但在这里你必须明确地提供它。
>>> list_ = [1, 2, 3]
>>> f = str.join # aliasing the class method
>>> f(' ', list_) # passing a reference to s
prints "1 2 3"
>>> f('', list_ ) # flexibility to use any string
如果您只想说f(list_)
,则f
必须绑定该功能。这意味着您必须提前知道要使用的字符串。以下是如何做到这一点:
>>> str_ = ' '
>>> list_
>>> f = str_.join # aliasing the object method
>>> f(list_) # no need to pass a reference now
"1 2 3"
我希望你明白我在说什么。Python 是一门很棒的语言,在所有语言中问题最少。我无法通过 FGITW 进入顶部,但我希望你会喜欢这个全面的例子。如果你有任何问题,尽管问我。