Writing Functions in Python
Shayne Miel
Software Architect @ Duo Security
def foo(x): x[0] = 99my_list = [1, 2, 3]foo(my_list)print(my_list)
[99, 2, 3]
def bar(x): x = x + 90my_var = 3bar(my_var)print(my_var)
3

a = [1, 2, 3]

a = [1, 2, 3]b = a

a = [1, 2, 3]b = aa.append(4)print(b)
[1, 2, 3, 4]

a = [1, 2, 3]b = aa.append(4)print(b)
[1, 2, 3, 4]
b.append(5)print(a)
[1, 2, 3, 4, 5]

a = [1, 2, 3]b = aa.append(4)print(b)
[1, 2, 3, 4]
b.append(5)print(a)
[1, 2, 3, 4, 5]
a = 42

def foo(x):
x[0] = 99

def foo(x): x[0] = 99my_list = [1, 2, 3]

def foo(x): x[0] = 99my_list = [1, 2, 3]foo(my_list)

def foo(x): x[0] = 99my_list = [1, 2, 3]foo(my_list)print(my_list)
[99, 2, 3]

def bar(x): x = x + 90my_var = 3

def bar(x): x = x + 90my_var = 3bar(my_var)

def bar(x): x = x + 90my_var = 3bar(my_var)my_var
3

Immutable
Mutable
def foo(var=[]): var.append(1) return varfoo()
[1]
foo()
[1, 1]
def foo(var=None): if var is None: var = [] var.append(1) return varfoo()
[1]
foo()
[1]
Writing Functions in Python