我应该有一个单独的Python导入文件吗?什么是最佳实践?

2024-09-23 16:18:39 发布

您现在位置:Python中文网/ 问答频道 /正文

main.py:
import sys
import os
import datetime
import numpy
from util import *

util.py:
import sys
import os
import logging
  1. main.py中是否需要“导入系统”和“导入操作系统”

  2. 如果main.py和util.py中都有“import sys”和“import os”,脚本会加载模块两次吗

如果我创建一个单独的myimports.py文件,其中包含两个文件的所有导入,并在main.py和util.py中指定:

from myimports import *
  1. 是否每个文件都必须导入它不需要的模块

  2. 我应该只保留各自的导入,而不使用单独的myimports.py文件吗

  3. 如果我只需要sys的Path,那么如果我使用以下命令,脚本的加载速度会更快还是占用更少的内存:

    从系统导入路径#


Tags: 模块文件frompyimportnumpy脚本datetime
2条回答
  1. 很难回答,这取决于它是否在main.py代码中使用

  2. 否,python导入系统缓存已计算的模块。导入后,任何请求相同模块的导入语句都将从全局注册表返回该模块。这件事有起有落

  3. 如果我理解正确的话——这通常是一种不好的做法(在编写库或迁移具有复杂向后兼容性的代码时有一些例外)。您应该将每个模块中的导入视为此模块依赖项的提示,就像函数中的参数一样。它们更清晰、更明确——更容易阅读和理解您的代码。这是你首先应该考虑的主要因素(如果不是唯一的话)

  4. 在使用导入功能的模块中保留导入。导入包装器是一个相当奇怪的想法——它可能在罕见的情况下有一些用途,但在正常的日常开发中,它会减少true code quality

  5. 没有区别,一旦您从任何地方的sys(或任何其他模块)请求任何内容,整个sys都将被评估并放入模块注册表。但通常显式导入确实是一件好事from sys import path提示您的模块依赖于Path。类似import sys的内容传达了“我非常依赖sys模块,因此一次导入所有内容更容易”。在第一种情况下,读者期望处理PYTHONPATH的典型工作,在后一种情况下——硬编码系统级“元编程”

    此操作的副作用–由于模块作为一个整体导入和缓存,在完成此导入后,从任何其他模块中的sys进行的任何导入都将很快(直到请求强制重新加载或手动更改注册表)

这里有一些你可能会觉得有用的东西。对不起,我没有回答你所有的问题

我创建了这个python文件目录

python_files
            \main.py
            \my_imports.py

在my_.py中

# module to get current time    
from datetime import datetime

current_time = datetime.now()

在main.py中

# import my_imports file from the same directory    
import my_imports as my_imports 

# use my_imports local name to access current_time and then format it. 
current_time = my_imports.current_time.strftime("%H:%M:%S")

# now print to console
print("Current Time =", current_time)

现在运行main.py,它会将当前时间打印到控制台。希望这个技巧能为您提供解决方案

相关问题 更多 >