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 = ...