https://docs.python.org/3/library/sys.html
W każdy interpreter Pythona wbudowany jest moduł sys, który daje dostęp do obiektów związanych z interpreterem.
import sys
# dir(sys) # można sprawdzić udostępniane symbole
# Wybrane obiekty statyczne.
print("sys.prefix", sys.prefix) # "/usr"
print("sys.executable", sys.executable) # "/usr/bin/python"
print("sys.maxint", sys.maxint) # 2147483647
print("sys.version", sys.version)
print("sys.platform", sys.platform)
print("sys.byteorder", sys.byteorder)
# Wybrane obiekty dynamiczne.
# Znaki zachęty są określone tylko w trybie interaktywnym.
# print(sys.ps1, sys.ps2)
# Nazwy strumieni: sys.stdin, sys.stdout, sys.stderr
print("sys.path", sys.path))
# ścieżki wyszukiwania modułów (lista stringów)
path_to_folder = os.path.abspath("/destination/folder")
sys.path.insert(0, path_to_folder) # dodanie folderu do ścieżki
print("długość sys.argv", len(sys.argv), type(sys.argv))
for i in range(len(sys.argv)):
print(i, sys.argv[i])
# Wybrane funkcje.
# sys.exit() # domyślnie zwróci 0 - sukces
# sys.exit(1) # zwraca 1 - niepowodzenie
# Sprawdzanie licznika referencji.
print("sys.getrefcount", sys.getrefcount(1))
print("sys.getrefcount", sys.getrefcount("a"))
# Bieżąca wartość limitu rekurencji, czyli maksymalna głębokość
# stosu interpretera Pythona.
print("limit rekurencji", sys.getrecursionlimit()) # 1000
# Zmiana limitu rekurencji Pythona.
# Największa możliwa wartość zależy od platformy.
# sys.setrecursionlimit(n)
# Przykład: graphtheory.traversing.dfs (SimpleDFS).