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

如何在其他文件中调用main.py的main函数内定义的row、col变量

问题核心原因

Python函数内部定义的局部变量默认仅在函数运行时的内部作用域生效,不会自动挂载为函数对象的属性,因此你直接导入main函数后调用main.row会触发属性不存在的报错。

可行解决方案

方法1:参数透传(最推荐,耦合度最低)

这是最符合模块化开发规范的写法,不需要跨文件共享全局状态:

  • 第一步:main.py调用options函数时,直接将row、col作为入参传递
    示例代码:
# main.py 代码
from options_movies import options
def main():
    row = int(input("请输入影院排数:"))
    col = int(input("请输入影院列数:"))
    # 调用时传入参数
    options(row, col)

if __name__ == "__main__":
    main()
  • 第二步:options_movies.py中的options函数定义时接收这两个参数,触发查看座位逻辑时再透传给show_the_seats方法即可
    示例代码:
# options_movies.py 代码
from show_seats import show_the_seats
def options(row, col):
    # 其他业务逻辑
    if user_choice == "查看座位":
        show_the_seats(row, col)

方法2:全局变量存储(适合小型项目快速开发)

如果你的项目规模很小,不想调整过多函数的参数定义,可以将行列值存在模块的全局作用域:

  • 首先在main.py的全局作用域定义变量,函数内部修改时声明global关键字:
# main.py 代码
row = 0
col = 0
def main():
    global row, col
    row = int(input("请输入影院排数:"))
    col = int(input("请输入影院列数:"))
    # 后续调用options函数无需额外传参
  • 其他文件需要取值时,直接导入整个main模块即可(注意不要只导入main函数):
# 其他文件的代码
import main
show_the_seats(main.row, main.col)

方法3:手动挂载函数属性(不推荐,仅做原理补充)

你最初的写法也可以实现,只要在main函数运行时手动给函数对象挂载属性即可:

# main.py 代码
def main():
    row = int(input("请输入影院排数:"))
    col = int(input("请输入影院列数:"))
    # 手动给函数对象绑定属性
    main.row = row
    main.col = col

这种写法存在变量生命周期风险,后续维护成本很高,不建议正式项目使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:15:03