【发布时间】:2019-04-26 11:10:49
【问题描述】:
我正在处理我的一个小组项目,代码的每一部分都非常混乱。我想提高导入的可读性。在我看来,20 行凌乱的导入会损害代码的主要结构。
所以这里是导入的一部分:
import datetime
import os
import json
import re
import psycopg2 as dbapi2
from datetime import datetime
from datetime import date
from flask import Flask, jsonify
from flask import redirect
我想用类似这样的方式导入所有这些:
import importLibs
importLibs()
为此,我尝试了How to make global imports from a function? 的解决方案并想出了这个:
def importLibs():
globals()['datetime' ] = __import__('datetime' )
globals()['os' ] = __import__('os' )
globals()['json' ] = __import__('json' )
globals()['re' ] = __import__('re' )
globals()['dbapi2' ] = __import__('psycopg2' )
globals()['date' ] = __import__('datetime' )
globals()['Flask' ] = __import__('flask.Flask' )
globals()['jsonify' ] = __import__('flask.jsonify' )
globals()['redirect' ] = __import__('flask.redirect' )
但它失败了:
ModuleNotFoundError: No module named 'flask.Flask'
【问题讨论】:
-
“在我看来,20 行凌乱的导入会损害代码的主要结构。”真的没有。
-
回应上述评论;您对导入列表(许多 IDE 会为您崩溃)的解决方案是添加一个间接层。即使这可行,当您需要引用依赖项时,您也必须首先转到一个完全不同的文件。当我们说这最终会让您的生活更加艰难时,请相信我们。
-
如果你想提高可读性,使用由对 Python 工作原理有深刻理解的人编写的样式指南,以及社区实际使用的指南不是更好吗?请记住,可读性也来自于遵循已知和已建立的模式。我建议您查看PEP 8,而不是在实施可能与您打算做的完全相反的事情时遇到麻烦。
-
其实你没事。认为这将是更好的编码约定对我来说是愚蠢的。 IDE 无论如何都会折叠导入段。感谢您的关注。