当从子程序包中导入某些内容时,有什么建议?

方案A:

from sklearn.model_selection import train_test_split
from sklearn import preprocessing

train_test_split()
preprocessing()

方案B:

import sklearn

sklearn.model_selection.train_test_split()
sklearn.preprocessing()

在我看来,使用选项A,当您在导入函数后看到它很多行时,您可能不知道它来自哪里.在选项B中,您总是知道它来自哪里,因为它更冗长.但是,您始终需要编写完整的路径函数.这是一种劣势吗?

你有什么建议?

推荐答案

由于您只需要导入所需的特定函数,并且可以在没有父模块前缀的情况下使用它们,因此选项A更简洁,并且可以使代码更易于阅读和编写.但是,从多个模块导入具有相同名称的函数有时可能会导致命名冲突.

尽管很冗长,但选项B避免了命名冲突,并澄清了每个函数的来源.此外,它使您能够看到每个函数是哪个子包的一部分,这在导航相当大的代码库时很有用.但是,如果使用同一子程序包中的多个函数,则使用每个函数的完整路径会更加困难.

选项A和B之间的 Select 最终取决于您的项目的特定要求和您的个人编码偏好.通常,如果您只是从子程序包中导入几个函数,选项A可能更适合.如果您要导入大量函数或存在名称冲突的可能性,则选项B可能是更好的替代方案.

Python相关问答推荐

如何编写一个正规表达式来查找序列中具有2个或更多相同辅音的所有单词

PyQt5如何将pyuic 5生成的Python类添加到QStackedWidget中?

Pandas :多索引组

Pythind 11无法弄清楚如何访问tuple元素

如何检测背景有噪的图像中的正方形

max_of_three使用First_select、second_select、

在Python中处理大量CSV文件中的数据

用Python解密Java加密文件

如何使用根据其他值相似的列从列表中获取的中间值填充空NaN数据

为一个组的每个子组绘制,

Django—cte给出:QuerySet对象没有属性with_cte''''

Python Pandas获取层次路径直到顶层管理

从Windows Python脚本在WSL上运行Linux应用程序

Python Tkinter为特定样式调整所有ttkbootstrap或ttk Button填充的大小,适用于所有主题

python中csv. Dictreader. fieldname的类型是什么?'

如何获取Python synsets列表的第一个内容?

在二维NumPy数组中,如何 Select 内部数组的第一个和第二个元素?这可以通过索引来实现吗?

不允许 Select 北极滚动?

递归函数修饰器

GPT python SDK引入了大量开销/错误超时