pydoc.doc не может получить "os.path.sep" - PullRequest
0 голосов
/ 26 августа 2018

Я проверяю справочную утилиту с os.path.sep в интерактивном режиме и захожу:

In [59]: help(os.path.sep)
Related help topics: lambda, or, and, not, in, is, BOOLEAN, COMPARISON,BITWISE, SHIFTING, BINARY, FORMATTING, POWER, UNARY, ATTRIBUTES,SUBSCRIPTS, SLICINGS, CALLS, TUPLES, LISTS, DICTIONARIES

Приоритет оператора


Следующая таблица суммирует приоритет оператора в Python, из самый низкий приоритет (наименее обязательный) для самого высокого приоритета (наиболее связывание). Операторы в одном поле имеют одинаковый приоритет. Если не синтаксис указан явно, операторы являются двоичными. Операторы в та же группа блоков слева направо (за исключением возведения в степень, которая группы справа налево).

Однако, когда я пытаюсь получить его с помощью pydoc

In [61]: with open("osPathSep_help.md", "w") as fout:
    ...:     pydoc.doc(os.path.sep, output=fout)
    ...:     
No Python documentation found for '/'.
Use help() to get the interactive help utility.
Use help(str) for help on the str class.

In [62]: os.stat("osPathSep_help.md").st_size
Out[62]: 0

Как получить тот же контент, что и цитата?

Следующая таблица суммирует приоритет оператора в Python, из самый низкий приоритет (наименьший обязательный) для самого высокого приоритета (самый большой

1 Ответ

0 голосов
/ 26 августа 2018

Чтобы понять это, вы должны получить внутри исходный код библиотеки os.path.Если вы зайдете внутрь кода, то найдете все эти переменные

curdir = '.'
pardir = '..'
extsep = '.'
sep = '\\'
pathsep = ';'
altsep = '/'
defpath = '.;C:\\bin'
devnull = 'nul'

Теперь вы пытаетесь получить доступ к os.path.sep как функции, но, как вы можете видеть, это не функция, а переменнаясо значением, присвоенным как '\'

Так что os.path.sep всегда равен \, поэтому, когда вы делаете help(os.path.sep), вы получаете результат как

Приоритет оператора

В следующей таблице обобщены приоритеты операторов в Python, от наименьшего приоритета (наименьшего связывания) до наивысшего приоритета (наиболее связующего).Операторы в одном поле имеют одинаковый приоритет.Если синтаксис не указан явно, операторы являются двоичными.Операторы в той же группе блоков слева направо (за исключением возведения в степень, которые группируются справа налево).

Который будет иметь тот же результат, что и вы, когда вы сделаете

help('\\')

Теперь ваш следующий вопрос будет о том, как он работает с help?

, поэтому, если вы проверяете исходный код справки, он упоминается

"""
Define the built-in 'help'.
This is a wrapper around pydoc.help (with a twist).
"""

Так что справка используется внутреннеpydoc.help

Поэтому, если вы используете

pydoc.help('\\') или pydoc.help(os.path.sep), вы получите желаемый результат.

...