Aktywne Wpisy

Salido +213
Minął 21. (z 66) dzień wakacji.
Najtragiczniejszy dzień tych wakacji
W ciągu ostatniej doby miało miejsce 11 wypadków śmiertelnych w których zginęło 12 osób.
93
Najtragiczniejszy dzień tych wakacji
W ciągu ostatniej doby miało miejsce 11 wypadków śmiertelnych w których zginęło 12 osób.
93
źródło: 1-453841-6
Pobierz
PiotrFr +17
Mariusze węszą kolejny spisek producentów po suvach i elektrykach.
Oczywiście ta "klasyczna motoryzacja" to koniecznie R4, najlepiej w klekocie ( ͡° ͜ʖ ͡°)
#motoryzacja #samochody
Oczywiście ta "klasyczna motoryzacja" to koniecznie R4, najlepiej w klekocie ( ͡° ͜ʖ ͡°)
#motoryzacja #samochody
źródło: 1000022423
Pobierz




decorator, acontext managerw Pythonie?To są dwie różne struktury, ale w gruncie rzeczy pozwalające na uzyskanie tego samego efektu, czyli zamknięcie jakiegoś działania/funkcji/fragmentu kodu wewnątrz innej czynności. Czyli w sumie dzięki nim dostajemy dość uniwersalny wrapper.
Odnoszę wrażenie, że w 100% przypadków możemy używać tych konstruktów zamiennie, ale gdyby tak faktycznie było, to nikt by tego nie implementował. Jest między nimi jakaś zasadnicza różnica? Kiedy je stosować?
#python #programowanie
Natomiast dekoratory służą faktycznie do wzbogacenia funkcjonalności, coś na wzór adnotacji w Javie (chociaż zasada ich działania jest diametralnie inna).
Context managery sa najczesciej uzywane do resource handling (zarzadzania zasobami?). Zasadniczo jezeli musisz wywolac na jakims obiekcie metode 'close' po zakonczeniu akcji to powinno to byc zrobione z wykorzystaniem context managera. Z innych context managerow masz jeszcze Lock z threading, tez warty obczajenia.
Swoja droga sa one tak popularne, ze masz im poswiecony caly modul contextlib. Od pythona 3.2 (?) mozesz
@dog_meat: @zarev: Ale to chyba tylko wynika z ogólnie przyjętego schematu/przyzwyczajeń, nie?
Ja mam raczej wrażenie, że kontekst managera używamy jeżeli mamy dłuższą funkcję i jej fragment zamykamy w managerze. Natomiast dekoratora użyjemy do zamknięcia całej zawartości jakiejś funkcji. Przez co ostatecznie nie zależy to od wykonywanego przez nas działania, a od tego jak zorganizowaliśmy swój kod i jak
decorator to natomiast wzorzec projektowy który pozwala ci rozszerzać możliwości funkcji/klasy bez jej bezpośredniej modyfikacji.
nie widzę związku między tymi rzeczami
składniowo w pythonie są podobne,
oczywiście możesz napisać decorator który będzie się zachowywał jak kontext menegar, ale nie powinieneś i takie coś nie powinno też przejść w code review. python jest po prostu syfiastym językiem wbrew pozorom i nie warto się uczyć na nim programować bo za dużo pozwala i robi tylko mętlik w głowie. w
@gryzon_c: No ale skoro równie dobrze mógłbym sobie otwierać/zamykać plik dekoratorem, albo rozszerzyć funkcję wywołując ją z obrębu context managera, to jakiś związek jest?
Na razie z tego co widzę główna różnica jest taka, że context manager zawsze działa na zasadzie generatora.
@gryzon_c: No funkcja też w sumie jest obiektem
coś jak syntax klas w es6 gdzie w js są dalej prototypy, ale dużo ludzi jest uradowanych bo można definiować klasy - w rzeczywistości dalej nie można