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

Python如何在主程序调用嵌套函数结果并打印 报NameError怎么解决

补充说明:提问者后续更新表示代码本身无问题,报错是所使用的在线IDLE网站故障导致。

报错原因

你遇到的 NameError: name 'vaam' is not defined 报错在常规Python环境下由两个问题导致:

  • 缩进与代码执行顺序错误:loan 函数内部的计算逻辑没有正确缩进,且 vaam 函数的定义放在了 loan 函数的 return 语句之后。Python中函数内部代码需要统一缩进,且return执行后后续代码永远不会运行,相当于vaam函数实际从未被定义。
  • 作用域规则限制:Python中嵌套定义在函数内部的函数属于外层函数的局部作用域,全局代码默认无法直接访问,就算vaam被正确定义在loan内部,全局直接调用vaam()也会触发未定义报错。

修正方案

如果要求必须将vaam函数嵌套在loan函数内部,可以通过将嵌套函数绑定为外层函数属性的方式暴露给全局调用,修改后可运行代码如下:

# 计算月供的外层函数
def loan(principal,annual_interest_rate,duration):
    # 嵌套定义计算剩余余额的函数
    def vaam(principal, annual_interest_rate, duration , number_of_payments):
        n = duration * 12
        r = annual_interest_rate / 1200
        
        if annual_interest_rate == 0:
            remaining_loan_balance = principal - principal * (number_of_payments / n)
        else:
            remaining_loan_balance = (principal * ((1 + r) ** n - (1 + r) ** number_of_payments)) / ((1 + r) ** n - 1)
        return remaining_loan_balance
    
    # 将嵌套函数绑定为外层函数的属性,全局可访问
    loan.vaam = vaam

    # 原有月供计算逻辑
    r = annual_interest_rate / 1200
    n = duration * 12
    if annual_interest_rate == 0:
        monthly_payment = principal / n
    else:
        monthly_payment = (principal * (r * (1 + r) ** n)) / ((1 + r) ** n - 1)
    return monthly_payment

# 主程序
principal = float(input("Enter loan amount: "))
annual_interest_rate = float(input("Enter annual interest rate (percent): "))
duration = int(input("Enter loan duration in years: "))

monthly_pay = loan(principal, annual_interest_rate, duration)
print('LOAN AMOUNT:', int(principal), 'INTEREST RATE (PERCENT):', int(annual_interest_rate))
print('DURATION (YEARS):', int(duration), 'MONTHLY PAYMENT:', int(monthly_pay))

for i in range(1, duration + 1):
    balance = loan.vaam(principal, annual_interest_rate, duration, i * 12)
    print('YEAR:', i, 'BALANCE:', int(balance), 'TOTAL PAYMENT:', int(monthly_pay * 12 * i))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:24:02