41. 函数参数传递是值传递还是引用传递 ------------------------------------- 在python中没有指针,引用,对象本身之分。任何变量都是一个对象的引用, 指向实际的对象,都是对象的引用。 在函数参数传递时,都是传递的是变量的值,而不是传递的引用,都是通过值传递的。 在函数体内部会根据参数来创建局部变量。 对于不可变的数据类型来说,如果这些局部修改了,就是新创建一个对象,将函数的 局部变量指向一个新的对象。对函数外面的变量不受任何影响。 如果是可变数据类型。如果我们修改的是对象的一部分,那修改就是对函数外面的 对象的修改;如果直接对变量进行赋值,则产生了一个新对象,则不会对被 调用的对象产生影响。 我们举一个例子来说明:: def fn(name, info): print ("name:", name) print ("info", info) # info, name均为局部变量 name="tianjin" #函数体之外的name没有发生改变,这里新创建了一个对象。 info[0]=1300 #函数体之外的info对象发生了改变 info=[1, 1] #新创建一个对象,并赋值给info变量。 name="beijing" info=[2300, 1200] print(name, info) fn(name, info) print(name, info) """ 输出内容为: beijing [2300, 1200] name: beijing info [2300, 1200] beijing [1300, 1200] """