【问题标题】:Pycharm auto-import is not following best practice?Pycharm 自动导入没有遵循最佳实践?
【发布时间】:2019-04-10 09:37:21
【问题描述】:

我们最近讨论了删除我们可能拥有的任何循环导入并重构我们的代码以不再在函数内部使用导入。

在许多地方(包括 PEP-8 样式指南 here - 在导入下)推荐的方法之一是使用:

import a 
a.foo()

代替:

from a import foo
foo()

我看到了一些示例,并确信这可能是一种更好的导入方式(尽管我习惯了 from 的导入方式)。

但我不明白为什么 99% 的 python 示例不使用这种导入方式。如果这是正确的导入方式,为什么我的 pycharm 不允许以这种方式自动导入(或者是这样吗?)。

查看 pycharm 配置,我没有找到使用 import y.x 而不是 from y import x 自动完成的方法

【问题讨论】:

    标签: python import pycharm


    【解决方案1】:

    您不能使用import x 代替from y import x。如果y 是子模块,则必须使用import x.y,如果y 是变量(类、函数、常量...),则必须使用import x; a = x.y
    要使用根模块名称使 Pycharm 自动完成,您必须开始输入根模块名称,而不是要使用的子元素。
    例如,如果你想使用os.pathsplit 函数,如果你开始输入split,然后点击双CTRL-SPACE,Pycharm 将自动导入from os.path import split。但是如果你开始输入os,Pycharm 会自动完成import os,你可以用.path.split 结束你的语句

    【讨论】:

    • 关于第一部分,我的意思是import x.y。关于 pycharm,我理解 - 我会使用它。但是很糟糕,我无法从导入下拉列表中选择它,因为我发现自己很多时候都知道我想要使用的函数\类的名称,但不知道它所在的包(我让 pycharm 告诉我选项)
    • 确实如此。您可以首先使用from 的自动导入,完成后,您可以在导入语句上点击alt-enter 并选择convert to import module
    猜你喜欢
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    • 2010-09-25
    相关资源
    最近更新 更多