例如
sentence = "hello world"
stripped1 = sentence.strip()[:4]
stripped2 = sentence.strip()[3:8]
print (stripped1)
print (stripped2)
输出:
hell
lo worl
这里strip()是一个函数对象。所以它应该采用参数或者使用点符号后跟另一个对象。但该功能如何简单地遵循切片符号呢? strip()和切片如何在这里一起工作?支持这种格式的语法规则是什么?
答案 0 :(得分:2)
Python执行_result = sentence.strip()[:4]
作为几个单独的步骤:
_result = sentence # look up the object "sentence" references
_result = _result.strip # attribute lookup on the object found
_result = _result() # call the result of the attribute lookup
_result = _result[:4] # slice the result of the call
stripped1 = _result # store the result of the slice in stripped1
所以[:4]
只是更多的语法,就像()
调用一样,可以应用于另一个表达式的结果。
此处str.strip()
调用没有什么特别之处,它只返回另一个字符串,即sentence
值的剥离版本。该方法工作正常,不传递任何参数;来自documentation for that method:
如果省略或
None
, chars 参数默认为删除空格。
所以这里没有要求传递参数。
在此特定示例中,sentence.strip()
返回完全相同的字符串,因为"hello world"
中没有前导空格或尾随空格:
>>> sentence = "hello world"
>>> sentence.strip()
'hello world'
>>> sentence.strip() == sentence
True
因此sentence.strip()[:4]
的输出与sentence[:4]
的输出完全相同:
>>> sentence.strip()[:4] == sentence[:4]
True
您似乎错过了那里的电话,因为您似乎对 属性查找的输出感到困惑; sentence.strip
(无调用),生成内置方法对象:
>>> sentence.strip
<built-in method strip of str object at 0x102177a80>