与其他模块共享功能

时间:2018-12-24 08:54:01

标签: python python-3.x module

  1. 如果我有这样的功能

    def get_time_format(value, time):
        for item in value:
            time.append(datetime.strptime(str(item),'%H').strftime('%I%P').lstrip('0').upper())
        return time
    

    例如,上面的函数我在不同的模块中使用,可以代替代码重复,可以将其放在单独的文件中并在需要它们的模块中调用它们。

  2. 第二部分与第一部分有关,所以如果我很少有几行通用的代码。我可以创建一个包含所有通用代码行的文件吗?

    hierarchy:-
    hello.py
    hello.py/ds/a.py
    hello.py/ds/b.py
    hello.py/ds/c.py
    hello.py/ds/d.py
    

    hello.py是我的主文件,a,b,c and d是模块。

有人可以告诉我在哪里可以创建文件来共享模块1和2中要求的通用代码。我是python的新手,并且是第一次使用这些模块。

3 个答案:

答案 0 :(得分:0)

将该功能另存为任何目录中的example.py文件。示例home/ubuntu/Desktop 现在,在任何代码中使用以下代码段即可使用该功能

import sys
sys.path.insert(0, 'home/ubuntu/Desktop')
import example as eg

eg.get_time_format(value, time)

您可以在example.py中定义多个函数,例如get_time_format(value,time)foo(x,y)bar(x,y),如要使用它们,只需键入eg.foo(x,y) eg.bar(x,y)

答案 1 :(得分:0)

我建议为此使用一个包装。参见buran's comment

只需创建一个目录来放入您的代码,然后包含一个__init__.py文件。 __init__.py是一个特殊文件,它告诉python将目录标记为python包,从而使其可导入。参见What is __init__.py for?

注意:由于__init__.py是标记文件,因此通常只是一个不包含任何代码的空文件。

然后您可以执行以下操作:

# structure
my_directory
-/__init__.py
-foo.py

# foo.py 
def bar(boo):
    print(boo)

随后将函数导入其他模块或交互式shell中,如下所示:

from foo import bar 
bar('ble')
>>>> ble

这具有附加的优点,允许在程序包目录之外工作时导入:

from my_directory.foo import bar 
bar('boo')
>>>>boo

或完整导入的foo:

from my_directory import foo
foo.bar('boo')
>>>>boo

答案 2 :(得分:0)

在子文件夹ds中创建 init.py ,然后从此初始化文件中的a,b,c,d导入所有函数。那么可以将ds导入hello.py并使用a〜d中定义的所有功能。