python - 在 Python 中导入模块 - 最佳实践

标签 python coding-style workflow python-import

我是 Python 新手,因为我想扩展我使用 R 学到的技能。 在 R 中,我倾向于加载一堆库,有时会导致函数名冲突。

什么是 Python 的最佳实践。我看到了一些具体的变化,我看不出它们之间有什么区别

import pandasfrom pandas import *from pandas import DataFrame

前两者有什么区别,我应该只导入我需要的东西。 此外,对于制作小程序来处理数据和计算简单统计数据的人来说,最糟糕的后果是什么。

更新

我找到了 excellent guide .它解释了一切。

最佳答案

每种形式的缺点

在阅读其他人的代码时(而那些人使用非常 不同的导入样式),我注意到以下问题 每种风格:

import modulewithaverylongname 会使代码更加困惑 使用长模块名称(例如 concurrent.futuresdjango.contrib.auth.backends)并降低这些地方的可读性。

from module import * 让我没有机会从语法上看到, 例如,classAclassB 来自同一个模块,并且 彼此有很多关系。 它使阅读代码困难。 (从这样的进口名称 可能从较早的导入中隐藏名称是该问题的最小部分。)

从模块导入 classA、classB、functionC、constantD、functionE 名字太多让我的短期内存重载 我在精神上需要分配给 module 以便 连贯地理解代码。

import modulewithaverylongname as mwvln 有时不够 的助记符。

适当的妥协

基于以上观察,我开发了以下 我自己的代码中的样式:

如果模块名称很短,

import module 是首选样式 例如标准库中的大多数包。 如果我需要使用模块中的名称,这也是首选样式 我自己的模块只有两三个地方; 那么清晰胜过简洁("Readability counts")。

import longname as ln 是几乎所有的首选样式 其他情况。 例如,我可能 import django.contrib.auth.backends as djcab。 根据上述标准 1 的定义,将使用缩写 经常,因此很容易记住。

根据 "Explicit is better than implicit."规则。

from module import xx 有时仍然出现在我的代码中。 我在甚至 as 格式显得夸张的情况下使用它, 最著名的例子是 from datetime import datetime (但如果我需要更多元素,我会import datetime as dt)。

关于python - 在 Python 中导入模块 - 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9916878/

相关文章:

python - Django 表单验证包括 session 数据的使用

python - 使用数字、分类和文本管道制作 ColumnTransformer

javascript - 在 html 标签中使用组成的属性是否有任何可能的负面影响

c++ - 如何避免包含类实现文件?

go - 可以使用很多匿名函数吗?

git - Integrator 工作流程,fetch-rebase-push 对于远程 repo 是否安全?

python - __init__.py 的用法

c++ - scons - 编译后运行程序

workflow - Tridion 2011 SP1 - 出版物的默认工作流程仅适用于新页面

eclipse - OSGi 开发使用了哪些 IDE 设置和工作流程?