Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # FUNKCJE
- def func1(dane_wejsciowe):
- wynik = []
- for i in dane_wejsciowe:
- print("func1 jest teraz na elemencie {}".format(i))
- wynik.append(i)
- return dane_wejsciowe
- def func2(dane_wejsciowe):
- x = [(i, print("func2 jest teraz na elemencie {}".format(i))) for i in dane_wejsciowe]
- y = [i[0] for i in x] # prostu je wyniki bo poprzednio printowanie stworzyło krotki (element,None)
- # krok y nie ma znaczenia
- # komentarze w kodzie są złe... tutaj to tylko obrazowanie przykładu
- # docstringi nie są złe
- return y
- DANE = [1, 2, 3, 4, 5]
- krok1 = func1(DANE) # func1 produkuje i przekazuje CAŁĄ LISTĘ DO ZMIENNEJ
- krok2 = func2(krok1) # func2 pobiera CAŁĄ LISTĘ wyników i zwraca CAŁĄ LISTĘ przerobionych danych
- # dane przerabiam dodając w każdej funkcji 1
- print("-" * 10 + "oddzielam drukowane sekcje" + "-" * 10)
- # GENERATORY
- def gen1(dane_wejsciowe):
- for i in dane_wejsciowe:
- print("gen1 jest teraz na elemencie {}".format(i))
- yield i # słowo kluczowe yield zamiast return, funkcja oddaje kolejne elementy gdy sie ją o to prosi
- def gen2(dane_wejsciowe):
- for i in dane_wejsciowe:
- print("gen2 jest teraz na elemencie {}".format(i))
- yield i # słowo kluczowe yield zamiast return, funkcja oddaje kolejne elementy gdy sie ją o to prosi
- krok11 = gen1(DANE) # funkcja przyjmuje CAŁE DANE (ale tylko tutaj, gdy odczytujesz plik to FOR po liniach)
- # krok11 to nie pełen wynik, to obiekt "generatora",
- # czyli funkcji która, gdy po niej iterujesz, zwraca wynik dopiero gdy o niego poprosisz
- krok12 = gen2(krok11) # w kroku12 funkcja gen2 pobiera generator i wykonuje swoje obliczenia po 1 elemencie,
- # czyli jak zobaczysz, najpierw element '1' przechodzi przez obie funkcje, potem element '2' itp.
- krok13 = list(krok12)
- # DOPIERO TUTAJ ŻĄDASZ WYKONYWANIA SIE WSZYSTKICH FUNKCJI, do tego miejsca nic sie nie wyprintuje
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement