====== Python ======
\\
===== Środowisko wirtualne =====
* Utworzenie i uruchomienie
python -m venv env
source env/bin/activate
* Opuszczenie
deactivate
\\
\\
===== Try =====
try:
print("Hello")
except NamedError: // obsługa konkretnego błędu
print("NamedError occurred")
except: // obsługa jakiegokolwiek błędu
print("Something went wrong")
except Exception as e: // obsługa jakiegokolwiek błędu z informacją zwrotną co to za błąd
print("The error is: ",e)
else: // jeżeli nie wystąpił żaden błąd
print("Nothing went wrong")
finally: // po obsłużeniu wszystkiego powyższego
print("The 'try except' is finished")
if ...:
raise TypeError("My Error occurred")
\\
=== Built-in Exceptions ===
^ Exception ^ Description ^
| ArithmeticError | Raised when an error occurs in numeric calculations |
| AssertionError | Raised when an assert statement fails |
| AttributeError | Raised when attribute reference or assignment fails |
| Exception | Base class for all exceptions |
| EOFError | Raised when the input() method hits an "end of file" condition (EOF) |
| FloatingPointError | Raised when a floating point calculation fails |
| GeneratorExit | Raised when a generator is closed (with the close() method) |
| ImportError | Raised when an imported module does not exist |
| IndentationError | Raised when indentation is not correct |
| IndexError | Raised when an index of a sequence does not exist |
| KeyError | Raised when a key does not exist in a dictionary |
| KeyboardInterrupt | Raised when the user presses Ctrl+c, Ctrl+z or Delete |
| LookupError | Raised when errors raised cant be found |
| MemoryError | Raised when a program runs out of memory |
| NameError | Raised when a variable does not exist |
| NotImplementedError | Raised when an abstract method requires an inherited class to override the method |
| OSError | Raised when a system related operation causes an error |
| OverflowError | Raised when the result of a numeric calculation is too large |
| ReferenceError | Raised when a weak reference object does not exist |
| RuntimeError | Raised when an error occurs that do not belong to any specific exceptions |
| StopIteration | Raised when the next() method of an iterator has no further values |
| SyntaxError | Raised when a syntax error occurs |
| TabError | Raised when indentation consists of tabs or spaces |
| SystemError | Raised when a system error occurs |
| SystemExit | Raised when the sys.exit() function is called |
| TypeError | Raised when two different types are combined |
| UnboundLocalError | Raised when a local variable is referenced before assignment |
| UnicodeError | Raised when a unicode problem occurs |
| UnicodeEncodeError | Raised when a unicode encoding problem occurs |
| UnicodeDecodeError | Raised when a unicode decoding problem occurs |
| UnicodeTranslateError | Raised when a unicode translation problem occurs |
| ValueError | Raised when there is a wrong value in a specified data type |
| ZeroDivisionError | Raised when the second operator in a division is zero |
\\
\\
===== MySQL =====
Instalacja biblioteki: ''pip install mysql-connector-python''\\
Oficjalna dokumentacja: [[https://dev.mysql.com/doc/connector-python/en/connector-python-example-connecting.html]]\\
Przykład:
DB_CONFIG = {
'user': 'scott',
'password': 'password',
'host': '127.0.0.1',
'database': 'employees',
'raise_on_warnings': True
}
db = mysql.connector.connect(**DB_CONFIG)
cursor = db.cursor(buffered=True)
cursor.execute(f"SELECT * FROM ...;")
result = cursor.fetchall()
result = cursor.fetchone()
cursor.close()
sql = "INSERT INTO books (url, isbn) VALUES (%s, %s)"
val = ('url_val', 'isbn_val')
cursor.execute(sql, val)
db.commit()
added_id = cursor.lastrowid
db.close()
\\
\\
===== Obiektowo =====
W Python nie ma czegoś takiego jak prywatne/publiczne. Stosowane są podkreślniki przed nazwą aby wskazać, że to jest używane jak prywatne.
class ZeissReport:
def __init__(self, file):
self._file = file // właściwość podawana przy inicjalizacji
self._part = None // właściwość z wartością ustawianą później
self._results = []
self._readPdf() // funkcja wywołana w trakcie inicjalizacji
@property
def part(self): // odczyt właściwości - Getter
return self._part
@property
def results(self):
return self._results
@part.setter // ustawienie właściwości - Setter
def part(self, value):
if value < 1:
raise ValueError("Part below 1 is not possible")
self._part = value
def _readPdf(self): // funkcja
...
self._part = ...
self._results = ...