Python Tutorial
- jetzt Python programmieren lernen

eingebaute Funktionen („Built-in Functions“)

Eine Frage ist immer, welche Methoden und Klassen enthält ein Paket? Was gibt es bereits an Funktionen und kann sehr einfach genutzt werden, ohne dass man das Rad neu erfinden muss. Auch was ist bereits vorhanden und muss bzw. muss nicht importiert werden

Über dir haben wir eine mächtige Funktion, die uns eine Liste der Attribute und Methoden von jedem Objekt zurück liefert.

  • bei Klassen-Objekten wird eine Liste von Namen aller validen Attribute (und auch Basis-Attribute) zurück übergeben
  • bei Modulen [[/(Library)-Objekten]] wird eine Liste der Namen von allen Attributen, die in dem Modul vorhanden sind.
  • wenn kein Parameter angegeben wird, wird eine Liste von Namen des aktuellen lokalen Geltungsbereichs/Namensbereich („local scope“) zurück geliefert

Das letzte Verhalten machen wir uns zunutze.

>>> dir()

Als Rückmeldung erhalten wir:

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

Mehr Informationen (Anmerkung: In Python 2.7 wurde noch bedeutend weniger bzw. anders ausgegeben) erhalten wir über die bereits enthaltenen Funktionen und Typen von Python mit

dir(__builtins__)

Als Ergebnis erhalten wir:

>>> 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', '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']

Mehr über die einzelnen Objekte zu erfahren nutzt man die Anweisung help

Möchte man also mehr über die print-Funktion erfahren, gibt man einfach ein:

help(print)

Als Ausgabe erfolgt:

>>> help(print)

Help on built-in function print in module builtins:

print(...)

