Posso usare type
come un nome per un argomento della funzione python?Posso usare il nome variabile "type" come argomento della funzione in Python?
def fun(name, type):
....
Posso usare type
come un nome per un argomento della funzione python?Posso usare il nome variabile "type" come argomento della funzione in Python?
def fun(name, type):
....
È possibile, ma non si dovrebbe. Non è una buona abitudine usare i nomi dei built-in perché sovrascriveranno il nome del built-in in quell'ambito. Se devi usare quella parola, modificala leggermente per il contesto dato.
Anche se probabilmente non è importante per un piccolo progetto che non utilizza type
, è meglio rimanere fuori dall'abitudine di utilizzare i nomi di parole chiave/built-in. Il Python Style Guide fornisce una soluzione per questo se è assolutamente necessario utilizzare un nome che è in conflitto con una parola chiave:
single_trailing_underscore_: usato da convenzione per evitare conflitti con Python parola chiave, per esempio
BTW, dal momento che il tipo è una parola generica, spesso sovrautilizzata, l'aggiunta di un qualifer come in "car_type" o "animal_type" rende comunque un programma di autodocumentazione – mjv
ho usato 'tipe', ma ho sempre odiato il modo in cui sembrava. ora uso 'typ' – rbp
Hahah, è uno scherzo @rbp, giusto? ...destra? – Bloke
È possibile, ma si maschererà il tipo di nome incorporato. Quindi è meglio non farlo.
È possibile utilizzare qualsiasi parola chiave diversa che segue le regole identificatore come identificativo. type
non è una parola chiave, ma utilizzandola verrà applicata l'ombra del type
integrato.
Si può, e va bene. Anche se il consiglio di non usare le shadow builtin è importante, si applica più fortemente se un identificatore è comune, in quanto aumenterà la confusione e la collisione. Non appare tipo causerà confusione qui (ma ne saprai più di chiunque altro), e potrei usare esattamente quello che hai.
+1 per aver menzionato la potenziale confusione. Penso che sia un problema molto più grande del problema tecnico di possedere ombra di un builtin: qualcuno che legge il codice (forse anche la persona che lo ha scritto) potrebbe aspettarsi che 'type' si riferisca al builtin. Le possibilità di ombreggiare accidentalmente il 'tipo 'incorporato sembrano piccole in confronto: non viene usato tutto questo spesso in codice reale. –
È possibile utilizzare _type
per quella
# Example
def foo(_type):
pass
Se si utilizza type
, non è possibile utilizzare type()
in quella funzione
>>> #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
Il nome 'category' può funzionare bene se si davvero non mi sento di specificare il tipo di cosa, come in 'foo_type'. – cloudrave