【问题标题】:Import Python function at top or call them in code在顶部导入 Python 函数或在代码中调用它们
【发布时间】:2016-10-26 00:34:48
【问题描述】:

像这样在文件顶部导入函数是否更好/更pythonic:

from file import f1, f2

并调用为

def do_something():
   f1()
   etc....

或者只是导入包并在必要时调用它们

import file
...
def do_something():
   file.f1()
   etc....

【问题讨论】:

  • 问题是A)是否将import放在顶部或函数中,还是B)是from file import f1还是import file

标签: python architecture


【解决方案1】:

import 语句本身应该在文件的顶部(当然),但是使用 import somemodule 还是 from somemodule import f1, f2 取决于您。第二种形式涉及更少的输入,但第一种形式使代码更具可读性,因为它明确了导入名称的来源,我想这使它更 Pythonic,特别是当你从一个各种不同的模块。

一个很好的折衷方案是import somemodule as 变体,例如

import numpy as np
import tkinter as tk

这对导入名称长度的影响最小,但仍然清楚每个导入名称的来源。

说了这么多,当somemodule 是像itertoolsrandom 这样的众所周知的标准模块时,我对执行from somemodule import f1, f2 的代码没有任何问题,因为您代码的读者应该 em> 熟悉这些名字。但我不太高兴看到这种形式用于更晦涩的模块。

【讨论】:

    【解决方案2】:

    根据PEP 8 -- Style Guide for Python Code

    导入总是放在文件的顶部,就在任何模块 cmets 和文档字符串之后,模块全局变量和常量之前。

    所以你的第一个例子更好,更“pythonic”。

    【讨论】:

    • 我认为 OP 是在询问是否使用给定的导入,或者只是 导入文件。问题写得不够清楚。
    • @Prune,好点,我在文档中找不到任何特定于函数导入的内容,但是当有疑问时,这个 PEP-8 似乎最接近涵盖所有这些情况。个人偏好,如 PM 2Ring 的回答,似乎是最好的选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 2016-12-06
    相关资源
    最近更新 更多