python - 传递参数 Python 的 Lambda 函数
问题描述
我是 python 新手,我只看到一些这样的代码:
title = 'Thank'
def write():
a = lambda x: title + ' ' + x
return a
who = write()
print(who('you'))
它的resulf 返回“Thank you”,但我对“Write”函数的看法不带参数,那么为什么我们可以为“who”传递参数?
解决方案
lambda 是一个匿名函数,用于不需要命名函数的地方。一个例子是一个函数,它把另一个函数作为参数
sorted(my_int_list, key=lambda i: i % 12)
Lambda 不应该只分配给变量,这违背了目的。你的代码最好写成
title = 'Thank'
def write():
def a(x):
return title + ' ' + x
return a
who = write()
print(who('you'))
现在我们已经摆脱了 lambda 红鲱鱼,很容易看出这a
是. 接下来要考虑的是变量范围。由于两者都不是,它的外部函数都没有给 ,赋值,它们都不是本地的,而是会在全局范围内查找。write
a
write
title
title
write
返回 function a
,这只是一个普通的可调用函数。a
接受一个参数并将其添加到全局title
变量中的任何内容。您可以根据需要随时调用它,如果title
发生更改,则该更改会反映在调用中。为了演示,使用-i
选项运行并测试
$ python3 -i test.py
Thank you
>>> print('type', who)
type <function write.<locals>.a at 0x7f2b3b409c10>
>>> title = "Something completely different"
>>> print(who('you'))
Something completely different you
推荐阅读
- javascript - 每次使用 onClick 事件时如何防止变量返回原始值
- recaptcha - reCAPTCHA v3:g-recaptcha-response 在表单之外
- php - Wordpress/Woocommerce- 使简码成为可点击的链接
- angular - angular-token@6 与 angular@5 / ionic@3 兼容吗?
- python - 如何基于一个现有列插入值
- javascript - Recaptcha v3 涵盖内容
- python - 无法将输入数组从形状 (8,8,3) 广播到形状 (8,8,2048,3)
- php - 一个查询的多个求和查询
- apache-nifi - 如何配置 NiFi 的 DBCPConnectionPool 不保持空闲连接打开?
- java - javax.persistence.PersistenceException:org.hibernate.exception.JDBCConnectionException:无法加载实体: