Существуют ли какие-либо «ошибки», связанные с наличием константы, которая является списком или любым другим изменяемым объектом?
В настоящее время мой контекст связан с константами, которые будут переданы в вызов, но я задаю вопрос в общем, поскольку я не чувствую, что тема значимо влияет на вопрос.
Рассмотрим этот пример кода:
#!/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()
Я спрашиваю об этом, потому что прекрасно осведомлен о проблемах, которые возникают из-за изменяемых объектов в определениях функций; И, хотя я понимаю, что никогда не должно быть ничего, что делало бы присваивание или изменение уважаемой константе; и что «константы» на самом деле не вещь: я спрашиваю, и далее спрашиваю, могут ли быть какие-то соглашения для семантической защиты себя от случайных мутаций?
LS_FLAGS = ('-l', '-a')
неизменяем. Если вам нужно иметь его в виде списка при последующем использовании, приведите его к списку с помощьюlist(LS_FLAGS)
. Просто обратите внимание, что хотя кортеж неизменяем, изменяемый объект внутри этого кортежа по-прежнему остается изменяемым. Это спорно для строк, но если бы у вас были списки внутри ваших кортежей, вы могли бы видоизменять списки. - person paidhima   schedule 21.02.2015final
, поэтому вы не можете присваивать переменным какие-либо другие значения после их создания? - person MeetTitan   schedule 21.02.2015