<jupyter_start><jupyter_text>python Funkcje<jupyter_code>def func():
    print("Działanie funkcji")
    return "Wynik działania funkcji"

func()
def func(param):
    print("Działanie funkcji na parametrze param "
          "o wartości %s" % param)

func("jakaś wartość")
a = "Wartość przypisana do zmiennej poza funkcją"

def func(a):
    print("Wartość przypisana do parametru to %s" % a)

func("TADAM")
a = "Wartość przypisana do zmiennej poza funkcją"

def func():
    a = "Wartość przypisana do zmiennej w funkcji"
    print("Wartość a to %s" % a)

func()
print(a)
import sys
a = "Wartość przypisana do zmiennej poza funkcją"

def func():
    a = "Wartość przypisana do zmiennej w funkcji"
    print("Wartość a to %s" % sys.modules[__name__].a)

func()
a = "Wartość przypisana do zmiennej poza funkcją"

def func():
    a = "Wartość przypisana do zmiennej w funkcji"
    print("Wartość a to %s" % globals()['a'])

func()
a = "Wartość przypisana do zmiennej poza funkcją"

def func():
    global a 
    a = "Wartość przypisana do zmiennej w funkcji"
    print("Wartość a to %s" % a)

print(a)
func()
print(a)
def func(a, b, c):
    print("%s, %s, %s" % (a, b, c))

func("a", "bb", 3)
def func(*args):
    print(", ".join(map(str, args)))

func("a", "bb", 3)
func("aa", "bbb", 3, 4, 56)
def func(a, b=2, c=33):
    print("%s, %s, %s" % (a, b, c))

func('a')
func('aa', 22)
func('aa', b=22)
func('aa', 22, c=333)
func('aa', c=333)
try:
    func('aa', b=22, 333)
except SyntaxError:
    pass
def func(**kwargs):
    print(", ".join(map(str, kwargs)))

# func(1, 2, 3)
func(a=1, b=2, c=3)
def func(**kwargs):
    print(", ".join(map(str, kwargs.items())))

func(a=1, b=2, c=3)
from itertools import chain

def func(*args, **kwargs):
    print(", ".join(chain(map(str, args),
                          map(str, kwargs.items()))))

func('a', 'b', 'c', a=1, b=2, c=3)
def func(a, b, c=3, *args):
    print(", ".join(map(str, chain((a, b, c), args))))

func(1, 2)
func(1, 2, 'nah')
func(1, 2, 'nah', 'blah')
def func(a, b=2, *args, **kwargs):
    print(", ".join(map(str, chain((a, b), args, kwargs.items()))))

func(1)
func(1, 'nah')
func(1, 'nah', 'bleh')
func(1, b='nah', c='bleh')
# func(1, b='nah', 'bleh')
a = 'wartość przed funkcją'

def func():
    a = 'zmiana wartości w funkcji'

func()
print(a)
a = 'wartość przed funkcją'

def func():
    global a
    a = 'zmiana wartości w funkcji'

func()
print(a)
a = 'wartość przed funkcją'

def func():
    a = 'zmiana wartości w funkcji'

a = 'zmiana wartość po funkcji'

func()
print(a)
a = 'wartość przed funkcją'

def func():
    global a
    a = 'zmiana wartości w funkcji'

a = 'zmiana wartość po funkcji'

func()
print(a)
a = ['wartość w tablicy']

def func():
    a.append('nowa wartość')

print(a)
func()
print(a)
a = ['wartość w tablicy']

def func():
    a.append('nowa wartość')

a.append('przed wywołaniem')
func()
a.append('po wywołaniu')
print(a)
A = ['wartość w tablicy']

def func(a):
    a.append('nowa wartość')

func(A)
print(A)
A = ['wartość w tablicy']

def func(a):
    a.append('nowa wartość')

func(A[:])
print(A)
A = ['wartość w tablicy']

def func(a):
    a.append('nowa wartość')
    return a

A = func(A[:])
print(A)
a = ['wartość w tablicy']

def func():
    a.append('nowa wartość')

del a
try:
    func()
except NameError:
    print("Brakuje mi a")
A = ['wartość w tablicy']

def meta_func(a):
    def inner_func():
        a.append('nowa wartość')
    
    return inner_func

func = meta_func(A)
func()
print(A)
A = ['wartość w tablicy']

def meta_func(a):
    def inner_func(a=A):
        a.append('nowa wartość')
    
    return inner_func

func = meta_func(A)
a = ['inna tablica']
func(a)
print(A)
print(a)
print()
func()
print(A)
print(a)
A = ['wartość w tablicy']

def meta_func(a):
    def inner_func():
        a.append('nowa wartość')
        return a
    
    return inner_func

func = meta_func(A)
A = []
B = func()
print(A)
print(B)
A = ['wartość w tablicy']

def meta_func(a):
    def inner_func():
        a.append('nowa wartość')
        return a
    
    return inner_func

