是否存在与列表常量或任何其他可变对象相关的“陷阱”?
目前,我的上下文与将传递给调用的常量有关,但我一般地问这个问题,因为我认为该主题不会对问题产生有意义的影响。
考虑这个示例代码:
#!/usr/bin/env python
# This file was not tested before posting.
import subprocess
LS_FLAGS = ['-l', '-a']
def main():
subprocess.call(['ls'] + LS_FLAGS)
if __name__ == '__main__':
main()
我问这个是因为我非常清楚函数定义中的可变对象引起的问题;而且,即使据我所知,也不应该有任何事情对受人尊敬的常数进行分配或突变;并且“常量”并不是真正的东西:我问,并进一步问,是否有一些约定可以在语义上保护自身而不是意外突变?