печально быть антисоциальным -

Feb. 19th, 2007

01:08 pm

Previous Entry Add to Memories Tell A Friend Next Entry

>>> def something(x = []):
...   x += ['foo']
...   return x
...  
>>> something()
['foo']
>>> something()
['foo', 'foo']
>>> something()
['foo', 'foo', 'foo']
>>> something([1])
[1, 'foo']
>>> something()
['foo', 'foo', 'foo', 'foo']

(5 comments | Leave a comment)

Comments:

From:[info]bubu
Date:February 19th, 2007 - 01:29 pm
(Link)
Naiss. Nācās padomāt.
(Reply to this)
[User Picture]
From:[info]misame
Date:February 19th, 2007 - 01:42 pm
(Link)
a man nedalec ;(
tā pirmā rinda taču nozīmē, ka tiek definēta funkcija ar parametru x un ja x'a nav, tad tā vietā ņemam tukšu sarakstu?
tad kāpēc, izpildot vēlreiz, x vērtība ir saglabājusies kopš iepriekšējās izpildes? Vai arī Python (ja pareizi sapratu) nenodala parametros saņemtos mainīgos no globālajiem?
Un tad vēl tā pēdējā rinda vispār nojauc galvu.
(Reply to this) (Thread)
[User Picture]
From:[info]smejmoon
Date:February 19th, 2007 - 02:07 pm
(Link)
"Default parameter values are evaluated when the function definition is executed."
http://docs.python.org/ref/function.html

Funkcijas definēšanas laikā tiek radīts šis objekts un saglabājas visos f-jas izsaukumos, kur nepieciešams.
(Reply to this) (Parent) (Thread)
[User Picture]
From:[info]misame
Date:February 19th, 2007 - 02:08 pm
(Link)
mhmm.. tad arī pēdējo rindiņu sapratu ;-)
(Reply to this) (Parent)
[User Picture]
From:[info]bez4pieci
Date:February 19th, 2007 - 04:40 pm
(Link)
jocīgs tas pitons tomēr
(Reply to this)