2012-06-02 2 views
0

Я иду по Python tutorial той, где демонстрируется в следующем примере:найти больше информации о функциях Python, 3 простых вопросов

>>> 'str'.strip() + 'ing' # <- This is ok 

В этом примере (как я понимаю) str является строкой, на вызываемая функция strip().

Я бы разумно ожидал найти эту функцию, делая >>> dir("abc"). Действительно функция указана как 'strip'

Вопрос 1: Почему некоторые функции, перечисленные в __name__ и другие как name?

Вопрос 2: Я хотел бы сейчас, чтобы найти дополнительную информацию об этой функции. При запуске help("abc") (ожидая получить справочную страницу по всем функциям, которые можно запустить в строке), strip не указан. Зачем? Где я могу узнать больше о конкретной функции?

Вопрос 3: Использование PyCharm Я ожидаю, что следующая автозавершение будет работать, и все же я ничего не вижу. Почему это?

enter image description here

+0

Вы видели [интернет-документы] (http://docs.python.org/library/stdtypes.html#string-methods)? – Cameron

+0

Для ** Вопрос 2 ** try 'help (str)' – spatar

ответ

4
  1. Функция, окруженная двойных подчеркиванием специальные функции, которые могут быть перекрыты для реализации специальных поведения. Например, функция __getitem__, реализованная в классе, позволяет индексировать доступ к элементам этого класса. (Другими словами, a[5] в большинстве случаев эквивалентен a.__getitem__(5)). Подчеркисты просто сигнализируют о том, что они особенные, и требуют особой обработки. (Например, не изобретайте свой собственный.)

  2. Когда вы передаете строку help, она обрабатывает строку как запрос. Например, help('class') создает кучу информации о классах. Если вы хотите текст help для строковых объектов, сделайте help(str) или help('str').

  3. Я не использую PyCharm, поэтому я не могу помочь.

+0

Технически, все методы «реализуют специальные поведения». Я бы сказал, скорее, что методы under-under вызываются самим Python время от времени, а не полезны для непосредственного вызова пользователями. – lvc

+0

@lvc, мы могли бы спорить о том, что означает «особый», я думаю, но мне все равно. Я просто повторяю язык [из документов] (http://docs.python.org/reference/datamodel.html#special-method-names); позволяющий «специальный синтаксис» для меня кажется «особым поведением». (Просто не называйте это «волшебством»!) – senderle

1

Вместо help("abc"), которая дает помощь на абстрактных базовых классов, попробуйте help(str), которая дает помощь на строки, в том числе str.strip метода.

0

Ответа на этот вопрос для 0. Убедитесь, что Python Interpreter указан в Настройки | Project Interpreter?

Вот что я получаю за ваш пример: completion in PyCharm

Смежные вопросы