You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中UnboundLocalError报错修复:局部变量'y'未赋值即引用

错误原因与修复方案

错误根源

你遇到的UnboundLocalError是因为在F4函数的第25行y = (a*x)/(b*y)中,右边的变量y在赋值前从未被定义过。Python在执行这行代码时,找不到y的初始值,因此触发报错。

修复方案

根据你注释里的函数形式F(x; y) = (a · x) / (b · y),分两种场景处理:

场景1:你实际想定义的是显函数(注释中的y为笔误)

如果函数应该是y = (a·x)/b(去掉分母的y),直接修改F4函数:

#F(x; y) = (a · x) / b (修正后的显函数)
def F4(a, b):
    x = np.linspace(-6,9,100)
    y = (a*x)/b  # 移除分母中的y
    return x, y

调用部分无需修改,直接保留x, y = F4(a, b)即可。

场景2:确实要实现隐函数(a·x)/(b·y)

原函数F(x,y)=(a·x)/(b·y)是一个隐函数(无法直接表示为y=f(x)的单值形式),整理后等价于b·y² = a·x。需要生成正负两支曲线来绘制:

#F(x; y) = (a · x) / (b · y) → 等价于 b·y² = a·x
def F4(a, b):
    x = np.linspace(0.1,9,100)  # 避免x=0或负数(因y²非负,a/b=5/1>0,故x需≥0)
    y_pos = np.sqrt((a*x)/b)    # 正半支
    y_neg = -np.sqrt((a*x)/b)   # 负半支
    return x, y_pos, y_neg

同时修改调用和绘图代码:

x, y_pos, y_neg = F4(a, b)
plt.plot(x, y_pos, label="F4(x,y): (a · x) / (b · y) (正支)")
plt.plot(x, y_neg, label="F4(x,y): (a · x) / (b · y) (负支)")

完整修复后的代码示例(场景2)

import matplotlib.pyplot as plt
import numpy as np

#F(x;y) = a · x + b · y
def F1(a, b):
    x = np.linspace(-6,9,100)
    y = a*x + b
    return x, y

#F(x; y) = a · x - b · y
def F2(a, b):
    x = np.linspace(-6,9,100)
    y = a*x - b
    return x, y

#F(x; y) = a · x · b · y
def F3(a, b):
    x = np.linspace(-6,9,100)
    y = a*x*b
    return x, y

#F(x; y) = (a · x) / (b · y) → 等价于 b·y² = a·x
def F4(a, b):
    x = np.linspace(0.1,9,100)
    y_pos = np.sqrt((a*x)/b)
    y_neg = -np.sqrt((a*x)/b)
    return x, y_pos, y_neg

plt.title("Euler's method")
plt.xlabel("x")
plt.ylabel("y")

a = 5
b = 1

x, y = F1(a, b)
plt.plot(x, y, label="F1(x,y): a · x + b · y")

x, y = F2(a, b)
plt.plot(x, y, label="F2(x,y): a · x - b · y")

x, y = F3(a, b)
plt.plot(x, y, label="F3(x,y): a · x · b · y")

x, y_pos, y_neg = F4(a, b)
plt.plot(x, y_pos, label="F4(x,y): (a · x) / (b · y) (正支)")
plt.plot(x, y_neg, label="F4(x,y): (a · x) / (b · y) (负支)")

plt.legend()
plt.show()

内容的提问来源于stack exchange,提问作者Magdalena

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 15:55:20