Python 中的列表、变量赋值和函数

失败更好

我有以下代码:

def proc2(p):
    p=p+[1]
y=[2,5]
proc2(y)
print(y)


z=[2,5]
z=z+[1]
print(z)

代码的输出是:

[2, 5]
[2, 5, 1]

我知道 y 没有修改[2,5,1]. 但是, y 被重新分配给一个新的 list,也就是[2,5,1],对吗?那为什么y还是指原始值呢?如果 z 的值发生了变化,为什么 y 没有变化?

PS我刚刚问了一个与这个几乎相同问题该问题已被标记为另一个问题的重复。但是,我认为它们有点不同。这就是为什么我再次发布我的问题。我想我一定错过了一些关于功能的东西。

蒂格布

y 被重新分配到一个新列表

不,y = ...您的代码中只有一项作业。

当您的函数执行时会发生以下情况:

# implicitly: assign formal parameter name to actual argument value
p = y

# compute p + [1] => [2, 5, 1]
# assign the result to the name p
p = p + [1]

# aaaand... nothing from here on.

所以你的函数计算一个结果(一个新列表),p在函数范围内分配名称,然后p在函数退出时立即丢失。

如果您不想编写一个改变输入列表的函数,则需要返回计算值并重新分配名称y以查看所需的效果。

>>> def proc2(p):
...     p = p + [1]
...     return p
... 
>>> y = [2,5]
>>> y = proc2(y)
>>> y
[2, 5, 1]

请注意,即使您在函数内部进行y = ...赋值,该名称也将是该函数的本地名称,而外部作用域不会在意:

>>> def proc2(y):
...     y = y + [1]
... 
>>> y = [2,5]
>>> proc2(y)
>>> y
[2, 5]

最后,您可以告诉 Python 您的意思是y函数体内的全局变量,但这被认为是糟糕的风格(在这里和大多数其他情况下)。

>>> def proc2():
...     global y
...     y = y + [1]
... 
>>> y = [2,5]
>>> proc2()
>>> y
[2, 5, 1]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

python中的变量赋值和引用

来自分类Dev

我可以在python中同时进行变量赋值和列表插入吗?

来自分类Dev

在Python 2.7中为列表中的变量赋值

来自分类Dev

Python属性和变量赋值

来自分类Dev

python列表中的无限赋值?

来自分类Dev

带有未赋值变量的 Python 函数

来自分类Dev

为什么我应该在Python中引用“名称”和“绑定”,而不是“变量”和“赋值”?

来自分类Dev

为什么我应该在Python中引用“名称”和“绑定”,而不是“变量”和“赋值”?

来自分类Dev

Python中的函数和可变列表

来自分类Dev

元组匹配与Python中的变量赋值

来自分类Dev

在 Python 中为变量赋值的问题

来自分类Dev

如何在python中连接字符串和变量并在其中赋值

来自分类Dev

Python函数变量赋值与自定义类

来自分类Dev

python函数在列表中增加变量没有明显的原因

来自分类Dev

在面向对象的python中访问变量和函数-python

来自分类Dev

Python中的变量列表

来自分类Dev

为什么Python中的函数可以在封闭范围内打印变量,但不能在赋值中使用它们?

来自分类Dev

了解python变量赋值

来自分类Dev

Python条件变量赋值

来自分类Dev

在Python 2.7中的isinstance函数中实现元组和列表

来自分类Dev

在Python 2.7中的isinstance函数中实现元组和列表

来自分类Dev

在Python中根据列表和固定变量创建字典

来自分类Dev

如何减去列表中项目的值和变量python

来自分类Dev

使用python和postgres,execute函数中的变量?

来自分类Dev

如何从python中的函数返回字典和多个变量?

来自分类Dev

Python中的C函数:返回数组和变量

来自分类Dev

如何在python中的函数内部访问和编辑变量

来自分类Dev

in和index函数的列表[Python]

来自分类Dev

Python 中这种类型的变量赋值是什么?

Related 相关文章

  1. 1

    python中的变量赋值和引用

  2. 2

    我可以在python中同时进行变量赋值和列表插入吗?

  3. 3

    在Python 2.7中为列表中的变量赋值

  4. 4

    Python属性和变量赋值

  5. 5

    python列表中的无限赋值?

  6. 6

    带有未赋值变量的 Python 函数

  7. 7

    为什么我应该在Python中引用“名称”和“绑定”,而不是“变量”和“赋值”?

  8. 8

    为什么我应该在Python中引用“名称”和“绑定”,而不是“变量”和“赋值”?

  9. 9

    Python中的函数和可变列表

  10. 10

    元组匹配与Python中的变量赋值

  11. 11

    在 Python 中为变量赋值的问题

  12. 12

    如何在python中连接字符串和变量并在其中赋值

  13. 13

    Python函数变量赋值与自定义类

  14. 14

    python函数在列表中增加变量没有明显的原因

  15. 15

    在面向对象的python中访问变量和函数-python

  16. 16

    Python中的变量列表

  17. 17

    为什么Python中的函数可以在封闭范围内打印变量,但不能在赋值中使用它们?

  18. 18

    了解python变量赋值

  19. 19

    Python条件变量赋值

  20. 20

    在Python 2.7中的isinstance函数中实现元组和列表

  21. 21

    在Python 2.7中的isinstance函数中实现元组和列表

  22. 22

    在Python中根据列表和固定变量创建字典

  23. 23

    如何减去列表中项目的值和变量python

  24. 24

    使用python和postgres,execute函数中的变量?

  25. 25

    如何从python中的函数返回字典和多个变量?

  26. 26

    Python中的C函数:返回数组和变量

  27. 27

    如何在python中的函数内部访问和编辑变量

  28. 28

    in和index函数的列表[Python]

  29. 29

    Python 中这种类型的变量赋值是什么?

热门标签

归档