Python 列表和运算符
来自《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 个回答
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"]
关于“他从哪里得到‘mystuff’?”这个问题,mystuff
是某种对象,而这个对象里面有一些属性值,其中包含了 方法 或 函数。点(.)是一个标识符,用来指定具体的内容;比如说,mystuff.append
就是指和 mystuff
这个对象相关的 append
函数。对象的方法通常会有一个隐含的参数(通常叫 self
),这个参数在调用时会自动指向这个方法所属的对象。在这个例子里,就是 mystuff
。
在之前的回答中提到过,split
是用来把一个字符串分割成多个部分,并返回一个列表。想了解更多信息,可以查看 tutorialspoint 关于 split
的介绍:
方法
split()
会返回字符串中所有单词的列表,使用 str 作为分隔符(如果不指定,默认会在所有空白字符处分割),还可以选择限制分割的次数为 num。...split()
方法的语法如下:str.split(str="", num=string.count(str))
。