疯狂大学生 2024-01-06 21:32 采纳率: 0%
浏览 4

python问题-变量问题-全局局部

img


关于这个询问:在函数内有[9 9] 在全局变量x=[1 2 3]受L添加8之后 输出结果居然都是[1 2 3 8] 局部变量的x的列表不会影响[9 9 8]?

  • 写回答

2条回答 默认 最新

  • 游戏开发小Y Unity3D领域新星创作者 2024-01-06 23:09
    关注

    首先,我们需要明确一点,Python中的变量作用域规则是“赋值在哪里,变量就属于哪里”。这意味着,如果你在函数内部对一个变量进行赋值,那么这个变量就变成了局部变量,即使它在全局作用域中已经被定义。

    让我们通过一个例子来理解这个问题:

    x = [1, 2, 3]  # 这是全局变量x
    
    def my_function():
        x = [9, 9]  # 在函数内部,我们重新定义了局部变量x
        x.append(8)  # 我们向这个局部变量x添加了一个元素8
        print(x)  # 输出:[9, 9, 8]
    
    my_function()  # 调用函数
    
    print(x)  # 输出:[1, 2, 3, 8]
    

    在这个例子中,我们首先定义了一个全局变量x,然后定义了一个函数my_function。在函数内部,我们重新定义了x为[9, 9],然后向这个局部变量x添加了一个元素8。当我们调用函数并打印函数内部的x时,我们得到了[9, 9, 8]。但是,当我们打印全局变量x时,我们得到了[1, 2, 3, 8]。这是因为全局变量x在函数外部被修改了,添加了元素8。

    所以,对于你的问题,“局部变量的x的列表不会影响[9 9 8]”,实际上是影响的。在函数内部对x的修改会影响到全局变量x,因为我们在全局作用域中修改了它。如果你希望在函数内部修改的x不影响全局变量x,你需要使用不同的变量名。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月6日

悬赏问题

  • ¥15 关于#.net#的问题:End Function
  • ¥50 用AT89C52单片机设计一个温度测量与控制电路
  • ¥15 无法import pycausal
  • ¥15 VS2022创建MVC framework提示:预安装的程序包具有对缺少的注册表值的引用
  • ¥15 weditor无法连接模拟器Local server not started, start with?
  • ¥20 6-3 String类定义
  • ¥15 嵌入式--定时器使用
  • ¥20 51单片机学习中的问题
  • ¥30 Windows Server 2016利用兩張網卡處理兩個不同網絡
  • ¥15 Python中knn问题