Python函数参数和文档混淆

时间:2014-01-24 13:22:54

标签: python

这是python中的一个字符串:

a = "asdf as df adsf as df asdf asd f"

假设我想用“||”替换所有“”,所以我这样做:

>>> a.replace(" ", "||")
'asdf||as||df||adsf||as||df||asdf||asd||f'

我的困惑是来自the documentation的信息如下:

 string.replace(s, old, new[, maxreplace])
    Return a copy of string s with all occurrences...

我可以“省略”s,但根据我需要的文档s;但是,我只提供oldnew。我注意到有很多python文档就像这样;我错过了什么?

3 个答案:

答案 0 :(得分:5)

您正在将str对象方法与string模块函数混合使用。

您所指的文档是string module documentation.实际上,字符串模块中有一个名为replace的函数,它有3个(或可选的4个)参数:

In [9]: string
Out[9]: <module 'string' from '/usr/lib/python2.7/string.pyc'>

In [11]: string.replace(a, ' ', '||')
Out[11]: 'asdf||as||df||adsf||as||df||asdf||asd||f'

astr个对象 - (str是一个类型,string是一个模块):

In [15]: type(a)
Out[15]: str

str个对象有replace方法。 str方法的文档为here

答案 1 :(得分:1)

当您调用对象的方法时,该对象将自动作为第一个参数提供。通常在方法中,这被称为self

所以你可以调用传入对象的函数:

string.replace(s, old, new)

或者你可以调用对象的方法:

s.replace(old, new)

两者在功能上完全相同。

答案 2 :(得分:1)

方法的第一个参数是对被修改的对象(通常称为self)的引用,当您使用object.method(...)表示法时,隐式传递。所以这个:

a = "asdf as df adsf as df asdf asd f"
print a.replace(" ", "||")

相当于:

a = "asdf as df adsf as df asdf asd f"
print str.replace(a, " ", "||")

stra对象的类。这只是语法糖。