4. Keywords

4.1. pass

  • Avoid SyntaxError when you don’t specify the body of a block

4.1.1. Example 1

def my_function():

my_var = my_function()
# IndentationError: expected an indented block
def my_function():
    pass

my_var = my_function()
# None

4.1.2. Example 2

for i in range(0, 30):

print('hello')
# IndentationError: expected an indented block
for i in range(0, 30):
    pass

print('hello')
# hello

4.1.3. Example 3

class SpoznienieError(Exception):

print('hello')
# IndentationError: expected an indented block
class SpoznienieError(Exception):
    pass

print('hello')
# hello

4.2. __file__

print(__file__)
# /tmp/__notepad__.py
BASE_DIR = os.path.dirname(__file__)

print(f'Working directory: {BASE_DIR}')
# Working directory: /tmp
import os

BASE_DIR = os.path.dirname(__file__)
path = os.path.join(BASE_DIR, 'main.py')

print(f'Executing: {path}')
# Executing: /tmp/main.py

4.3. __name__

  • Zmienna __name__ pozwala ustalić czy dany plik jest wykonywany czy importowany.

  • Jeżeli dany plik jest wykonywany, zmienna __name__ ustawiana jest na '__main__'.

  • Jeżeli dany plik jest importowany jako moduł, zmienna __name__ ustawiana jest na nazwę modułu.

  • Jest to przydatne na przykład przy testowaniu modułów.

4.3.1. Example 1

  • Wypisane na konsoli zostanie 'hello world!' jeżeli dany plik jest uruchamiany z konsoli.

  • Powyższy kod nie wykona się natomiast jeżeli plik zaimportujemy jako moduł w innym pliku.

if __name__ == '__main__':
    print('hello world')

4.3.2. Example 2

  • Jeżeli skrypt wywoływany jest z konsoli “z ręki” to uruchom funckję run()

  • Jeżeli został zaimportowany, to ten fragment będzie zignorowany

  • I trzeba uruchomić funkcję run() samodzielnie - kontrolowanie

def run():
    ...

if __name__ == '__main__':
    run()

4.3.3. Example

import logging

log = logging.getLogger(__name__)