J'essaie de vérifier chaque index dans une chaîne binaire à 8 chiffres. Si c'est '0'
alors c'est 'OFF'
sinon son 'ON'
.
Y a-t-il un moyen plus concis d'écrire ce code avec une fonction de commutation??
Non ça ne le fait pas. En ce qui concerne la langue elle-même, l'un des principaux Python Principes est de n'avoir qu'un moyen de faire quelque chose. L'interrupteur est redondant sur:
if x == 1:
pass
Elif x == 5:
pass
Elif x == 10:
pass
(Sans l'automne, bien sûr).
L'interrupteur a été introduit à l'origine comme une optimisation du compilateur pour C. Les compilateurs modernes n'ont plus besoin de ces conseils pour optimiser ce type d'instruction logique.
sinon, si c'est une mauvaise pratique, puisqu'ils sont dangereux quand ils deviennent trop longs et impliquent une ramification conditionnelle inutile (peut-être affecter le compilateur/la mise en cache).
essaye ça...
class Functions():
@staticmethod
def func():
print("so - foo")
@staticmethod
def funcWithArgs( junk ):
print(junk, "foo")
# fill in your cases here...
cases = {
"a" : Functions.func ,
"b" : Functions.funcWithArgs ,
"c" : Functions.funcWithArgs
}
def switch( ch, cases, *args ):
try:
len(*args) # empty args
except TypeError:
return cases[ ch ]( )
return cases[ ch ]( *args )
# try out your switch...
switch("a", cases) # "so - foo"
switch("b", cases, "b -") # "b - foo"
switch("c", cases, "c -") # "c - foo"