Python 列表和运算符

4 投票
2 回答
1547 浏览
提问于 2025-04-17 17:49

来自《Learn Python the Hard Way》的内容:

当你在代码里提到“mystuff”时,Python会去查找这个变量。它可能需要往回找,看看你是不是用“=”创建了这个变量,或者看看它是不是一个函数的参数,或者可能它是一个全局变量。不管怎样,Python首先要找到“mystuff”。

一旦找到“mystuff”,它就会看到“.”这个符号,然后开始查看“mystuff”里面的变量。因为“mystuff”是一个列表,所以Python知道“mystuff”有很多函数。

接着它会找到“append”,并把这个名字“append”和“mystuff”里面所有的名字进行比较。如果“append”在里面(确实在),那么它就会拿这个来用。然后Python看到“(”这个符号,意识到“哦,这应该是一个函数。”此时,它就像平常一样调用(也就是运行)这个函数,不过这次它会多传一个参数。

这个额外的参数就是……“mystuff”!我知道,这听起来有点奇怪,对吧?但这就是Python的工作方式,所以最好记住这一点,假设这样是没问题的。最后发生的事情是一个函数调用,看起来像这样:append(mystuff, 'hello'),而不是你看到的mystuff.append('hello')。

那么“mystuff”是从哪里来的呢?我对那个“.”操作符是怎么工作的还是不太明白(抱歉,我是新手,请多包涵),接下来我们看到这个:

ten_things = "Apples Oranges Crows Telephone Light Sugar"

print "Wait there's not 10 things in that list, let's fix that."

stuff = ten_things.split(' ')

我不明白为什么最后一行之后那个字符串会变成一个列表,是不是“.split”自动把它变成了一个列表?那个“.”后面的“split”或者“append”是什么名字?编程中让我困惑的主要原因之一就是我不知道很多东西的实际名称。我知道函数、变量等等,但像“.split”这样的东西让我很困惑。

有人能帮忙吗?

2 个回答

4

stuff = ten_things.split(' ') 这行代码并不会改变 ten_things 的值。相反,它会创建一个新的变量叫 stuff,并把通过 ten_things.split(' ') 生成的列表保存到这个变量里。这里传给 split 方法的空格是很重要的。它的意思是告诉 Python 要把字符串 ten_things 拆分开,使用 split 方法的参数作为分隔符。

举个例子:

"This is a string".split(' ') == ["This", "is", "a", "string"]

或者

"This|is|a|string".split('|') == ["This", "is", "a", "string"]

2

关于“他从哪里得到‘mystuff’?”这个问题,mystuff 是某种对象,而这个对象里面有一些属性值,其中包含了 方法函数。点(.)是一个标识符,用来指定具体的内容;比如说,mystuff.append 就是指和 mystuff 这个对象相关的 append 函数。对象的方法通常会有一个隐含的参数(通常叫 self),这个参数在调用时会自动指向这个方法所属的对象。在这个例子里,就是 mystuff

在之前的回答中提到过,split 是用来把一个字符串分割成多个部分,并返回一个列表。想了解更多信息,可以查看 tutorialspoint 关于 split 的介绍:

方法 split() 会返回字符串中所有单词的列表,使用 str 作为分隔符(如果不指定,默认会在所有空白字符处分割),还可以选择限制分割的次数为 num。... split() 方法的语法如下:str.split(str="", num=string.count(str))

撰写回答