print(value, ..., sep=' ', end='

', file=sys.stdout, flush=False)

Prints the values to a stream, or to sys.stdout by default.

Optional keyword arguments:

file: a file-like object (stream); defaults to the current sys.stdout.

sep: string inserted between values, default a space.

end: string appended after the last value, default a newline.

flush: whether to forcibly flush the stream.

Die erste Linie zeigt einem, aus welchem Modul diese Funktion ist – im Fall von print kommt diese Funktion aus bereits im System integrierten Bereich. Wir müssen also nichts in unser Python-Programm importieren, um diese Funktion nutzen zu können.

In den darauffolgenden Linien wird die Nutzungsweise beschreiben.

Man sieht bei dieser Funktion das weitere Parameter übergeben werden können (was auch Sinn macht, sonst wird nichts ausgegeben). Auch sind bereits Parameter mit Standardausgaben belegt wie beispielsweise der Separator sep=' ' als Leerzeichen.

Hier können wir eingreifen, wenn gewünscht. Anstelle des Leerzeichens des Separators lassen wir einen Unterstrich ausgeben:

>>> print("Hallo", "Welt", "Wie", sep='_')

Als Ergebnis erhalten wir:

Hallo_Welt_Wie

Schauen wir uns eine weitere Funktion an: hex

>>> help(hex)

Help on built-in function hex in module builtins:

hex(number, /)

Return the hexadecimal representation of an integer.

>>> hex(12648430)

'0xc0ffee'

Wir haben wieder eine Funktion die „ab Werk“ sofort in Python zur Verfügung steht.

Es wird eine Ganzzahl (Integer) als Hexadezimale Zahl ausgegeben:

>>> hex(255)
'0xff'

Wir sehen, dass wir als Rückgabe einen String erhalten – daher wird der Rückgabewert in Anführungszeichen ausgegeben.

Für was steht das 0x? Das ist sehr einfach – das x steht für „heXadezimal“. Hätteb wir einen binären wären (also nur 0110011) kame das Präfix „0b“ für „Binär“. Für eine klare Abgrenzung zu einer dezimalen Zahl fangen hexadezimale und binäre Zahlen immer damit an – das wurde bereits in der ANSI Norm für C Compiler anno dazumal festgelegt.

Siehe dazu einfach auch help(bin)

Durch die Schreibweise wird auch direkt im Python-Interpreter eine binäre bzw. Hexadezimale Eingabe in dezimaler Ausgabe zurückgegeben:

>>> 0xff
255

Liste von Modulen

Um alle weiteren Module angezeigt zu bekommen, einfach eingeben:

>>> help('modules')

Wir bekommen daraufhin eine sehr umfangreiche Ausgabe aller Module:

>>> help('modules')

Please wait a moment while I gather a list of all available modules...

__future__ _threading_local getpass rlcompleter

_abc _tkinter gettext runpy

_ast _tracemalloc glob sched

_asyncio _uuid grp secrets

_bisect _warnings gzip select

_blake2 _weakref hashlib selectors

_bootlocale _weakrefset heapq setuptools

_bz2 _xxtestfuzz hmac shelve

_codecs abc html shlex

_codecs_cn aifc http shutil

_codecs_hk antigravity idlelib signal

_codecs_iso2022 argparse imaplib site

_codecs_jp array imghdr smtpd

_codecs_kr ast imp smtplib

_codecs_tw asynchat importlib sndhdr

_collections asyncio inspect socket

_collections_abc asyncore io socketserver

_compat_pickle atexit ipaddress sqlite3

_compression audioop itertools sre_compile

_contextvars base64 json sre_constants

_crypt bdb keyword sre_parse

_csv binascii lib2to3 ssl

_ctypes binhex linecache stat

_ctypes_test bisect locale statistics

_curses builtins logging string

_curses_panel bz2 lzma stringprep

_datetime cProfile macpath struct

_dbm calendar mailbox subprocess

_decimal cgi mailcap sunau

_dummy_thread cgitb marshal symbol

_elementtree chunk math symtable

_functools cmath mimetypes sys

_hashlib cmd mmap sysconfig

_heapq code modulefinder syslog

_imp codecs multiprocessing tabnanny

_io codeop netrc tarfile

_json collections nis telnetlib

_locale colorsys nntplib tempfile

_lsprof compileall ntpath termios

_lzma concurrent nturl2path test

_markupbase configparser numbers textwrap

_md5 contextlib opcode this

_multibytecodec contextvars operator threading

_multiprocessing copy optparse time

_opcode copyreg os timeit

_operator crypt parser tkinter

_osx_support csv pathlib token

_pickle ctypes pdb tokenize

_posixsubprocess curses pickle trace

_py_abc dataclasses pickletools traceback

_pydecimal datetime pip tracemalloc

_pyio dbm pipes tty

_queue decimal pkg_resources turtle

_random difflib pkgutil turtledemo

_scproxy dis platform types

_sha1 distutils plistlib typing

_sha256 doctest poplib unicodedata

_sha3 dummy_threading posix unittest

_sha512 easy_install posixpath urllib

_signal email pprint uu

_sitebuiltins encodings profile uuid

_socket ensurepip pstats venv

_sqlite3 enum pty warnings

_sre errno pwd wave

_ssl faulthandler py_compile weakref

_stat fcntl pyclbr webbrowser

_string filecmp pydoc wsgiref

_strptime fileinput pydoc_data xdrlib

_struct fnmatch pyexpat xml

_symtable formatter queue xmlrpc

_sysconfigdata_m_darwin_darwin fractions quopri xxlimited

_testbuffer ftplib random xxsubtype

_testcapi functools re zipapp

_testimportmultiple gc readline zipfile

_testmultiphase genericpath reprlib zipimport

_thread getopt resource zlib

Enter any module name to get more help. Or, type "modules spam" to search

for modules whose name or summary contain the string "spam".

Um ein Modul nutzen zu können, müssen wir dieses im ersten Schritt importieren:

import math

Zur Kontrolle, ob der Import geklappt hat und uns dieses Modul zur Verfügung steht, können wir die Funktion dir() aufrufen.

dir()

Nun sollte das Modul zusätzlich erscheinen:

>>> dir()

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

Um die nun durch „math“ möglichen Funktionen anzusehen, einfach auf diese dir(math) anwenden.

>>> dir(math)

['__doc__', '__file__', '__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']

Es werden bei dem Aufruf keine Anführungszeichen verwendet! Wir wollen das Modul nutzen und nicht einen Zeichenkette (string).

Um nun weitere Hilfen über help für die im Modul math vorhandenen Möglichkeiten zu bekommen muss immer das Modul mit angegeben werden. Ansonsten bekommen wir eine „Traceback“-Fehlermeldung.

>>> help(math.sin)
Help on built-in function sin in module math:
sin(x, /)
    Return the sine of x (measured in radians).

Testen wir die Sinusfunktion:

>>> sin(45)
Traceback (most recent call last):
  File "<pyshell#33>", line 1, in <module>
    sin(45)
NameError: name 'sin' is not defined

Wir erhalten als Fehler einen NameError.

Wir müssen also immer den Pfad zur Funktion „math“ angeben, um die Funktion nutzen zu können.

>>> math.sin(45)
0.8509035245341184