func = meta_func(A)
A.clear()
B = func()
print(A)
print(B)
def meta_func(func):
    def inner_func():
        print("Początek")
        func()
        print("Koniec")
    
    return inner_func

def func():
    print("Środeczek")

decorated_func = meta_func(func)

func()
print()
decorated_func()
@meta_func
def func():
    print("Środeczek")

func()
def func():
    print("Środeczek")

func = meta_func(func)

func()
def meta_func(func):
    def inner_func():
        print("Początek")
        func()
        print("Koniec")
    
    return inner_func

@meta_func
def func(a, b):
    print("%s, %s" % (a, b))

try:
    func('a', 'b')
except TypeError:
    print("Brakuje mi parametrów")
def meta_func(func):
    def inner_func(a, b):
        print("Początek")
        func(a, b)
        print("Koniec")
    
    return inner_func

@meta_func
def func(a, b):
    print("%s, %s" % (a, b))

func('a', 'b')
def meta_func(func):
    def inner_func(a, b):
        print("Początek")
        func(a, b)
        print("Koniec")
    
    return inner_func

@meta_func
def func(a, b, c):
    print("%s, %s, %s" % (a, b, c))

try:
    func('a', 'b')
except TypeError:
    print("Brakuje mi czegoś..")
def meta_func(func):
    def inner_func(*args):
        print("Początek")
        func(args)
        print("Koniec")
    
    return inner_func

@meta_func
def func(a, b, c):
    print("%s, %s, %s" % (a, b, c))

try:
    func('a', 'b', 'c')
except TypeError:
    print("Brakuje mi czegoś..")
def meta_func(func):
    def inner_func(*args):
        print("Początek")
        func(*args)
        print("Koniec")
    
    return inner_func

@meta_func
def func(a, b, c):
    print("%s, %s, %s" % (a, b, c))

func('a', 'b', 'c')
def meta_func(func):
    def inner_func(*args):
        print("Początek")
        func(*args)
        print("Koniec")
    
    return inner_func

@meta_func
def func(a, b, c, d=0):
    print("%s, %s, %s, %s" % (a, b, c, d))

func('a', 'b', 'c')
func('a', 'b', 'c', 'd')
# func('a', 'b', 'c', 'd', 'e')
try:
    func('a', 'b', 'c', d='d')
except TypeError:
    print("Brakuje mi czegoś..")
def meta_func(func):
    def inner_func(*args, **kwargs):
        print("Początek")
        func(*args, **kwargs)
        print("Koniec")
    
    return inner_func

@meta_func
def func(a, b, c, d=0):
    print("%s, %s, %s, %s" % (a, b, c, d))

func('a', 'b', 'c')
func('a', 'b', 'c', 'd')
func('a', 'b', 'c', d='d')
# func('a', 'b', 'c', 'd', 'e')
def meta_func(func):
    def inner_func(*args, **kwargs):
        print("Początek")
        func(*args, **kwargs)
        print("Koniec")
    
    return inner_func

class Object(object):
    def __init__(self, arg):
        self.__field = arg
    @meta_func
    def method(self, a, b, c=3):
        print("%s, %s, %s, %s" % (a, b, c, self.__field))

o = Object('testowy obiekt')
o.method(1, 2)
o.method(1, 2, 'C')
def meta_func(func):
    def inner_func(a, b, c):
        print("Początek")
        func(a, b, c)
        print("Koniec")
    
    return inner_func

class Object(object):
    def __init__(self, arg):
        self.__field = arg
    @meta_func
    def method(self, a, b, c=3):
        print("%s, %s, %s, %s" % (a, b, c, self.__field))

o = Object('testowy obiekt')
o.method(1, 2)
try:
    o.method(1, 2, 'C')
except TypeError:
    print("Ojej, coś jest nie tak tutaj..")
def meta_func(func):
    def inner_func(self, a, b, c=3):
        print("Początek")
        func(self, a, b, c)
        print("Koniec")
    
    return inner_func

class Object(object):
    def __init__(self, arg):
        self.__field = arg
    @meta_func
    def method(self, a, b, c=3):
        print("%s, %s, %s, %s" % (a, b, c, self.__field))

o = Object('testowy obiekt')
o.method(1, 2)
o.method(1, 2, 'C')<jupyter_output>Początek
1, 2, 3, testowy obiekt
Koniec
Początek
1, 2, C, testowy obiekt
Koniec
{'fraction_non_alphanumeric': 0.18968785542777708, 'fraction_numerical': 0.009351699734613927, 'mean_word_length': 3.0962732919254656, 'pattern_counts': {'":': 0, '<': 4, '<?xml version=': 0, '>': 4, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '483748', 'license': 'BSD-3-Clause', 'n_tokens_mistral': 3381, 'n_tokens_neox': 3411, 'n_words': 881, 'path': 'doc/lab06/functions.ipynb', 'repo_name': 'pasuder/labs', 'size': '7913'}