python-3.x - 我收到一个错误,即未定义函数内的变量
问题描述
在我的以下代码中,我的代码中重复了以下代码行,因此我尝试将它们插入函数中并在需要时调用它们,但是发生了错误,我不知道为什么:
list1=[1000,2000,3000,4000,5000]
i=0
c=0.5
n=1000
def func(list1,i,c,n):
x=list1[i]/2
y=x*c
z=n-y
if z<=0:
list1.pop(i)
func(list1,i,c,n)
print('x=',x,'y=',y,'z=',z)
当我尝试执行代码时,出现未定义 x 或 y 或 z 的错误。
解决方案
在函数内部创建的变量只存在于函数结束之前。如果您希望x
,y
和z
在全局范围内可用,则需要声明您喜欢这种行为。您可以通过在函数开头添加以下行来指示变量将是全局变量:
def func(new_x):
global x
x = new_x
func(5)
print('x=', x)
例如,这将打印 5。您可以global
使用逗号一次声明多个变量,如下所示:
def func(new_x):
global x, y
x = new_x
y = new_x+1
func(5)
print(f'x={x} y={y}')
这将打印x=5 y=6
. 注意我用来格式化字符串的方式。它被称为 f-string,你可以在这里阅读它。
推荐阅读
- javascript - 纯 Javascript 模态不会显示在同步进程中
- java - 声明多个有效的最终资源时,try-with-resource 是否不安全?
- udp - LibVLCSharp UWP 应用程序未在某些网络上运行
- ti-basic - 为什么我的 TI-BASIC 程序在猜谜游戏中显示错误的输出?
- node.js - 使用 AWS SDK 为事件桥规则添加 AWS Lambda 作为目标
- c# - CodeFresh 上的 C# Selenium 测试未加载测试文件
- java - 如何使用 JPA Criteria API 检索不同行的数量
- kubernetes - K8s - 在 K8s 升级之前无法升级 statefulset API
- python - 在 For 循环中添加用户输入,在 0 输入后中断
- google-analytics - GA4 中的 ga:visits 等效项是多少?