python中的别名str.join

python中的别名str.join,python,python-3.x,Python,Python 3.x,是否可以在python3中别名str.join 例如: 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' >>>

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

例如:

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:是的,但不是以您期望的方式

在您的示例中,您正在对未绑定函数使用别名。这意味着is没有对象可以隐式地应用它,因此您必须传递一个要对其执行操作的对象的引用

这就是方法中的
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_41;
,那么必须绑定
f
函数。这意味着您必须事先知道要使用的字符串。以下是如何做到这一点:

>>> str_ = ' '
>>> list_ 
>>> f = str_.join   # aliasing the object method
>>> f(list_)        # no need to pass a reference now
"1 2 3"

我希望你明白我说的话。Python是一种很棒的语言,在任何语言中都是最难掌握的。我无法进入榜首,但我希望你会喜欢这个全面的例子。如果你有任何问题,就问我。

你可以定义一个类来传递对
str.join
的调用,这就是你要找的还是你想用非字符串的对象来实现这一点?该死的,你们怎么打字这么快?我可以给任何读过这篇文章的人添加一个类吗,尽管这篇文章实际上从未使用过它。。。看起来ugly@jamylak当直接版本显而易见时,是的。然而,在更复杂的情况下,通过将函数作为参数传递来抽象内容,传递未绑定的方法(虽然不一定是特别地
str.join
)是有意义的,而且看起来很漂亮。