【问题标题】:how to get an argument from an outer function? python如何从外部函数获取参数? Python
【发布时间】:2021-10-22 19:49:12
【问题描述】:

我想创建一个带有一个字符串参数的函数。此函数应返回一个匿名函数,该函数检查函数参数是否等于外部函数的参数。但是我不明白如何获取外部函数的参数。

def create(arg): 
     outer = 

     return lambda a: outer == arg

firstValue = create("secret")

print(firstValue("secret"))  # >> True

print(firstValue("SECRET"))  # >> False

【问题讨论】:

  • 你只想要def create(arg): return lambda a: a == arg
  • 不需要outer,我很确定您只是指lambda的参数,即。 a...您对“外部函数”术语的使用在这里令人困惑
  • 参数只是一个由函数调用本身初始化的局部变量,而不是通过函数体中的显式赋值。
  • 你为什么不使用a参数呢?
  • 你不小心做了正确的事:你在匿名函数的主体中使用了arg。 (我怀疑你在想lambda a: outer == a。)

标签: python function lambda


【解决方案1】:
def create(arg): 
     return lambda a: a == arg # replace outer with a

firstValue = create("secret")

print(firstValue("secret"))  # >> True

print(firstValue("SECRET"))  # >> False

编辑:(用于解释)

第一个函数create("secret")arg = "secret" 作为参数。 在执行其主体之后,它创建另一个 lambda 函数,该函数将 a 作为参数并将其与 "secret" 进行比较;该函数被返回。再次记住,返回的函数是一个接受一个参数a 并将其与值"secret" 进行比较的函数;就好像您只是手动执行此操作:

def anonymous(a):
   return a == "secret"

这就是返回的函数。 现在您将此返回的函数分配给名称firstValue;就好像您正在这样做:firstValue = anonymous

最后,您只是使用参数a="secret"a="SECRET" 调用此函数,显然在第一种情况下返回True,在第二种情况下返回False

【讨论】:

  • 谢谢)它可以工作,但我只是不明白为什么它会这样工作
  • @self 在答案的编辑中寻找解释:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-27
  • 2021-04-01
  • 2020-10-26
相关资源
最近更新 更多