Какие модули по умолчанию в Python (которые импортируются, когда мы запускаем Python, например, «печать») - PullRequest
2 голосов
/ 04 октября 2011

Какие модули по умолчанию в Python импортируются автоматически при запуске компилятора Python?

Это, например, print, сложение и другие математические функции.
Они должны быть определены где-то в Python

Я догадался, что мы можем извлечь эту информацию, найдя (например, откуда взялась функция print, если мы знаем эту информацию, мы можем получить модуль, из которого она поступила).

Ответы [ 5 ]

10 голосов
/ 04 октября 2011

«модуль» имеет особое значение в Python.Ни «print», ни «добавление» не является модулем.

+, а другие «математические функции» являются операторами , тогда как for, in, if и т. Д. Являются ключевыми словами , а не функциями, и поэтому не будут в __builtins__.

Если вы действительно хотитезнаете, какие модули загружаются при запуске Python, посмотрите sys.modules.keys():

$ python -i
Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.modules.keys()
['copy_reg', 'sre_compile', 'locale', '_sre', 'functools', 'encodings', 'site',
'__builtin__', 'sysconfig', 'operator', '__main__', 'types', 'encodings.encodings',
'abc', '_weakrefset', 'errno', 'encodings.codecs', 'sre_constants', 're', '_abcoll',
'ntpath', '_codecs', 'nt', '_warnings', 'genericpath', 'stat', 'zipimport',
'encodings.__builtin__', 'warnings', 'UserDict', 'encodings.cp1252', 'sys',
'codecs', 'os.path', '_functools', '_locale', 'signal', 'traceback', 'linecache',
'encodings.aliases', 'exceptions', 'sre_parse', 'os', '_weakref']
6 голосов
/ 04 октября 2011

Все эти функции являются частью модуля __builtins__. Запустите оболочку Python и проверьте помощь -

>>> help(__builtins__)
4 голосов
/ 04 октября 2011

Python имеет три области действия:

  • местные
  • глобальный
  • 1008 * встроенные *

Если вы выполняете следующую функцию:

def foo():
    print('bar')

Python выполняет поиск функции print в этих областях сверху вниз. Сначала проверяется, есть ли в foo локальная переменная с именем print. Затем, если это не удается, если print является глобальным объектом сценария / модуля (в этом примере функция foo является таким объектом). Если и это не помогает, оно выглядит в модуле __builtin__.

В модуле __builtin__ определены все функции, такие как print. Он также содержит встроенные классы исключений.

Сложение и другие операторы отличаются тем, что работают с объектами. Каждый объект имеет тип, например, целое число 123 имеет тип int. Тип int определяет, как можно добавить два целых числа и каков результат.

В CPython (Python от python.org) модуль __builtin__ и все основные типы (int, str, list и т. Д.) Написаны на C и являются частью ядра. (исполняемый файл python). Существуют и другие модули, написанные таким же образом, особенно модуль sys. Вы не найдете sys.py в стандартной библиотеке Python.

1 голос
/ 04 октября 2011

Модуль __builtins__ содержит функцию print, а также многие другие функции и классы.В оболочке help(__builtins__) предоставит вам почти абсурдно подробный список функций, классов и функций этих классов.Использование dir(__builtins__) может быть более полезным, поскольку оно просто возвращает список имен включенных функций и классов.

0 голосов
/ 25 февраля 2018

__ встроенный __ импортируется по умолчанию при любом запуске программы.

type, str, dir и все остальные встроенные функции Python сгруппированы в специальный модуль с именем __ builtin __. (Это два подчеркивания до и после.) Если это поможет, вы можете подумать о том, что Python автоматически запускается из __ builtin __ import * при запуске, который импортирует все встроенные функции в пространство имен, так можете использовать их напрямую.

Преимущество такого мышления заключается в том, что вы можете получить доступ ко всем встроенным функциям и атрибутам как к группе, получив информацию о встроенном модуле 1012 *. И знаете что, в Python есть функция info. Попробуйте сами и просмотрите список сейчас. Мы рассмотрим некоторые из наиболее важных функций позже. (Некоторые из встроенных классов ошибок, такие как AttributeError, должны выглядеть уже знакомыми.)

Источник и ссылка: DiveIntoPython

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...