student_name
是不是常数?
student_name = ""
while len(student_name) > 1:
int(input(User input name of student and store this in variable student_name))
答案 0 :(得分:2)
这取决于你所谓的常数。 Python具有不可变对象。像字符串。请记住,在Python中,变量基本上是对象上的标签。所以,如果你写
x = 'foo'
标签x
用于不可变字符串'foo'
。如果你那么做
x = 'bar'
你没有改变字符串,你只是将标签挂在另一个字符串上。
但是不可变的对象并不是我们通常认为的常量。在Python中,常量可以被认为是不可变的标签;一个变量(标签),一旦分配就无法更改。
直到最近,Python还没有那些。通过约定,全大写的名称表示不应该更改它。但这并没有被语言强制执行。
但是自从Python 3.4(并且还向后移植到2.7)以来,我们有enum
模块来定义不同类型的枚举类(实际上是单例)。枚举基本上可以用作常量组。
以下是比较文件的函数返回枚举的示例;
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
这使您无需查看每次使用compare
的返回值时实际意味着什么。
定义后,您无法更改enum
的现有属性。这里有一个惊喜;您可以稍后添加新属性,然后可以更改这些属性。
答案 1 :(得分:0)
不,没有。您不能在Python中将变量或值声明为常量。只是不要改变它。
如果你在课堂上,那么等同于:
class Foo(object):
CONST_NAME = "Name"
如果没有,那只是
CONST_NAME = "Name"
以下代码段可能会帮助您Link。