Jupyter Notebook(Java)中遇Unresolved dependencies错误及变量复用问题
解决方法间变量共享的问题
你遇到的Unresolved dependencies错误,本质是变量作用域问题——方法内部定义的变量默认是局部变量,其他方法无法直接访问。以下是几种符合项目要求的解决方案:
方案1:通过返回值传递变量(推荐轻量场景)
让获取输入的方法返回两个变量,后续方法通过参数接收这些值,逻辑清晰且符合函数式编程规范:
# 方法1:获取用户输入并返回 def get_inputs(): total_money = float(input("请输入总金额:")) total_visitors = int(input("请输入总访客数:")) return total_money, total_visitors # 方法2:使用输入值执行计算(示例逻辑) def calculate_avg_spend(total_money, total_visitors): return total_money / total_visitors if total_visitors != 0 else 0 # 方法3:输出计算结果(示例逻辑) def print_results(average_spend): print(f"平均每位访客消费:{average_spend:.2f}元") # 主方法:串联所有流程 def run_program(): money, visitors = get_inputs() avg_spend = calculate_avg_spend(money, visitors) print_results(avg_spend) # 单独测试每个方法 get_inputs() calculate_avg_spend(1500, 60) print_results(25.0) # 运行完整程序 run_program()
方案2:用类封装变量(推荐复杂场景)
把相关变量和方法封装到类中,通过实例属性共享数据,代码结构更清晰,扩展性更强:
class VisitorAnalytics: def __init__(self): self.total_money = 0.0 self.total_visitors = 0 # 获取用户输入的方法 def collect_inputs(self): self.total_money = float(input("请输入总金额:")) self.total_visitors = int(input("请输入总访客数:")) # 计算平均消费的方法 def compute_avg_spend(self): return self.total_money / self.total_visitors if self.total_visitors != 0 else 0 # 打印结果的方法 def display_results(self): avg = self.compute_avg_spend() print(f"平均每位访客消费:{avg:.2f}元") # 运行完整流程的方法 def execute(self): self.collect_inputs() self.display_results() # 单独测试每个方法 analytics = VisitorAnalytics() analytics.collect_inputs() print(analytics.compute_avg_spend()) # 运行完整程序 analytics.execute()
方案3:全局变量(不推荐,仅作了解)
将变量声明为全局变量,方法内部用global关键字引用,但这种方式会破坏代码的封装性,增加维护难度,仅适合极简单的场景:
total_money = 0.0 total_visitors = 0 def get_inputs(): global total_money, total_visitors total_money = float(input("请输入总金额:")) total_visitors = int(input("请输入总访客数:")) def calculate_avg_spend(): global total_money, total_visitors return total_money / total_visitors if total_visitors != 0 else 0 def print_results(): avg = calculate_avg_spend() print(f"平均每位访客消费:{avg:.2f}元") def run_program(): get_inputs() print_results() # 测试与运行 get_inputs() calculate_avg_spend() run_program()
内容的提问来源于stack exchange,提问作者Dibbs Snacks
相关产品推荐
相关产品推荐

