Pour sélectionner une variable basée sur une entrée de chaîne, il existe plusieurs approches viables.
Dictionnaire
Un dictionnaire ordinaire convient souvent pour cela tâche :
get_ext = {'text': ['txt', 'doc'], 'audio': ['mp3', 'wav'], 'video': ['mp4', 'mkv']} get_ext['video'] # returns ['mp4', 'mkv']
Fonction
Si une fonction est requise pour des raisons spécifiques, vous pouvez l'attribuer à la méthode get du dictionnaire :
get_ext = get_ext.get # Equivalent to get_ext = lambda key: get_ext.get(key) get_ext('video') # returns ['mp4', 'mkv']
Ceci renverra Aucun pour les clés inconnues par défaut. Pour générer une KeyError à la place, attribuez-la à get_ext.__getitem__ :
get_ext = get_ext.__getitem__ # Equivalent to get_ext = lambda key: get_ext.__getitem__(key) get_ext('video') # returns ['mp4', 'mkv']
Valeur par défaut personnalisée
Vous pouvez implémenter une valeur par défaut personnalisée en enveloppant le dictionnaire dans un function:
def get_ext(file_type): types = {'text': ['txt', 'doc'], 'audio': ['mp3', 'wav'], 'video': ['mp4', 'mkv']} return types.get(file_type, [])
Optimisation
Pour éviter de recréer le dictionnaire à chaque appel de fonction, vous pouvez utiliser une classe :
class get_ext(object): def __init__(self): self.types = {'text': ['txt', 'doc'], 'audio': ['mp3', 'wav'], 'video': ['mp4', 'mkv']} def __call__(self, file_type): return self.types.get(file_type, []) get_ext = get_ext()
This permet de modifier facilement les types de fichiers reconnus :
get_ext.types['binary'] = ['bin', 'exe'] get_ext('binary') # returns ['bin', 'exe']
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!