在python中别名str.join

时间:2013-03-17 10:16:48

标签: python python-3.x

是否可以在python3中使用别名str.join

例如:

a=['a','b','c']
j=str.join
''.j(a)

但也能够做到

' '.j(a)

使用相同的别名或更通常能够像:

一样使用它
string_here.j(iterable here)

2 个答案:

答案 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进入顶部,但我希望你会喜欢这个全面的例子。如果您有任何疑问,请问我。