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
相关产品推荐
相关产品推荐

