keywords: Python 自定义函数,导入模块,使用包,示例
description: 本文介绍了在Python中引入自定义函数或模块的多种方法,包括在同一文件中定义和调用函数、从另一个Python文件导入函数、从同一目录的多个模块导入以及使用包导入。并提供了示例代码展示如何实现这些方法。
在Python中,可以通过多种方式引入自定义的函数或模块。以下是几种常见的方法:
1. 在同一文件中定义和调用函数
如果你的函数和调用它的代码在同一个文件中定义,那么直接调用即可:
def my_function():print("Hello from my_function!")# 调用函数my_function()
2. 从另一个Python文件导入函数
如果你将函数定义在一个单独的Python文件中(例如,my_module.py),并希望在另一个文件中使用它,可以使用import语句导入。
假设有一个my_module.py文件,内容如下:
# my_module.pydef my_function():print("Hello from my_function!")
在你的主脚本中(例如,main.py),你可以这样导入和使用:
# main.pyfrom my_module import my_function# 调用函数my_function()
3. 从同一目录的多个模块导入
如果你有多个模块需要相互导入,并且它们位于同一目录下,可以使用相对导入或绝对导入。
假设目录结构如下:
my_project/├── module_a.py├── module_b.py└── main.py
module_a.py 中定义了一个函数:
# module_a.pydef function_a():print("Hello from function_a in module_a!")
你可以在 main.py 中导入并使用这个函数:
# main.pyfrom module_a import function_a# 调用函数function_a()
4. 使用包导入
如果你的项目结构较为复杂,可以将相关模块放在一个包中。包是包含 __init__.py 文件的文件夹。
假设目录结构如下:
my_project/├── my_package/│ ├── __init__.py│ ├── module_a.py│ └── module_b.py└── main.py
module_a.py 中定义了一个函数:
# my_package/module_a.pydef function_a():print("Hello from function_a in module_a!")
你可以在 main.py 中导入并使用这个函数:
# main.pyfrom my_package.module_a import function_a# 调用函数function_a()
示例
假设你有以下两个文件:
process_md.py:
import osfrom pathlib import Pathignore_words = ["ignore", "skip", "omit"]def should_ignore_file(filename, ignore_words):"""检查文件名是否包含任何忽略词"""return any(word in filename for word in ignore_words)def process_markdown_files(source):# 遍历源文件夹中的所有文件和文件夹for root, dirs, files in os.walk(source):for file in files:# 检查文件扩展名是否为.md且不包含忽略词if file.endswith('.md') and not should_ignore_file(file, ignore_words):source_file_path = Path(root) / file# 读取.md文件的所有行with open(source_file_path, 'r', encoding='utf-8') as md_file:lines = md_file.readlines()# 打印文件内容print(f"内容来自 {source_file_path}:")for line in lines:print(line, end='')print("\n---\n")# 在第二行插入“已处理”if len(lines) >= 1:lines.insert(1, "已处理\n")# 将修改后的内容写回到原.md文件中with open(source_file_path, 'w', encoding='utf-8') as md_file:md_file.writelines(lines)print(f"Processed {source_file_path}")
main.py:
from process_md import process_markdown_filessource_dir = Path('/path/to/source')# 调用函数处理文件process_markdown_files(source_dir)
这样,你的 main.py 文件会导入 process_md.py 中定义的函数,并调用它来处理指定目录下的Markdown文件。确保在运行 main.py 时,source_dir 变量的值是你的源文件夹的实际路径。
