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

Python跨文件获取函数内全局变量遇NameError,求解决方案

解决跨模块访问全局变量的问题

错误原因

file_a.py中的date1、date2是file_a模块的全局变量,并非file_b.py的全局变量。即便调用了file_a.timestamp()初始化这些变量,在file_b里直接写date1依然会找不到,因为当前作用域不存在这个变量名。

方案1:通过模块名访问全局变量

直接通过导入的模块对象访问其全局变量,修改file_b.py如下:

import file_a

# 调用模块内的函数初始化全局变量
file_a.timestamp(value1, value2)
# 通过模块名访问目标变量
get_date = file_a.date1

方案2:推荐——让函数返回结果(避免依赖全局变量)

全局变量容易引发不可预期的问题(比如被其他代码意外修改),更规范的做法是让timestamp函数直接返回需要的日期值:

修改file_a.py:

def timestamp(value1, value2):
    # 移除global声明
    (...)
    # 注意:日期要加引号,否则01/01/01会被解析为除法运算(结果是1.0)
    date1 = "01/01/01"
    date2 = "02/02/02"
    # 返回需要的变量
    return date1, date2

修改file_b.py:

import file_a

# 调用函数并接收返回值
date1, date2 = file_a.timestamp(value1, value2)
get_date = date1

额外提示

原代码中date1 = 01/01/01会被Python解释为(1)/(1)/(1),最终结果是1.0,如果要表示日期字符串,必须加上引号,写成"01/01/01"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 00:18:16