Puis-je utiliser type
comme nom pour un argument de fonction python?Puis-je utiliser le nom de variable "type" comme argument de fonction dans Python?
def fun(name, type):
....
Puis-je utiliser type
comme nom pour un argument de fonction python?Puis-je utiliser le nom de variable "type" comme argument de fonction dans Python?
def fun(name, type):
....
Vous pouvez, mais vous ne devriez pas. Ce n'est pas une bonne habitude d'utiliser les noms de built-ins, car ils remplaceront le nom du built-in dans cette portée. Si vous devez utiliser ce mot, modifiez-le légèrement pour le contexte donné.
Même si cela n'aura probablement pas d'importance pour un petit projet qui n'utilise pas type
, il est préférable de ne pas utiliser les noms de mots-clés/built-ins. Le Python Style Guide fournit une solution pour cela si vous devez absolument utiliser un nom qui est en conflit avec un mot-clé:
single_trailing_underscore_: utilisé par convention pour éviter les conflits avec mot-clé Python, par exemple
BTW, comme le type est un mot générique, souvent surutilisé, l'ajout d'un qualificatif comme dans "car_type" ou "animal_type" fait pour un programme plus auto-documentant de toute façon – mjv
je l'habitude d'utiliser 'tipe', mais j'ai toujours détesté le comme ça. maintenant j'utilise 'typ' – rbp
Hahah, c'est une blague @rbp, non? ...droite? – Bloke
Vous pouvez, mais vous masquer le type de nom intégré. Donc il vaut mieux ne pas faire ça.
Vous pouvez utiliser n'importe quel mot clé qui suit les règles d'identificateur comme identificateur. type
n'est pas un mot-clé, mais l'utiliser ombrera le type
intégré.
Vous pouvez, et c'est bien. Même si le conseil de ne pas ombrer les builtins est important, il s'applique plus fortement si un identifiant est commun, car cela augmentera la confusion et la collision. Il ne semble pas type va causer de la confusion ici (mais vous en saurez plus à ce sujet que quiconque), et je pourrais utiliser exactement ce que vous avez.
+1 pour mentionner la confusion potentielle. Je pense que c'est un problème beaucoup plus important que le problème technique d'éventuellement occulter un builtin: quelqu'un lisant le code (peut-être même la personne qui l'a écrit) peut s'attendre à ce que 'type' se réfère au builtin. Les chances d'occulter accidentellement le 'type' intégré semblent petites en comparaison: elles ne sont pas souvent utilisées en code réel. –
Vous pouvez utiliser _type
pour cette
# Example
def foo(_type):
pass
Si vous utilisez type
, vous ne pouvez pas utiliser type()
dans cette fonction
>>> #For Example
>>> type('foo')
<type 'str'>
>>> type = 'bar'
>>> type('foo')
...
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: 'str' object is not callable
Le nom 'category' peut fonctionner correctement si vous vraiment pas envie de spécifier le type de quoi, comme dans 'foo_type'. – cloudrave