Причины именования в таких легко понятных классах Python, как OS и SYS? - PullRequest
3 голосов
/ 09 апреля 2011

Я заметил, что значительное количество вопросов в SO, касающихся Python, касаются людей, которые портят Sys-класс, класс OS и отсутствие класса. Например, легко запутанный случай: os.open("something"), open("something") и sys.open("something"). Я еще не понял причины именования классов, возможно, это просто эволюция.

  1. Хотелось бы услышать why они были созданы с их текущими именами?
  2. Названия связаны с такими вещами, как наличие FD в классе?
  3. Является ли наименование, потому что некоторые классы требуют специальных привилегий?
  4. В какой степени наименование является дизайнерским решением?

Если вы не можете ответить на вопрос, не стесняйтесь предложить несколько хороших мнемоник для запоминания классов и их дифференциации.

Ответы [ 2 ]

3 голосов
/ 09 апреля 2011

Простая путаница заключается в случае: os.open («что-то»), open («что-то») и sys.open («что-то»).

«Мнемоника» - это документация, доступная в режиме онлайн или загруженная на вашу рабочую станцию.

«Мнемоника» - это легко. Используйте тот, который соответствует вашим требованиям.

почему они были созданы с их текущими именами

Чтобы сохранить беспорядок в языке и в отдельных библиотеках.

Названия связаны с такими вещами, как наличие FD в классе?

Возможно. FD - это функция ОС, а не функция языка. Вот почему они находятся в отдельной библиотеке.

Является ли наименование, потому что некоторые классы требуют специальных привилегий?

Совсем нет.

В какой степени именование является дизайнерским решением?

Чтобы не допустить беспорядка в языке и в отдельных библиотеках.

2 голосов
/ 09 апреля 2011

Встроенные функции - это то, что вам нужно часто.Вам не нужно импортировать какой-либо модуль для доступа к ним, и, следовательно, также не используйте префикс модуля.open() - одна из таких функций, поскольку открытие файлов является очень распространенной операцией.Он открывает файл и возвращает файловый объект, который прост в использовании.

Модуль os предназначен для интерфейсов операционной системы.os.open() - это необработанный интерфейс для файлового интерфейса операционной системы.Он открывает файл и возвращает пустой дескриптор файла, который вам обычно ни для чего не нужен.

Модуль sys предназначен для системных задач.sys.open() не существует.

...