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

Python内部函数应用求助:重构投资决策判断函数

嵌套内部函数实现投资决策判断

你需要把sanityCheck和grahamNumberCalculator嵌套进is_investable作为内部函数,最终通过is_investable直接返回是否值得投资的判断结果。下面是调整后的完整实现,附详细说明:

完整嵌套实现代码

import math

def is_investable(MarketPrice, EarningsPerShare, BookValuePerShare, CurrAssets, Liabilities, Debt, EarningOverTime):
    # 内部函数:计算格雷厄姆数
    def grahamNumberCalculator(EPS, BVPS):
        ConstInt = 22.5
        IntermediateValue = ConstInt * EPS * BVPS
        HighestPrice = math.sqrt(IntermediateValue)
        return HighestPrice
    
    # 内部函数:基本面合理性检查
    def sanityCheck(CurrAssets, Liabilities, Debt, EarningOverTime):
        first_check = CurrAssets >= 1.5 * Liabilities
        second_check = (Debt / CurrAssets) < 1.1
        # 检查所有盈利周期数据为正
        fourth_check = all(earning > 0 for earning in EarningOverTime)
        
        return first_check and second_check and fourth_check
    
    # 调用内部函数获取核心判断数据
    highest_price = grahamNumberCalculator(EarningsPerShare, BookValuePerShare)
    sanity_pass = sanityCheck(CurrAssets, Liabilities, Debt, EarningOverTime)
    
    # 最终投资决策判断
    return MarketPrice <= highest_price and sanity_pass

关键调整说明

  • 嵌套结构实现:将两个辅助函数直接定义在is_investable内部,仅在外部函数范围内可见调用,满足嵌套需求。
  • 参数逻辑优化:修改is_investable的入参,直接接收所有原始业务数据(如每股收益、流动资产等),无需外部提前计算中间结果,调用更便捷。
  • sanityCheck简化:移除原版本中用列表存储判断结果的冗余写法,改用布尔变量+all()函数直接判断逻辑,代码更简洁高效。
  • 内部调用流程:在外部函数内依次调用两个内部函数获取判断依据,再执行最终的投资决策逻辑,返回布尔值结果。

使用示例

# 测试用示例数据
market_price = 50
eps = 4
bvps = 12
curr_assets = 100000
liabilities = 50000
debt = 90000
earnings_over_time = [3000, 4500, 5200]

# 调用函数输出投资判断结果
print(is_investable(market_price, eps, bvps, curr_assets, liabilities, debt, earnings_over_time))

内容的提问来源于stack exchange,提问作者El jio fred

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:45:34