Я кодирую игру, где, если пользователь предоставляет слово, игра использует это слово. В противном случае программа должна выбрать случайное слово из словаря. Словарь - это глобальный список. В настоящее время случайный случай по умолчанию всегда будет оцениваться до 0, но в любом случае правильно оценивается.Python - len (x) не оценивается в параметрах?
Код:
def game(i = random.randint(0, len(dictionary))):
print 'default random:', i
print 'random inside function:', random.randint(0, len(dictionary))
Выход:
default random: 0
random inside function: 40403
Может не Python оценивать Len внутри параметров?
Это может быть, но вы должны поместить логику приложения внутри функции вместо ее подписи. –
Возможный дубликат [«Наименьшее удивление» в Python: разрешимый аргумент по умолчанию] (http://stackoverflow.com/questions/1132941/least-astonishment-in-python-the-mutable-default-argument) –
Нет, это не могу. Это по дизайну. Значения по умолчанию оцениваются во время определения функции, а не во время вызова функции. –