Types inside a function in Python. Why some gets updated but not others? -


this question has answer here:

why calling several times in row following function:

a = []  def test(a,b):     if b > 0:         a.append(1)         return 

with test(a,4), enlarges list each time, calling several times in row function:

a = 0  def test(a,b):     if b > 0:         += 1         return 

with test(a,4) returns 1 every single time instead of 1, 2, 3, etc.?

it looks lists updated function , retain updated value after function finished execute, while behavior doesn't hold integers (and guess floats , several other types).

integers immutable; lists mutable. a += 1 changes value of a reassigning value refers to. a.append(1) adds value 1 list a refers to, without changing reference itself.

in test function, a if reference within function's scope; not same reference a in global scope. however, when passing mutable object, reference remains same; allowing object modified without need reassign variable. in function

def test(a, b):     if b > 0:         += 1         return 

the value of a modified relative test. reassign value globally, need perform action in global scope (or use global keyword). so, instead of test(a, 4), use a = test(a, 4) reassign value of a.


Comments

Popular posts from this blog

angular - Ionic slides - dynamically add slides before and after -

minify - Minimizing css files -

Add a dynamic header in angular 2 http provider -