Domanda per principianti Python con Assegnazione di variabili

2

Venendo da C # e ora mi sporcano le mani con Python.

Da quanto ho capito, Python è strongmente digitato:

link

Come indicato nell'esempio dal link SO sopra:

bob = 1
bob = "bob"

Mi sembra di ricordare di aver letto da qualche parte che queste sono 2 variabili separate, invece della stessa variabile che cambia da un "int" a un "str" (riassegnazione).

Posso vedere che entrambi i vars avevano ID diversi.

Alcuni chiarimenti per favore?

    
posta Vippy 16.04.2015 - 04:22
fonte

1 risposta

3

Il valore di bob è 1 come dalla prima riga di codice che assegna 1 a una variabile chiamata bob. Quindi la stringa "bob" viene assegnata alla variabile bob, sostituendo il valore di 1. È la stessa variabile, solo con valori diversi. Questa è una digitazione dinamica poiché il programma verrà controllato quando vengono eseguite queste righe di codice.

La tipizzazione "strong" e "debole" sono termini imprecisi ma Python rientra nel gruppo "strong". Ad esempio:

test1 = 1
test2 = "this is a string"

test3 = test1 + test2 #This will fail at runtime.

In particolare l'errore sarà questo:

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    test3 = test1 + test2
TypeError: unsupported operand type(s) for +: 'int' and 'str'

Se Python fosse tipizzato debolmente, questo avrebbe funzionato, probabilmente come concatenazione di stringhe. È richiesto il casting esplicito di test1 tramite la funzione str () per fare lo stesso in Python.

I diversi indirizzi per 1 e "bob" nell'esempio iniziale hanno a che fare con 1 e "bob" essendo entrambi alias per gli oggetti. Poiché non sono lo stesso oggetto, hanno indirizzi diversi. bob il nome della variabile è solo un'etichetta per uno di questi due riferimenti all'oggetto. Specificamente, a seconda di quale sia stato assegnato per ultimo.

    
risposta data 16.04.2015 - 04:38
fonte

Leggi altre domande sui tag