1

刚开始使用 Python

任何人都可以解释为什么一些内置字符串函数在它们的括号内接受参数的原因,如下所示:

length = len("This is a string")

而其他一些函数似乎只是“链接”到它们正在操作的字符串的末尾,例如:

uppercase = "lowercase string".upper()

可能是一个愚蠢的问题,但只是想知道这背后是否有我不知道的原因。

4

4 回答 4

2

len() 是一个内置函数,它返回序列的长度,也就是说,您可以将列表、元组传递给 len() ,而不仅仅是字符串。例如:

foo = (1,2,3)
len(foo)
>>> 3

bar = ['a', 'b', 'c', 'd']
len(bar)
>>> 4

关于括号 - 在您的示例中,括号之间是一个字符串。你也可以这样做:

foo = "This is a string"
len(foo)

"lowercase string".upper()

正在调用字符串对象的方法,该方法返回该字符串的大写。你可以这样做:

foo = "lowercase string"
uppercase = foo.upper()
于 2013-10-04T09:49:01.483 回答
0

函数 len() 是语言中的内置函数。len() 文档

并且您使用的 .upper() 函数是字符串类的一部分。str.upper() 文档

于 2013-10-04T09:41:44.237 回答
0

第一种情况len是您在当前命名空间中调用的函数,并且您将参数传递给它。在第二个中,调用xyz.upper()意味着您正在调用String 对象“小写字符串”上 的方法。 .upper()

len()函数调用__len__()传递给它的对象的方法,所以实际上它只是调用该方法的快捷方式。其他一些用户已经发布了指向其背后原因的链接(感谢您的纠正 larsmans)。

于 2013-10-04T09:43:11.583 回答
0

Len 是一个函数,一个内置函数,所以使用 len (something) 你可以对你的输入应用一个转换并获得一个输出,比如 Y=f(X)。

"some string".upper() 是实例 "some string" 的方法;"some string" 属于 String 类并且有它的方法。请注意,这样写的“某些字符串”是一个对象,并且具有它的所有方法,如果您键入以下内容,您可以看到:

>>type("some string")
str

综上所述:len 是一个函数并且是在外部定义的, .upper() 是一个在对象本身内部定义的方法

于 2013-10-04T09:49:49.330 回答