Форум сайта python.su
0
Объявляю функцию:
def f(x = []):
print 'x:',x
x.append(123)
print 'now x:',x
>>> f([2])
x: [2]
now x: [2, 123]
>>> f()
x: []
now x: [123]
>>> f()
x: [123]
now x: [123, 123]
>>> f()
x: [123, 123]
now x: [123, 123, 123]
>>> f([43])
x: [43]
now x: [43, 123]
Отредактировано (Март 6, 2011 00:47:53)
Офлайн
0
читайте основы от Лутца http://jenyay.net/blog/2009/02/25/mark-lutc-izuchaem-python/
ибо в Питоне еще много таких “багофич” :)
Офлайн
14
Сделайте dir(f) и догадатесь, где именно хранятся значения для параметров по умолчанию.
Офлайн
32
Андрей Светлов__defaults__
Сделайте dir(f) и догадатесь, где именно хранятся значения для параметров по умолчанию.
Офлайн
1
MarSoftзначение по умолчанию определяется в момент выполнения def. так что, это будет один и тот же список для всех вызовов f(), если хочешь, чтобы каждый раз создавался новый список помести x= в тело самой ф-ции и тогда это будет срабатывать при каждом вызове f()
Объявляю функцию:def f(x = []):
print 'x:',x
x.append(123)
print 'now x:',x
Офлайн
0
Спасибо всем! Теперь понятно… Надеюсь, больше глупых вопросов не возникнет. :) Просто python я начал изучать недавно..
Офлайн