Je dirais que la méthode la plus Python est de faire en sorte que l'utilisateur passe toujours une liste, même si elle ne contient qu'un seul élément. Cela rend vraiment évident func()
peut prendre une liste de fichiers
def func(files):
for cur_file in files:
blah(cur_file)
func(['file1'])
Comme Dave l'a suggéré, vous pourriez utiliser le func(*files)
mais je n'ai jamais aimé cette fonctionnalité, et il semble plus explicite ("l'explicite est meilleur que l'implicite") de simplement exiger une liste. Cela transforme également votre cas spécial (appel de func
avec un seul fichier) dans le cas par défaut, car maintenant vous devez utiliser une syntaxe supplémentaire pour appeler func
avec une liste..
Si vous voulez faire un cas spécial pour un argument qui est une chaîne, utilisez la fonction isinstance()
intégré et comparer à basestring
(qui à la fois str()
y unicode()
sont dérivés) par exemple :
def func(files):
if isinstance(files, basestring):
doSomethingWithASingleFile(files)
else:
for f in files:
doSomethingWithFile(f)
Vraiment, je suggère d'exiger simplement une liste, même avec un seul fichier (après tout, cela ne nécessite que deux caractères supplémentaires !)