Python多文件/文件夹编程方法及start.sh、requirements.txt疑问解答
多文件编程相关问题解答
一、多文件编程的实现与作用
实现方法
Python里实现多文件编程很直接:
- 把不同功能的代码拆分到独立的
.py文件中,比如把数据处理逻辑放在data_handler.py,主程序放在main.py - 用
import语句引用其他文件的内容,比如import data_handler或者from data_handler import process_data - 如果用文件夹组织多个文件(也就是Python包),需要在文件夹里加一个
__init__.py文件(可以是空文件,用来标识这个文件夹是Python包)
核心作用
- 模块化拆分:把复杂功能拆成小模块,比如爬虫项目里,请求网页的代码放
spider.py,解析数据的放parser.py,找代码、改代码都更方便 - 代码复用:同一个函数/类可以在多个文件里调用,不用重复写相同的代码
- 提升可读性:单个文件代码量减少,结构清晰,别人看你的代码能快速理解各个模块的作用
- 便于协作:多人开发时可以各自负责不同模块,不会互相干扰
二、GitHub常见文件解析
start.sh
这是一个Shell脚本,用来自动化项目启动流程,避免手动敲一堆命令。比如项目需要先装依赖、设置环境变量再运行,把这些步骤写进start.sh,执行一次脚本就能搞定。
示例内容:
#!/bin/bash # 安装依赖 pip install -r requirements.txt # 运行主程序 python main.py
运行前需要给脚本加执行权限:chmod +x start.sh,然后执行./start.sh就行。
requirements.txt
用来记录项目依赖的所有Python包和对应的版本号。其他人拿到你的项目时,直接跑pip install -r requirements.txt就能一键安装所有需要的包,避免出现“我这里能跑你那里跑不了”的版本兼容问题。
示例内容:
requests==2.31.0 numpy==1.26.0 pandas==2.1.1
可以用pip freeze > requirements.txt命令自动生成当前环境的依赖列表,不用手动写。
三、导入函数时变量未定义的报错解决
你遇到的问题是变量作用域不匹配:file1里的command()函数找的是它自己作用域里的list,但你把list定义在file2里,两者完全是两个独立的变量,所以会报错“list未定义”。
给你三个实用的解决方法:
方法1:把变量作为参数传给函数
修改file1的代码:
def command(target_list): print(target_list)
file2里调用时把list传进去:
my_list = [1,2,3] # 建议不要用list当变量名,会覆盖内置函数 from file1 import command command(my_list)
方法2:把共享变量放到单独文件
如果多个文件都要用到这个变量,建议新建一个config.py:
# config.py my_list = [1,2,3]
然后file1和file2都从这里导入:
# file1.py from config import my_list def command(): print(my_list)
# file2.py from config import my_list from file1 import command command() # 会打印[1,2,3]
这种方法能避免循环导入的问题,结构也更清晰。
方法3:在函数所在文件定义变量
如果这个变量是command()专用的,直接在file1里定义:
# file1.py my_list = [1,2,3] def command(): print(my_list)
file2导入后直接调用就行:
# file2.py from file1 import command command()
内容的提问来源于stack exchange,提问作者Rando
相关产品推荐
相关产品推荐

