Причины именования в таких легко понятных классах Python, как OS и SYS?
Я заметил, что значительное количество вопросов в SO, связанных с Python, касаются людей, которые портят Sys -класс, класс OS и никакой класс. Например, легко запутанный случай: os.open("something")
, open("something")
а также sys.open("something")
, Я еще не понял причины именования классов, возможно, это просто эволюция.
- Я хотел бы услышать
why
они были созданы с их нынешними именами? - Названия связаны с такими вещами, как наличие FD в классе?
- Является ли наименование, потому что некоторые классы требуют специальных привилегий?
- Насколько именование является дизайнерским решением?
Если вы не можете ответить на вопрос, не стесняйтесь предложить несколько хороших мнемоник для запоминания классов и их дифференциации.
2 ответа
Встроенные функции - это то, что вам нужно часто. Вам не нужно импортировать какой-либо модуль для доступа к ним, и, следовательно, также не используйте префикс модуля. open()
является одной из таких функций, так как открытие файлов является очень распространенной операцией. Он открывает файл и возвращает файловый объект, который прост в использовании.
os
Модуль предназначен для интерфейсов операционной системы. os.open()
это необработанный интерфейс для файлового интерфейса операционной системы. Он открывает файл и возвращает пустой дескриптор файла, который вам обычно не нужен ни для чего.
sys
Модуль предназначен для системных вещей. sys.open()
не существует.
Простая путаница заключается в случае: os.open("что-то"), open("что-то") и sys.open ("что-то").
"Мнемоника" - это документация, доступная онлайн или загруженная на вашу рабочую станцию.
Встроенный
open
: http://docs.python.org/library/functions.html "Открыть файл"os.open
: http://docs.python.org/library/os.html "Эта функция предназначена для низкоуровневого ввода-вывода."sys.open
не существуетio.open
: http://docs.python.org/library/io.html "в Python 3.x это интерфейс по умолчанию для доступа к файлам и потокам"
"Мнемоника" - это легко. Используйте тот, который соответствует вашим требованиям.
почему они были созданы с их нынешними именами
Чтобы не загромождать язык в отдельных библиотеках.
Названия связаны с такими вещами, как наличие FD в классе?
Наверное. FD - это функция ОС, а не функция языка. Вот почему они находятся в отдельной библиотеке.
Является ли наименование, потому что некоторые классы требуют специальных привилегий?
Не за что.
Насколько именование является дизайнерским решением?
Чтобы не загромождать язык в отдельных библиотеках.