如何使用另一个python文件的函数

问题描述 投票:1回答:3

因为我是python世界的新手,今天我问你关于使用另一个python文件函数的最佳方法。

我们来看这个例子:

- app/
  - __init__.py
  - helpers/
    - __init__.py
    - myhelper.py 
- run.py

润.朋友

import app
app.setname("helloworld")
app.run()

应用程序/ __ init__.py

def setname(fname):
    global name
    name = fname

def run():
    import helpers.myhelper as my_helper
    my_helper.function()

应用程序/佣工/ myhelper.py

from .. import name

def function:
    return "hello world ! "+name

我的问题:在函数中间使用导入是否清楚,因为我不能在顶部使用它?

这是使用像这样的全局变量的好方法吗?如你所知,在我的情况下我有多个全局变量等,这就是我制作的方式。

有什么建议?

python python-import
3个回答
3
投票

PEP8是Python代码风格的通用标准,声明:

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

所以不,在函数中间或代码顶部以外的任何地方进行导入并不清楚。

另请注意,name可能是变量/函数名称的不良选择,因为它是一个像list,def,dict,一个'保留关键字'这样的单词,可以与Python中其他内容使用的单词冲突。 PEP8建议使用同义词/替代词(这是我在这种情况下会做的),或附加下划线:name_

NB有一些用例需要在函数内部导入以避免循环导入,作用域等。这些可以包括测试,Flask webapps,但这些是特定的用例,并且来自其他模块的函数的一般访问应遵循PEP,除非必要的。然而,通常在这些情况下会进行此类进口,因此更清楚。


2
投票

您应遵循PEP8指南,但有例外。

如果您要导入仅在您的函数中使用的函数,则可以执行此操作。请注意,只有在执行该功能时才会加载模块。这意味着如果你的env缺少模块,它只会在使用函数时引发异常。

你应该避免这种情况,但是当没有其他选择时,它就会运行。


1
投票

为什么你不能在顶部导入它?进口是昂贵的(速度快),你可能不希望每次调用该功能时都导入相同的模块。此外,导入结果缓存在python中,使冗余导入更加浪费。

© www.soinside.com 2019 - 2024. All rights reserved.