【问题标题】:Python: Choose function based on condition in a for loop?Python:在for循环中根据条件选择函数?
【发布时间】:2022-06-22 23:56:54
【问题描述】:

对不起,如果标题有点时髦。我将在这里更详细地解释一切。所以假设我有这个代码:

def function1(k):
    return k * 2


def function2(k):
    return k ** 2


func = 'Square'

for i in range(1, 10):
    if func == 'Multiply':
        function1(i)
    elif func == 'Square':
        function2(i)

如何修改上面的代码,使 if 语句可以跳出循环?似乎没有必要在每次迭代中检查func 的值,因为它不会在内部发生变化。循环。我正在寻找的是这样的:

def function1(k):
    return k * 2


def function2(k):
    return k ^ 2


func = 'Square'

if func == 'Multiply':
     f = function1()
elif func == 'Square':
     f = function2()

for i in range(1, 10):
    f(i)

如果有什么不够清楚,或者我的要求是不可能的,请告诉我。谢谢!

【问题讨论】:

  • 你非常接近;只需分配为f = function1(这会将name f 添加到引用中,因此两者都引用相同的函数)并继续f(i),然后调用
  • 注意:要在 Python 中对数字求平方,您需要使用 x**2,而不是 x^2。后者是按位异或。
  • @ti7 非常感谢!快把我逼疯了哈哈哈
  • @0x5453 已更正。 Matlab残差:)

标签: python python-3.x function


【解决方案1】:

将函数存储在dict 中,然后您可以跳过if 语句。

def function1(k):
    return k * 2

def function2(k):
    return k ** 2

d = {"Multiply": function1, "Square": function2}

func = "Square"
f = d[func]
f(3)
# 9

【讨论】:

    猜你喜欢
    • 2016-08-19
    • 2021-02-17
    • 2015-06-15
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    相关资源
    最近更新 更多