Dang Bader : dbader.org
Si vous souhaitez vous moderniser dans le monde Python et apprendre plein de petites astuces, je vous conseille de vous inscrire ici sur https://dbader.org/.
Voici quelques petites news que je résume et que je traduis en français :
Supprimer temporairement une exception
Il est possible de supprimer temporairement une exception en utilisant contextlib.suppress()
.
Exemple concret :
import contextlib
with contextlib.suppress(FileNotFoundError):
os.remove('monfichier.tmp')
Voici l’équivalent du bon try/except
des familles :
try:
os.remove('monfichier.tmp')
except FileNotFoundError:
pass
Méthodes de classe vs méthodes statiques
Le code parle de lui-même :
class MaClasse:
def methode_normale(self):
return 'instance method called', self
@classmethod
def methode_de_classe(cls):
return 'class method called', cls
@staticmethod
def methode_statique():
return 'static method called'
# Appels sur une instance :
# tout fonctionne :
>>> obj = MaClasse()
>>> obj.methode_normale()
('instance method called',
>>> obj.methode_de_classe()
('class method called',
>>> obj.staticmethod()
'static method called'
# Appels directs : voyez le résultat :
>>> MaClasse.methode_de_classe()
('class method called',
>>> MaClasse.methode_statique()
'static method called'
>>> MaClasse.methode_normale()
TypeError:
"unbound method methode_normale() must be called with MaClasse"
"instance as first argument (got nothing instead)"
Désassembler un binaire Python
>>> def greet(name):
... return 'Salut, ' + name + ' !'
>>> greet('Olivier')
'Salut, Olivier !'
>>> import dis
>>> dis.dis(greet)
2 0 LOAD_CONST 1 ('Salut, ')
2 LOAD_FAST 0 (name)
4 BINARY_ADD
6 LOAD_CONST 2 ('!')
8 BINARY_ADD
10 RETURN_VALUE
2 comments