Skip to main content
 首页 » 编程设计

python之无法添加到 lambda Python 3.6

2025年05月04日19虾米姐

我正在尝试在 Python 3.6 中创建一个 lambda 表达式来连接一个字符串和 capitalize() 其中一个字母。

我遇到的问题是,当我尝试为其中一个参数使用默认参数时,出现如下错误...

>>> pt = lambda upper, lower, integer, pat='' : pat=pat + upper.capitalize() + lower + integer 
  File "<stdin>", line 1 
SyntaxError: can't assign to lambda 
>>> 

这是我要运行的表达式...

pt = lambda upper, lower, integer, pat='' : pat=pat + upper.capitalize() + lower + integer

我之前确实将 pat='' 作为第一个参数,但这导致了语法错误,如下所示...

语法错误:非默认参数跟随默认参数

我该如何解决这个问题,还是使用成熟的方法更好?

请您参考如下方法:

问题不在于您不能在 lambda 中使用默认参数功能;你可以。

相反,您正试图在 lambda 中执行重新分配语句 ;即 pat=pat + upper.capitalize() + lower + integer .

简而言之,语句是不返回任何内容的东西,例如 a = 1 ,表达式是做 a + 1 的东西.

lambda函数不允许语句,而是由一个表达式组成,其值被返回。

因此,这将起作用:

pt = lambda upper, lower, integer, pat='' : pat + upper.capitalize() + lower + integer 

但是,无论如何这不是您应该做的事情,因为 lambda 的重点函数的不同之处在于它们是您使用一次 的一次性函数。如果您需要重用它们,只需使用 def 定义一个自由函数即可。相反。

在符合 PEP8 的项目中, 这是一种风格违规。