2017-10-09 19 views
1

因为我是新来的Python世界,今天我问你使用另一个python文件函数的最佳方式。如何使用另一个python文件的函数

让我们这个例子:

- app/ 
    - __init__.py 
    - helpers/ 
    - __init__.py 
    - myhelper.py 
- run.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 

我的问题:是否清楚在一个函数中使用的进口,因为我不能在上面使用呢?

这是一个很好的方式来使用这样的全局变量吗?正如你所知,我的例子中有多个全局变量,这就是我做的事情。

有什么建议吗?

+0

为什么你不能导入顶部? – toonarmycaptain

回答

3

PEP8,对于Python代码风格的一般标准,规定:

进口量始终把在文件的顶部,随便一个模块后 意见和文档字符串,以及模块的全局变量和常量之前。

因此,不认为在函数中间或除了代码顶部的任何地方都有导入是不明确的。

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

2

您应该遵循PEP8准则,但有一个例外。

如果您要导入的函数只能在您的函数中使用,则可以这样做。 注意它只会在执行该功能时才加载模块。这意味着如果您的env错过了该模块,则仅当使用该功能时才会引发异常

您应该避免,但是当没有其他选项时,它将运行。

1

为什么你不能导入它的顶部?导入非常昂贵(速度明智),并且您可能不希望每次调用该函数时导入相同的模块。此外,导入结果被缓存在python中,导致冗余导入甚至造成更大的浪费。

相关问题