是否可以在python3中使用别名str.join
?
例如:
a=['a','b','c']
j=str.join
''.j(a)
但也能够做到
' '.j(a)
使用相同的别名或更通常能够像:
一样使用它string_here.j(iterable here)
答案 0 :(得分:2)
不完全符合您想要的语法,但足够接近:
>>> a=['a','b','c']
>>> j=str.join
>>> j('', a)
'abc'
>>> j(' ', a)
'a b c'
str.join
是一种未绑定的方法。要将其应用于对象,您需要将该对象指定为第一个参数。
答案 1 :(得分:2)
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进入顶部,但我希望你会喜欢这个全面的例子。如果您有任何疑问,请问我。