strip()函数后面的机制是什么,后跟python中的切片表示法?

时间:2016-07-26 09:56:58

标签: python string list strip

例如

sentence = "hello world"
stripped1 = sentence.strip()[:4]
stripped2 = sentence.strip()[3:8]
print (stripped1)
print (stripped2)

输出:

hell
lo worl

这里strip()是一个函数对象。所以它应该采用参数或者使用点符号后跟另一个对象。但该功能如何简单地遵循切片符号呢? strip()和切片如何在这里一起工作?支持这种格式的语法规则是什么?

1 个答案:

答案 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>