пакет1.модуль.функция
и пакет2.модуль.функция
from пакет1 import модуль as модуль1
и from пакет2 import модуль as модуль2
Чтобы организовать использование одинаковых имен в разных пакетах в Python без конфликтов, можно применить несколько подходов:
# Пакет package_a
# package_a/module_x.py
def my_function():
print("Функция из package_a")
# Пакет package_b
# package_b/module_x.py
def my_function():
print("Функция из package_b")
# Использование:
import package_a.module_x
import package_b.module_x
package_a.module_x.my_function()
package_b.module_x.my_function()
В этом случае функции `my_function` из разных пакетов не конфликтуют, потому что они вызываются через имена своих пакетов. package_a.module_x.my_function()
и package_b.module_x.my_function()
- это разные функции, определенные в разных пространствах имен.
import package_a.module_x as module_x_a
import package_b.module_x as module_x_b
module_x_a.my_function()
module_x_b.my_function()
Это позволяет использовать функции из обоих модулей, не вызывая конфликтов, так как они имеют разные имена в текущем пространстве имен.
from package_a.module_x import my_function as my_function_a
from package_b.module_x import my_function as my_function_b
my_function_a()
my_function_b()
Этот подход полезен, если вам нужны только определенные функции или классы из модулей.
Выбор подходящего метода зависит от конкретной ситуации и от того, насколько часто вы используете функции с конфликтующими именами. В большинстве случаев использование пространств имен (прямой импорт с использованием имени пакета) является наиболее чистым и предпочтительным способом.