Как мне экспортировать одну функцию как модуль в Python? - PullRequest
0 голосов
/ 16 мая 2018

Я пишу модуль с именем foo, который имеет много внутренних функций, но в конечном итоге сводится к одной внешней функции foo(). При использовании этого модуля / функции, я хотел бы сделать

import foo
foo(whatever)

вместо

from foo import foo
foo(whatever)

Возможно ли это? Что мне нужно вставить в __init__.py, чтобы это произошло?

Ответы [ 3 ]

0 голосов
/ 16 мая 2018

Это не строго возможно. Имена модулей Python предназначены для того, чтобы помочь программисту различать модули. Поэтому, даже если у вас была одна функция, bar в вашем модуле foo, для использования import foo все равно потребуется foo.bar(). Возможно, вам лучше использовать from foo import *.

Однако может быть способ обойти это. Python также имеет встроенные функции, и вы можете добавить свои собственные функции для этого. Для этого может потребоваться переписать компиляцию.

Итак, вывод: написание from foo import * не так уж и страшно и намного проще и красивее, чем долгий путь.

0 голосов
/ 10 января 2019

Введите название вашего модуля в словаре sys.modules, чтобы указать функцию вместо вашего модуля.

foo.py будет выглядеть так

import sys

def foo(x):
    return x + x

sys.modules[__name__] = foo

тогда вы можете использовать этот модуль из другого файла

import foo
print(foo(3))
6

Вероятно, есть причины, по которым вам не следует этого делать.

0 голосов
/ 16 мая 2018

Python не позволяет модулю быть вызываемым. Посмотрите этот вопрос StackOverflow о вызываемых модулях .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...