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
, в символов аргумент умолчанию предлагается удаление пробелов.
так что здесь нет необходимости передавать аргументы.
В этом конкретном примере, 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>
Нет, 'strip()' не является объектом функции. Это * возвращаемое значение этого метода *. Это просто еще одна строка, здесь точно такая же, как и оригинал, так как нет ведущего или конечного пробела. –
"strip() - объект функции" Нет, это не так. Это строка. Попробуй. Это просто удаляет пробелы с этой строки, чтобы создать новую, лишенную строку, а затем разрезать ее. – TigerhawkT3