Modulnamenimporte in Python (Modulnamenimporte in Python), Lektion, Seite 724076
https://www.purl.org/stefan_ram/pub/modulimporte_python (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Python-Kurs

Modulnamenimportanweisungen in Python 

Eine Modulnamenimportanweisung  besteht nur aus dem Wort »import« und einem Modulnamen.

Syntaxdiagramm

Modulnamenimportanweisung

.------. .------.
--->( import )--->| Name |--->
'------' '------'

Anweisung

.---------------------------.
---.--->| Auswertungsanweisung |---.--->
| '---------------------------' |
| .---------------------------. |
'--->| from-Importanweisung |---'
| '---------------------------' |
| .---------------------------. |
'--->| Modulnamenimportanweisung |---'
'---------------------------'

Durch die Ausführung einer Modulnamenimportanweisung (also durch einen Modulnamenimport ) wird der Name  des angegebenen Moduls in den aktuellen Gültigkeitsbereich übernommen.

Protokoll (frei übersetzt und vereinfacht)

from math import pi

math

Namensfehler: Der Name 'math' ist nicht definiert.
Protokoll (frei übersetzt und vereinfacht)

import math

math

<Modul 'math' (eingebaut)>
Protokoll

import math

type( math )

<class 'module'>

Die Angabe »eingebaut« (»built-in«) besagt oben, daß das Modul ein fester Bestandteil der Python-Implementation ist (und nicht erst bei Bedarf von einem Massenspeicher eingelesen wird).

Der Modulnamenimport importiert keine anderen Namen  außer den Namen des Moduls. Es werden also nicht  etwa die Namen importiert, die in dem Modul enthalten sind!

Nach »import math« kann man also nicht  etwa »floor« aufrufen.

Protokoll
floor( 0.0 )
Namensfehler: Der Name 'floor' ist nicht definiert.

Es ist auch möglich, sich Erklärungen zum Modul »math« anzeigen zu lassen.

Protokoll
help( math )
Protokoll (Ausgabe gekürzt)

import math

help( math )

Help on built-in module math:

NAME
math

DESCRIPTION
This module is always available. It provides access to the
mathematical functions defined by the C standard.

FUNCTIONS
acos(...)
acos(x)

Return the arc cosine (measured in radians) of x.

Nach dem Start der Python -Implementation steht der Inhalt des Moduls »builtins« zur Verfügung, zu dem sich ebenfalls Erklärungen anzeigen lassen, aber erst nachdem  der Name jenes Moduls importiert wurde.

Anzeigen von Erklärungen zum Modul »builtins«

import builtins

help( builtins )

(Die Ausgabe kann mit der Taste Q abgebrochen werden.)

(In CPython  ist der Name »__builtins__« bereits von Anfang an immer an das Modul »builtins« gebunden, ohne daß er erst importiert werden muß.)

Das aktuelle Skript (Hauptprogramm) gilt ebenfalls als ein Modul. Es hat den Namen »__main__«, der allerdings ebenfalls erst importiert werden muß, bevor er verwendet werden kann. Dann kann beispielsweise mit »dir« ein Verzeichnis der Namen aus »__main__« angezeigt werden.

Protokoll

import __main__

help( __main__ )

PEP8
Imports should usually be on separate lines, e.g.:
Yes:

import os

import sys

No:
    import os, sys
It’s okay to say this though:
    from subprocess import Popen, PIPE

Einige spezielle Module

Wir nennen im folgenden die Namen einiger spezieller Module.

Spezielle Module

builtins

__main__

Die Namen aus  den Modulen »builtins« und »__main__« stehen direkt nach dem Start einer Python -Implementation zur Verfügung, ohne  daß sie voher importiert werden müssen. Die Namen »builtins« und »__main__« selber  können aber erst nach ihrem Import verwendet werden.

Je nach der verwendeten Python -Version können sich bei den Inhalten von Modulen Abweichungen von dem oben Gezeigten ergeben.

»builtins« und »__builtins__« ⃗

Mit dem Vergleichsoperator kann man erkennen, daß ein importierter Namen »builtins« dieselbe Bedeutung wie der vorhandene Name »__builtins__« hat.

Protokoll

import builtins

builtins == __builtins__

True

Der Name »__builtins__« ist nur in einigen Python -Implementationen, wie beispielsweise CPython, vorhanden.

»__builtins__« sollte nie  verwendet werden. Statt seiner sollte bei Bedarf der Name »builtins« importiert und verwendet werden.

Der Name »__name__«

Der Name »__name__« ist an ein str-Objekt mit dem Namen des Moduls, in dem er verwendet wird, gebunden.

Auswertung
__name__
'__main__'

»dir«

»dir« mit Argumenten

Auch die Funktion »dir« ist variadisch.

Man kann sie mit einem Argument aufrufen, das ein Modul angibt. Dann werden die Namen der Bindungstabelle jenes Moduls ausgegeben.

Wir können Namen aus Modulen auflisten, indem wir die Module als Argumente von »dir« verwenden.

Es ist nach »import math« möglich, sich die Namen aus der Bindungstabelle des Moduls anzeigen zu lassen.

Protokoll

import math

from pprint import pprint

dir( math )

['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
len( _ )
60
len( dir( math ))
60
Namen aus dem Modul »builtins« (Ausgabe manuell umformatiert)

import builtins

dir( builtins )

['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
Namen aus dem Modul »__main__« (Ausgabe manuell umformatiert)

import __main__

dir( __main__ )

['__annotations__', '__builtins__', '__doc__', '__loader__', '__main__', '__name__', '__package__', '__spec__' ]

(Die Details der Ausgabe können sich von Python -Implementation zu Python -Implementation unterscheiden.)

»dir« ohne Argumente

»dir()« ohne Argumente bedeutet (innerhalb von »__main__«) dasselbe wie »dir( __main__ )« (nach »import __main__«).

Namen aus dem Modul »__main__« (Ausgabe manuell umformatiert) vor allen Importen
dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']

Die Dokumentation von »dir«

Daß »dir« variadisch ist, also daß man das Argument auch weglassen kann, wird in der Dokumentation von »dir« dadurch ausgedrückt, daß der Parametername in eckige Klammern geschrieben wird.

Auszug aus der Dokumentation

>>> help( dir )

Help on built-in function dir in module builtins:

dir(...)

dir([object]) -> list of strings

Ändern der Bindung eines Namens ⃗

Konsolenprotokoll

from pprint import pprint

pprint

<function pprint at …>

import pprint

pprint

<module 'pprint' from 'C:\\Users\\s\\AppData\\Local\\Programs\\Python\\Python39\\lib\\pprint.py'>

from pprint import pprint

pprint

<function pprint at …>

Spezielle Namen aus CPython 

Der Name »__builtins__« (nicht zu verwechseln mit »builtins«!) kann in CPython  aber auch ohne Import verwendet werden, jedoch sollte er normalerweise nicht  verwendet werden. Er wurde in diesem Kurs nur solange verwendet, wie Modul-Import-Anweisungen noch nicht behandelt wurden.

Der Namen »__builtins__« sollte ab jetzt nicht mehr  verwendet werden.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram724076 stefan_ram:724076 Modulnamenimporte in Python Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd724076, slrprddef724076, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/modulimporte_python