【问题标题】:How to change a function's action depend on who invoke it in python?如何更改函数的操作取决于谁在 python 中调用它?
【发布时间】:2016-01-08 07:04:31
【问题描述】:

假设我们有四个函数f、g1、g2、h,我想要的是: 当 f 在 g1(f) 和 g2(f) 中表现不同时,而 h 在被 g1(h) 和 g2(h) 调用时表现相同。任何人都可以给我一些想法吗? 例如:

def g1(fun):
    ...
    print fun()
g1(f)   # prints: f in g1
g1(h)   # prints: h

def g2(fun):
    ...
    print fun()
g2(f)   # prints: f in g2
g2(h)   # prints: h

我想做的是写一个测试函数,其中一些函数被传递给两个测试函数,ont测试函数可以判断成功,另一个可以判断失败。被测函数在使用不同的测试函数时会转储不同的日志。

【问题讨论】:

  • 请告诉我们您要解决的实际问题。可能有更好的解决方案。通常,一个函数应该总是为同一组输入提供相同的输出。实际上,在少数情况下这可能是不可能的,但这是您应该瞄准的。
  • @thefourtheye 我要做的是写一个测试函数,其中一些函数被传递给两个测试函数,ont测试函数可以判断成功,另一个可以判断失败。

标签: python function wrapper


【解决方案1】:

是否可以为 f 和 h 添加参数:

def f(sender):
    return 'f' + str(sender)
def h(sender):
    return 'g' + str(sender)
def g1(fun):
    print(fun(0))
def g2(fun):
    print(fun(1))
g1(f)
g1(h)
g2(f)
g2(h)

【讨论】:

    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 2010-10-25
    • 1970-01-01
    相关资源
    最近更新 更多