3

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

例如:

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

还要能够做到

' '.j(a)

具有相同的别名或更一般地能够像这样使用它:

string_here.j(iterable here)
4

2 回答 2

2

不完全符合您想要的语法,但足够接近:

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

str.join是一个未绑定的方法。要将其应用于对象,您需要将该对象指定为第一个参数。

于 2013-03-17T10:24:26.013 回答
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 进入顶部,但我希望你会喜欢这个全面的例子。如果你有任何问题,尽管问我。

于 2013-03-17T10:26:34.167 回答