将list-type参数传递给Python中的函数

时间:2016-07-11 15:22:37

标签: python local-variables

我知道通常通过引用传递给函数的参数。这对我来说意味着如果我将一个参数引用到一个函数并且在该函数内部我改变它,那么该改变也将适用于原始变量。换句话说:

>>> l1 = [0,]
>>> def f1(l):
    l[0] += 1


>>> l1
[0]
>>> f1(l1)
>>> l1
[1]
>>> 

Q1:为什么不可变类型,行为不同?

>>> s1 = "0"
>>> def f2(s):
    s += "1"


>>> s1
'0'
>>> f2(s1)
>>> s1
'0'
>>> 

我认为如果参数是可变的,它会自行更改,否则将在本地方法中使用相同的名称创建一个新变量,并且更改将不会应用于外部变量。我是对的吗?

当我使用带有默认值的参数时,这些参数在函数调用中被定义为堆栈中的局部变量,对吧?在返回该功能时,它们变得不可用。

所以,让我们看一个片段:

>>> def f3(i , l=list()):
    l.append(i)
    print l


>>> f3(1)
[1]
>>> f3(1)
[1, 1]
>>> 

Q2:为什么我在第二次通话中收到[1, 1]而不是单[1]? Python没有重复定义函数调用的本地输入参数吗?

0 个答案:

没有答案