** Notes sur Python efficace ** Élément 4: Écrire des fonctions d'assistance au lieu d'expressions complexes
** Ecrivez une fonction d'aide car écrire une expression compliquée en une seule phrase réduira la lisibilité ** Si vous en avez envie, python mettra une énorme quantité de syntaxe dans une phrase, mais elle sera très difficile à lire, vous devriez donc fournir une fonction d'aide pour améliorer la lisibilité.
#Demander des arguments à partir de la requête URL
from urllib.parse import parse_qs
my_values = parse_qs('red=5&blue=0&green=',
keep_blank_values=True)
print('red: ', my_values.get('red'))
print('green: ', my_values.get('green'))
print('opacity: ', my_values.get('opacity'))
>>>
red: ['5']
green: ['']
opacity: None
⇒ Lorsqu'il n'y a pas de valeur, il vaut mieux unifier à zéro
#Comparez avant et après l'expression à l'aide de l'opérateur ou
red = my_values.get('red', [''])[0] or 0
green = my_values.get('green', [''])[0] or 0
opacity = my_values.get('opacity', [''])[0] or 0
print('red: %r' % red)
print('green %r' % green)
print('opacity %r' % opacity)
>>>
red: '5'
green 0
opacity 0
J'ai pu le faire, mais c'est difficile à voir. .. .. De plus, il existe des cas où vous souhaitez traiter des nombres avec des formules mathématiques au lieu de chaînes de caractères. Alors enveloppons-le avec int ()!
red = int(my_values.get('red', [''])[0] or 0)
print('red: %r' % red)
>>>
red: 5
C'est assez difficile à voir. Peu de gens peuvent le comprendre en un coup d'œil. Vous n'avez pas besoin de ranger autant de choses dans une ligne en premier lieu.
Jugons facilement la condition avec if / else
red = my_values.get('red', [''])
red = int(red[0]) if red[0] else 0
print('red: %r' % red)
>>>
red: 5
C'est un peu soigné, mais la description de la déclaration if n'est pas belle Si vous l'écrivez avec une instruction if stricte
red = my_values.get('red', [''])
if red[0]:
red = int(red[0])
else:
red = 0
print('red: %r' % red)
>>>
red: 5
C'est transmis, mais c'est difficile à revoir.
def get_first_int(values, key, default=0):
found = values.get(key,[''])
if found[0]:
found = int(found[0])
else:
found = default
return found
red = get_first_int(my_values, 'red')
print('red: %r' % red)
>>>
red: 5
python a beaucoup de descriptions utiles, mais si vous l'utilisez trop, il restera lisible. Écrivez beaucoup de fonctions d'assistance en fonction de la situation.
Recommended Posts