Würde Studentenname eine Konstante sein oder nicht ??Konstanten - Woher weißt du, was eine Konstante ist?
student_name = ""
while len(student_name) > 1:
int(input(User input name of student and store this in variable student_name))
Würde Studentenname eine Konstante sein oder nicht ??Konstanten - Woher weißt du, was eine Konstante ist?
student_name = ""
while len(student_name) > 1:
int(input(User input name of student and store this in variable student_name))
Es hängt davon ab, was Sie eine Konstante nennen würden. Python hat unveränderliche Objekte. wie Saiten. Denken Sie daran, dass Variablen in Python im Grunde Etiketten für Objekte sind. Also, wenn Sie
x = 'foo'
das Label x
für den unveränderlichen String 'foo'
schreiben verwendet. Wenn Sie es dann tun würden:
Sie haben die Zeichenfolge nicht geändert, Sie haben nur die Beschriftung an einer anderen Zeichenfolge aufgehängt.
Aber unveränderlich Objekte sind nicht, was wir allgemein als Konstanten denken. In Python könnte man sich eine Konstante als unveränderliches Etikett vorstellen; eine Variable (Label), die nach der Zuweisung nicht mehr geändert werden kann.
Bis vor kurzem hatte Python diese nicht wirklich. Durch Konvention signalisiert ein Name in Großbuchstaben, dass es nicht geändert werden sollte. Aber das wird nicht durch die Sprache erzwungen.
Aber seit Python 3.4 (und auch zurück zu 2.7) haben wir das enum
Modul, das verschiedene Arten von Aufzählungsklassen definiert (Singletons wirklich). Eine Aufzählung kann grundsätzlich als eine Gruppe von Konstanten verwendet werden.
Hier ist ein Beispiel, wo eine Funktion zum Vergleichen von Dateien eine Aufzählung zurückgibt;
from enum import IntEnum
from hashlib import sha256
import os
# File comparison result
class Cmp(IntEnum):
differ = 0 # source and destination are different
same = 1 # source and destination are identical
nodest = 2 # destination doesn't exist
nosrc = 3 # source doesn't exist
def compare(src, dest):
"""
Compare two files.
Arguments
src: Path of the source file.
dest: Path of the destination file.
Returns:
Cmp enum
"""
xsrc, xdest = os.path.exists(src), os.path.exists(dest)
if not xsrc:
return Cmp.nosrc
if not xdest:
return Cmp.nodest
with open(src, 'rb') as s:
csrc = sha256(s.read()).digest()
if xdest:
with open(dest, 'rb') as d:
cdest = sha256(d.read()).digest()
else:
cdest = b''
if csrc == cdest:
return Cmp.same
return Cmp.differ
Dies erspart Ihnen, was der Rückgabewert von compare
eigentlich bedeutet, jedes Mal wenn Sie es verwenden, um nachschlagen zu müssen.
Sie können vorhandene Attribute des enum
nicht ändern, nachdem es definiert wurde. Es gibt eine Überraschung hier; Sie können später neue Attribute hinzufügen, und diese können geändert werden.
Vielen Dank für Ihre Hilfe: D – Izzy
Nein, gibt es nicht. Sie können eine Variable oder einen Wert in Python nicht als Konstante deklarieren. Ändere es einfach nicht.
Wenn Sie in einer Klasse sind, wäre das Äquivalent sein:
class Foo(object):
CONST_NAME = "Name"
wenn nicht, ist es nur
CONST_NAME = "Name"
Der folgende Codeausschnitt können Sie Link helfen.
Vielen Dank – Izzy
Nein, es wäre keine Konstante, da sich der Wert vermutlich ändert ... obwohl es etwas unklar ist, weil der Code, den du zeigst, den Wert nicht ändert, es einfach _implys_ dass der Wert sich in der while ändern sollte Schleife. – mgilson