将变量名传递到函数中?

2024-10-03 06:29:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含多个变量的函数,但我一次只想为一个变量运行它。例如,仅适用于“exrate”。其思想是将“exrate”传递到函数中,然后仅for循环“exrate”并计算结果。不幸的是,“营业额”的价值没有改变。你知道吗

exrate = 100
sales = 0

def sim(var, min, max):
    for var in range(min, max):
        turnover = 1000 * (exrate/100) + sales
        print(turnover)

sim(exrate, 100, 105)
sim(sales, 1000, 1100)

Tags: 函数inforvardefsimminmax
2条回答

您使用的是定义中函数外部的变量。考虑在函数定义中用var替换exrate。你知道吗

让我们试着重构一下原始代码:

exrate = 100
sales = 0

def sim(var, min, max):
    for var in range(min, max):
        turnover = 1000 * (exrate/100) + sales
        print(turnover)

首先,我们可以计算出sim卡中使用的功能,即:

def f(exrate, sales):
    return 1000 * (exrate/100) + sales

这个函数可以进一步简化1000/100=10

def f(exrate, sales):
    return 10 * exrate + sales

您正在使用globalsexrate=100, sales=0,但这不是一个好主意,所以让我们通过使用默认参数来摆脱这些globals:

def f(exrate=100, sales=0):
    return 10 * exrate + sales

现在,我们得到了一个数学函数,我们可以用它作为另一个函数的输入,它是一个只有一个职责的函数。你知道吗

假设我们想看看这个函数是如何相对于它的一个自变量(exrate or sales)演化的:

for i in range(100, 1000, 100):
    print(f(exrate=i))

for i in range(0, 1000, 200):
    print(f(sales=i))

或两者兼有:

for i in range(0, 1000, 200):
    print(f(exrate=200, sales=i))

主要的想法是,当模拟某个东西时,最好将代码分为执行模拟的代码(在图形中绘制函数,在控制台上打印值,…)和模拟本身的代码(在本例中,是形式为f(x)=ax+bsimple linear function

相关问题 更多 >