列出python中的变量概念

时间:2018-08-16 15:05:08

标签: python

关于python中的列表的问题:我在该列表中有一个程序正在生成并分配给另一个变量,但是对于两个变量仍然获得相同的输出...无法理解其功能。

代码:

def extendList (val, list=[]):
    list.append(val)
    return list
list1 = extendList (10)
list2 = extendList (123, [])
list3 = extendList ('a')

print list1, list2, list3

2 个答案:

答案 0 :(得分:0)

在命令中

def extentList (val, list=[]):

列表变量仅在一次进行初始化-在首次调用后仍保持不变。

将代码替换为

def extentList (val, list=None):
    if list is None:
        list = []
    list.append(val)
    return list

请参见Python教程中的Default parameter values are evaluated when the function definition is executed

... if the function modifies the object (e.g. by appending an item to a list),
the default value is in effect modified...

print list1之后紧跟list1 = ...放置print list2,在list2 = ...之后紧跟list1,以查看list3list1相同列表-您使用默认参数创建了list3list1 = extendList (10) print list1 list2 = extendList (123, []) print list2 list3 = extendList ('a') print list1, list2, list3 ,并且使用了默认参数-列表-仅初始化一次(即也被创建)一次

[10]
[123]
[10, 'a'] [123] [10, 'a']

输出:

items(
  input {
      id: $id,
      category: $category,
      url: $url,
      alias: $alias,
      name: $name
  }
)

答案 1 :(得分:0)

发生这种情况是由于默认列表值。列表值在函数的每个调用处均保持不变

  

“ Python的默认参数在定义函数时进行一次评估,而不是在每次调用函数时都进行评估(例如Ruby)。这意味着,如果您使用可变的默认参数并对它进行突变,则将已将该对象也更改为将来对该函数的所有调用。”

来自here