In Python, function arguments are always passed by reference. This can be verified by checking id() of factual, formal arguments and returned object
def foo(x): print ("id of received argument",id(x)) x.append("20") return x a = ["10"] print ("id of argument before calling function",id(a)) b = foo(a) print ("id of returned object",id(b)) print (b) print (a)
The id() of a, x inside foo() and b are found to be same.
id of argument before calling function 1475589299912 id of received argument 1475589299912 id of returned object 1475589299912