关于这个询问:在函数内有[9 9] 在全局变量x=[1 2 3]受L添加8之后 输出结果居然都是[1 2 3 8] 局部变量的x的列表不会影响[9 9 8]?
python问题-变量问题-全局局部
关于这个询问:在函数内有[9 9] 在全局变量x=[1 2 3]受L添加8之后 输出结果居然都是[1 2 3 8] 局部变量的x的列表不会影响[9 9 8]?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注 首先,我们需要明确一点,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,你需要使用不同的变量名。
解决 无用评论 打赏 举报
悬赏问题
- ¥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问题