È una costante o una variabile?

0

Mi chiedevo se un valore definito dall'utente all'inizio di un programma e non modificato dal programma, è considerato una costante o una variabile. So che una costante è una parola / lettera che contiene un valore che non viene modificato durante l'esecuzione di un programma (EG: pi o e), e una variabile è anche una parola / lettera che contiene un valore durante l'esecuzione di un programma, ma il suo valore può essere modificato.

Ad esempio, nel codice sottostante, l'identificatore interest sarà considerato una variabile o una costante?

#Python 3
#Program to calculate the interest gained in a bank account after 1 year

interest=float(input("Interest rate: "))
while True:
    value=float(input("Account value: "))
    value=(value * interest)-value
    print(value)
    print()
    
posta sonrad10 08.01.2017 - 13:47
fonte

2 risposte

8

Le variabili non sono chiamate variabili perché i loro valori possono essere modificati, ma poiché il loro valore non è noto in anticipo - quando si scrive il codice, sono segnaposto per valori che verranno determinati in seguito.

Al contrario, il valore di una costante è noto quando il programma è scritto. Fornire un valore noto a un nome è questione di praticità e manutenibilità.

Il tuo interest sarebbe quindi caratterizzato come variabile, poiché è determinato solo in fase di runtime.

Python non ha un concetto incorporato di costanti. Le costanti sono solo variabili a livello di modulo con la convenzione che non verranno modificate. Secondo PEP-8 styleguide , dovrebbero usare lettere maiuscole, ad esempio:

INTEREST = 0.03
    
risposta data 08.01.2017 - 13:57
fonte
1

Una costante , in qualsiasi linguaggio di programmazione, è un identificatore il cui valore non deve essere modificato una volta è impostato. Non importa quando questo valore viene appreso a condizione che non si possa accedere alla costante con altro che questo valore.

Se desideri distinguere tra tipi di costanti in base a quando il loro valore è noto, i termini sono:

  • Costanti in fase di compilazione (con valore statico)
  • Costanti di tempo di esecuzione (con valori dinamici)

I valori definiti in fase di compilazione direttamente nell'origine sono chiamati letterali. 2 è un letterale.

Quanto bene le costanti sono protette da cambiamenti accidentali varia da lingua a lingua. Una convenzione di denominazione comune per segnalare l'intenzione di non modificare il valore per rendere maiuscolo il nome.

Python ha una tradizione nell'usare convenzioni di denominazione piuttosto che parole chiave per segnalare quali parole chiave avrebbero altrimenti far rispettare. Non esiste una parola chiave const, proprio come non esiste una parola chiave privata. Invece usano CAPITALS_SEPERATED_BY_UNDERSCORES e __PRIVATES_PRECEDED_BY_UNDERSCORES.

Mentre Python non ha una parola chiave const per proteggere una costante da cambiare ci sono modi per simulare la protezione con getter e così via. Se semplicemente non ti fidi dei tuoi colleghi programmatori di rispettare ciò che segnali con la convenzione di denominazione. Molto simile a Java, dove il determinato può sconfiggere queste protezioni usando il riflesso, capire che nulla proteggerà perfettamente questo valore. Assicurati che la convenzione di denominazione sia davvero insufficiente per le tue esigenze prima di costruire le tue protezioni.

    
risposta data 08.01.2017 - 15:22
fonte

Leggi altre domande sui tag