рд╕рд▓рд╛рдо, рдЦрд╝рдмрд░реЛрдВ рдХреЛ!
"рдкрд╛рдпрдерди рдореЗрдВ рд╡реЗрдм-рдбреЗрд╡рд▓рдкрд░" рдкрд╛рдареНрдпрдХреНрд░рдо рдкрд░ рдПрдХ рдирдП рд╕реВрддреНрд░ рдХреЗ рд▓реЙрдиреНрдЪ рдХреА рдкреНрд░рддреНрдпрд╛рд╢рд╛ рдореЗрдВ рд╣рдо рдПрдХ рдирдпрд╛ рдЙрдкрдпреЛрдЧреА рдЕрдиреБрд╡рд╛рдж рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВ!

рдХрдИ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░реЛрдВ рдореЗрдВ
рдлрд┐рд░ рд╕реЗ рдЬрд╛рдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ
рдмрд╛рдж , рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░рдХрд░реНрддрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреИрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред
def f(x, l=[]): for i in range(x): l.append(i * i) return l >>> f(2) >>> f(3, [0, 1, 2]) >>> f(3)
рдкреНрд░рд╢реНрди: рдпрд╣ рдХреЛрдб рдЖрдЙрдЯрдкреБрдЯ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?
рдкрд╣рд▓реА рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рддреАрд╕рд░реА рдкрдВрдХреНрддрд┐
f(3)
рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдореБрдЭреЗ рдЗрддрдирд╛ рд╕реАрдзрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ред рдЖрдЗрдП рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдлрдВрдХреНрд╢рди
f
рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХреНрдпрд╛ рд╣реЛрддрд╛
f
ред рдЗрд╕ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ
IPython рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред
>>> f <function __main__.f(x, l=[])> >>> f.__defaults__ ([],)
рдЦрд╛рд▓реА рд╕реВрдЪреА рдЬрд┐рд╕реЗ рд╣рдо
f.__defaults__
рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдореЗрдВ рдЪрд░
l
рд╣реИред
>>> f(2) [0, 1]
рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВред
>>> f <function __main__.f(x, l=[0, 1])> >>> f.__defaults__ ([0, 1],)
рд╣рд╛рд▓рд╛рдВрдХрд┐! рдЕрдм рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдкрд╛рдпрдерди рдореЗрдВ рд╕реВрдЪреА рдСрдмреНрдЬреЗрдХреНрдЯ
рдХреА рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХреЛрдВ рдХреЛ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд
рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдЪрд░
l
рдХрд╛ рдореВрд▓реНрдп
[0, 1]
ред
>>> f(3, [0, 1, 2]) [0, 1, 2, 0, 1, 4] >>> f <function __main__.f(x, l=[0, 1])>
рдХреБрдЫ рдЦрд╛рд╕ рднреА рдирд╣реАрдВред рдмрд╕ рдЪрд░
l
рд░реВрдк рдореЗрдВ
list
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ред
>>> f(3) [0, 1, 0, 1, 4] >>> f <function __main__.f(x, l=[0, 1, 0, 1, 4])>
рдФрд░ рдЕрдм рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдкред рдЬрдм рдЖрдк
f(3)
рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдкрд╛рдпрдерди рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЦрд╛рд▓реА рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣
f.__defaults__ ([0, 1])
рдХреЗ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде
l
рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдкреБрдирд╢реНрдЪрдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдХреЗ рдмрд╛рдж рдПрдХ рдЦрд╛рд▓реА рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (
'l'
рдХрд╛ рдорд╛рди
'None'
)ред
def f(x, l=None): if l is None: l = [] for i in range(x): l.append(i * i) return l >>> f(2) [0, 1] >>> f(3, [0, 1, 2]) [0, 1, 2, 0, 1, 4] >>> f(3) [0, 1, 4]
рдирд┐рд╖реНрдХрд░реНрд╖
рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдмрдирд╛рдпрд╛ред рдпрд╣ рдкреЛрд╕реНрдЯ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рдЖрдк рд╣рдореЗрд╢рд╛ рдЕрдкрдиреЗ рдЕрдВрддрд░реНрдЬреНрдЮрд╛рди рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ :-) рдкрд░ рдХрд░рддрд╛ рд╣реВрдВред
рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЕрдиреБрд╡рд╛рдж рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ, рд╣рдо рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ
рдкрд╛рдареНрдпрдХреНрд░рдо рдкрд░ рджреЗрдЦрддреЗ рд╣реИрдВред