Так, попробую еще раз сказать то, что сказал выше и еще чуть выше.
Всё что есть в питоне - это объект. Эти объекты вы можете передавать куда угодно и как угодно. Насчет передачи данных из модуля в модуль это явно откуда-то не из области программирования. У вас есть модуль fun, который предоставляет некоторый функционал. Этому модулю для работы нужен объект sF. В модуле fun вы создаете функцию, одним из параметров которой является требуемый sF. В любом другом модуле вы можете подключить созданный fun с функцией и передать в неё любую sF. Это возможность я вам попытался донести кодом выше.
Хм, кажется, я понял. Вы хотите, чтобы основной скрипт, не подлкючая fun, использовал его функционал, передавая требуемую функцию sF. Звучит странно.
Хотя нет:
В некотором скрипте main1.py я подключаю модуль fun
но
При этом maini.py не подключать к fun.py
…
подключать каждое maini.py к fun.py не подходит.
Короче, или вам нужно знакомиться с основами программирования или мне идти на курсы освоения семантической основы речи собеседника :)
Если коротенько:
#fun.py
import numpy as np
import sympy as sp
def foo(sF, a, b):
x, y = sp.symbols('x y')
sW = sp.diff(sF, x) + sp.diff(sF, y)
return np.vectorize(lambda x, y: sp.lambdify((x,y), sW, modules='numpy') if x > y else 0.0)(a, b)
# main.py
import numpy as np
import sympy as sp
from fun import foo
x, y = sp.symbols('x y')
x=np.array([1,2,3,4,5])
y=np.array([5,4,3,2,1])
sF = x ** 2 + y ** 2
print foo(sF, x, y)
sF = x + y
print foo(sF, x, y)