使用另一个文件中定义的不同 y 值

问题描述 投票:0回答:1

我在同一文件夹中有两个名为: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)
。为了实现这个目标我应该改变什么?

python python-3.x
1个回答
0
投票

要解决您的问题,请在

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
的值。

© www.soinside.com 2019 - 2024. All rights reserved.