Closed frenzymadness closed 6 years ago
Místo except:
použij prosím except Exception:
. (Pokud se teda nechceš zmínit že except:
funguje ale nemělo by se používat.)
Když už vysvětluješ try/except, můžeš vysvetlit i něco jako:
try:
print('Zkusme dělit nulou ...')
x = 10 / 0 # !!!
except ArithmeticError:
print('CHYBA, nějaká aritmetická')
except ZeroDivisionError:
print('CHYBA: dělení nulou!')
else:
print('K vyvolání výjimky nedošlo')
finally:
print('Konec ukázky')
Ten poslední příklad moc to while
neukazuje, všechny tři řádky s proměnnou pokusy
můžeš nahradit za for pokusy in range(1, 6)
...
Napadlo mě tohle (vycházím z toho že while
je dobrý když předem nevím kolikrát chci opakovat):
from time import time
# Funkce time() při každém zavolání vrátí aktuální čas v sekundách (od určitého
# pevně daného momentu).
# Chceme skončit po jedné minutě:
cas_konce = time() + 60
while time() < cas_konce:
odpoved = input('Chceš pokračovat? ')
if odpoved == 'ano':
break
elif odpoved == 'ne':
exit('Konec')
else:
print('Nerozumím odpovědi')
else:
print('Už se minutu snažíš odpovědět, radši pokračujme')
print('...')
U toho pass
bych se možná trochu rozepsal nad variantou ...
.
Mně se líbí takováto konvence:
def funkce_ktera_nikdy_nema_nic_delat():
pass
def funkce_ktera_jenom_neni_hotova():
...
To ...
jsem často viděl (a použil) na „live coding“ přednáškách, materiálech a v úkolech pro nedokončený kód, místo kam dopsat řešení či podobnou výpustku.
A pak jsou tu věci, které nejsou hotové ale někdo je chce přesto dát na code review:
def funkce_ktera_neni_hotova_a_dava_to_najevo():
"""Provede složitý distribuovaný výpočet s využitím kvantových jevů"""
# XXX: dodělat!
raise NotImplementedError('tohle ještě nejde, plánováno na verzi 3.11')
Často je ale lepší je takovou funkci v kódu vůbec nemít, resp. mít místo ní jen ten TODO komentář, nebo otevřít issue. (Člověk se setká i s Edit; doplnil jsem raise NotImplementedError()
, které by se podle dokumentace takhle nemělo používat.)NotImplementedError
@encukou Já ti nevím, mně „[…] should raise this exception […] while the class is being developed to indicate that the real implementation still needs to be added.“ přijde jako že by se to tak používat i mělo.
@frenzymadness Už by to mělo jít.
Ha, četl jsem to špatně. Celý život žiju v omylu! Díky!
@encukou Děkuji za review. Vše níže zmíněno je v masteru a já jdu na pátek dodělávat poslední část následující lekce.
Místo except: použij prosím except Exception:. (Pokud se teda nechceš zmínit že except: funguje ale nemělo by se používat.)
Opraveno
Když už vysvětluješ try/except, můžeš vysvetlit i něco jako
Doplnil jsem to tam, i když je to materiál primárně o else
a tak se mi to tam moc nehodilo. Dal jsem to tedy na konec pod nadpis další úrovně.
Napadlo mě tohle (vycházím z toho že while je dobrý když předem nevím kolikrát chci opakovat):
Nápad s časem je super, ale chtěl bych se vyhnout inputu a tak jsem to předělal na náhodné generování čísel s časovým limitem, takže to při zkoušení nevyžaduje neustálé opakování interakce s uživatelem a dobře to demonstruje onen příklad s neznámým počtem průběhů (a jejich délkou).
U toho pass bych se možná trochu rozepsal nad variantou
...
Nad tím jsem hodně při psaní uvažoval a nakonec jsem se rozhodl to tam nedat. Přečetl jsem o tom několik diskusí, příspěvků a vláken na mailing listech a i když to někteří používají jako náhradu za pass a ani core vývojáři jako Guido to primárně nezavrhli, nebylo to přidáno do jazyka za tímto účelem. Pokud vím, primárním cílem a požadavkem od vývojářů numpy bylo usnadnit indexaci ve vícerozměrných maticích, kde se ...
může použít při indexaci/slicování pro vynechání zápisu několika dimenzí. Vím, ničemu to neuškodí, když to v kódu napíšu, ale připadá mi lepší se držet pass
, které je k tomuto účelu vytvořeno než používat Ellipsis objekt, který sice vypadá hezky, ale je určen na něco úplně jiného. Tak0 by to mohlo být matoucí, protože zatímco pass
se nikde jinde nijak jinak nepoužívá, na Ellipsis je možné narazit právě třeba u numpy. Důležitější než volba správného statementu je beztak komentář, který by ji měl odůvodnit.
Co si o tom myslíš?
Přidal jsem k tomu i materiály o rozbalování sekvencí. Podle této trojice v pátek pojedu.
Ode mě dostaneš opět jazykovou korektūru. Mám ji rozdělanou, do pátku ji budeš mít.
https://github.com/frenzymadness/Advanced_PyLadies/tree/master/02_else_pass_unpacking
@Glutexo z nějakého důvodu tě nemůžu přiřadit k tomuto issue. Nejspíše proto, že jsi ještě neodpověděl na pozvání ke spolupráci na tomto projektu.