我在同一文件夹中有两个名为:randomvar.py 和 test_Random.py 的 py 文件。
文件 randomvar.py 如下:
import numpy as np
from test_Random import call_random
def evaluate_expressions(expressions, x):
def evaluate_expression(expr, x):
return eval(expr)
# Evaluate each expression in the list
results = [evaluate_expression(expr, x) for expr in expressions]
return results
f = ['x[0]**2*y+x[1]', 'x[0]-y*x[1]']
def func(x):
return evaluate_expressions(f, x)
x = np.array([1,2])
call_random(func, x)
文件 test_Random.py 如下:
import numpy as np
yy=np.array([1,2])
def call_random(ff, x):
for i in range(2):
y = yy[i]
z = ff(x)
print(z)
请注意,文件是分开的(出于个人目的)。我想做的是 每次我调用 randomvar.py 中的函数
y=yy[i]
时,都使用 test_Random.py 中的值 call_random(func, x)
。为了实现这个目标我应该改变什么?
要解决您的问题,请在
yield
函数中使用 call_random
。这段代码应该做你想要的:
在
test_Random.py
:
import numpy as np
yy=np.array([1,2])
def call_random(ff, x):
for i in range(2):
y = yy[i]
yield y
z = ff(x)
print(z)
在
randomvar.py
:
import numpy as np
from test_Random import call_random
def evaluate_expressions(expressions, x):
def evaluate_expression(expr, x):
return eval(expr)
# Evaluate each expression in the list
results = [evaluate_expression(expr, x) for expr in expressions]
return results
f = ['x[0]**2*y+x[1]', 'x[0]-y*x[1]']
def func(x):
return evaluate_expressions(f, x)
x = np.array([1,2])
for i in call_random(func, x):
print(i)
您还可以在
yield y
调用之后放置 print()
行,具体取决于您希望 call_random
的行为。此外, for
中的 randomvar.py
循环只是 call_random
函数行为的演示。基本上,循环变量 i
将是 y
的值。