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

Python中如何保存globals()创建的动态变量并在后续循环中调用

实现方法

方案1:下载阶段直接存入字典(更推荐)

不需要通过globals()生成全局变量,直接用字典存储所有DataFrame,避免命名空间污染,后续调用也更方便,代码修改如下:

import pandas as pd
import pandas_datareader.data as web

start = "2019-01-01"
end = "2020-01-01"
assets = ["FB" , "AMZN" , "AAPL" , "NFLX" , "GOOG"]
stock_dict = {} # 专门存储所有股票DataFrame的字典

for ticker in assets:
    try:
        stock_dict[ticker] = pd.DataFrame(web.DataReader(ticker, "yahoo", start, end))
        # 如果要保留Stock_前缀的键,可以写成:stock_dict[f"Stock_{ticker}"] = ...
    except Exception as e:
        print(f"{ticker} 下载出错:{e}")

方案2:基于已生成的全局变量提取为字典

如果你已经运行了原有代码生成了Stock_FB这类全局变量,可以用如下方式批量收集到字典中:

stock_dict = {}
for ticker in assets:
    var_name = f"Stock_{ticker}"
    if var_name in globals(): # 避免不存在的变量报错
        stock_dict[ticker] = globals()[var_name]

循环调用DataFrame执行操作

拿到stock_dict之后,直接遍历字典的键值对就能批量处理所有数据,示例如下:

for ticker, df in stock_dict.items():
    # 以下为自定义操作示例,可替换为你需要的逻辑
    print(f"========== {ticker} 数据概览 ==========")
    print(df.describe())
    # 示例:计算收盘价均值
    close_mean = df['Close'].mean()
    print(f"{ticker} 区间收盘价均值:{round(close_mean, 2)}")
    # 示例:导出为单独的csv文件
    df.to_csv(f"{ticker}_2019行情.csv")

小提示:你原有代码的except块中break写在了print("Error")前面,会导致出错时永远不会打印错误提示,建议调整顺序,而且不推荐直接用裸except,最好捕获具体异常或者打印异常信息方便排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:45:04