我正在开发一个用于处理一些科学数据的Python包。在其他模块和包中有多个经常使用的类和函数,包括numpy,我几乎需要在包的任何模块中定义的每个函数。

Pythonic的处理方式是什么?我已经考虑过多种变体,但每个都有自己的缺点。

>从外部模块导入Class1,Class2,function1,function2导入模块级别的类

然后可以从每个功能轻松访问导入的函数和类。另一方面,它们污染模块命名空间,使dir(package.module)和帮助(package.module)与导入的函数混淆

>从外部模块导入Class1,Class2,function1,function2导入功能级别的类

函数和类可以方便地访问,并且不会污染模块,但是在每个函数中从最多十个模块导入看起来很多重复的代码。

>使用import foreignmodule导入模块级别的模块

由于需要将模块名称添加到每个功能或类别调用中,所以不需要太多的污染。

>使用一些人工变通方法,例如对所有这些操作使用函数体,并仅返回要导出的对象…像这样

def _export():

from foreignmodule import Class1, Class2, function1, function2

def myfunc(x):

return function1(x, function2(x))

return myfunc

myfunc = _export()

del _export

这就解决了这两个问题,模块命名空间污染和功能的易用性,但它似乎根本不是Pythonic。

那么什么解决方案是最坚定的?还有另一个好的解决方案我忽略了吗?

python 模块命名空间_如何在python模块中执行导入而不污染其命名空间?相关推荐

  1. python 线性回归模型_如何在Python中建立和训练线性和逻辑回归ML模型

    python 线性回归模型 Linear regression and logistic regression are two of the most popular machine learning ...

  2. python 概率分布函数_如何在Python中实现这五类强大的概率分布

    匿名用户 1级 2016-04-25 回答 首页 所有文章 观点与动态 基础知识 系列教程 实践项目 工具与框架应用 工具资源 伯乐在线 > Python - 伯乐在线 > 所有文章 &g ...

  3. python 获取当前目录_如何在Python中获取当前的工作目录?

    python 获取当前目录 To get the current working directory in Python, there is a library function getcwd() i ...

  4. python自增_如何在python语言实现自增和自减功能并显示结果

    在python语言中,跟Java和JavaScript语言不一样,python中没有自增和自减功能,而Java和JavaScript中有.但是,python语言可以使用变量加1或减1替换.下面利用几个 ...

  5. linux python开发环境_如何在Linux系统中搭建Python编程环境

    1 在大多数的Linux系统中,基本上都默认安装了Python,也就是说,在Linux的系统中基本上是不需要安装什么软件,就可以使用Python. 下面以ubuntu操作系统为例,看看如何在Linux ...

  6. python进程暂停_如何在Python中暂停多进程?

    我希望用户能够在怎么开始的实现它?在 我的代码是:# -*- coding: utf-8 -*- from PySide import QtCore, QtGui from Ui_MainWindow ...

  7. python 拟合正态分布_如何在Python中拟合双高斯分布?

    我试图使用Python获得数据(link)的双高斯分布.原始数据的格式为: 对于给定的数据,我想获得图中所示峰值的两个高斯分布.我用以下代码(source)进行了尝试:from sklearn imp ...

  8. python mqtt库_如何在 Python 中使用 MQTT

    Python 是一种广泛使用的解释型.高级编程.通用型编程语言.Python 的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或者关键词).Python 让开发者能 ...

  9. python 字节流分段_如何在Python中编写简单代码,并且速度超越Spark?

    全文共 3482字,预计学习时长 7分钟 如今,大家都在Python工具(pandas和Scikit-learn)的简洁性.Spark和Hadoop的可扩展性以及Kubernetes的操作就绪之间做选 ...

最新文章

  1. mysql 前30秒_mysql – 简单查询需要15-30秒
  2. [Embeding-3]综述:词嵌入以及与分布式语义模型的关联
  3. selenium 等待_Selenium等待:内隐,外显,流利和睡眠
  4. 【计算机网络复习 数据链路层】3.5.5 CSMA-CA协议
  5. django-创建项目-创建应用-注册应用-配置mysql连接pycharm-连接django-生成数据表
  6. 「代码随想录」精讲了18道力扣上贪心算法经典题目,总结了这些!
  7. Git 命令 clone、add、status、commit、push、init 使用介绍.
  8. SDPT3 4.0版——半正定二次线性规划的Matlab软件
  9. android 高德地图之poi搜索功能的实现
  10. 贝叶斯公式——假阳性问题
  11. shell遍历多个数组
  12. css鼠标拖拉卡顿_浅谈CSS3 动画卡顿解决方案
  13. 网页前端(HTML)
  14. python 自定义函数
  15. 基于USB2.0的视频图像处理芯片实现方案
  16. 互联网慢病管理-软件架构设计
  17. css实现点击内容切换div
  18. USACO-Section 3.2 Spinning Wheels(模拟)
  19. html显示转发次数,qq空间中说说被转发的次数不显示出来的原因 – 手机爱问
  20. PowerPmac上位机开发C#(一)_组件安装与环境配置

热门文章

  1. Oracle10g中安装Perl环境所产生的冲突
  2. Cocos2d-xna : 横版战略游戏开发实验5 TiledMap实现关卡地图
  3. Linux下常用 60个命令
  4. MPLS-组网组网方案助连锁餐饮网络升级改造
  5. 具有实际意义的5种云遣返
  6. 文件系统与数据库的优缺点
  7. 【C++】源自指针的报错
  8. 安装setuptools与pip
  9. Oracle 截取字符串,取系统时间
  10. 2015年蓝桥杯C/C++ B组题目题解