
本文介绍如何在 PowerShell(或任意终端)中不修改源码、不启动交互式环境,直接运行 Python 脚本中定义的特定函数,核心方法是使用 python -c 执行动态导入与调用。
本文介绍如何在 powershell(或任意终端)中不修改源码、不启动交互式环境,直接运行 python 脚本中定义的特定函数,核心方法是使用 `python -c` 执行动态导入与调用。
要在 PowerShell(或 CMD、Linux shell 等任意终端)中直接执行 my_file.py 中的 func2(),最简洁可靠的方式是使用 Python 的 -c 参数执行内联命令:
python -c "from my_file import func2; func2()"
该命令会:
- 动态导入 my_file.py 中的 func2 函数(推荐显式导入,避免命名冲突);
- 立即调用该函数;
- 输出:second function。
✅ 正确示例(推荐):
# 在 my_file.py 所在目录下执行 python -c "from my_file import func1, func2; func2()"
⚠️ 注意事项:
- 确保当前工作目录包含 my_file.py,且文件名不含 .py 后缀(导入时用模块名 my_file,而非 my_file.py);
- 不要使用 from my_file import *(虽可行但易引发命名污染,尤其在多函数/同名变量场景);
- 若函数需参数,可直接传入:python -c "from my_file import func2; func2('hello')";
- python -m my_file func2 ❌ 无效——-m 是运行模块作为脚本,但 my_file.py 默认无命令行解析逻辑,需额外实现 if __name__ == '__main__': 分支及 sys.argv 处理才支持该方式。
? 进阶建议(如需频繁调用):
可在 my_file.py 底部添加标准入口,使其支持命令行参数:
# my_file.py
def func1():
print('first function')
def func2():
print('second function')
if __name__ == '__main__':
import sys
if len(sys.argv) > 1 and sys.argv[1] == 'func2':
func2()
elif len(sys.argv) > 1 and sys.argv[1] == 'func1':
func1()
else:
print("Usage: python my_file.py {func1|func2}")
此时可运行:
python my_file.py func2
但若仅需临时、一次性调用,python -c 方案更轻量、无需改动源码,是首选实践。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











