zoukankan      html  css  js  c++  java
  • lambda参数写法问题

    今天看到一段程序中有用到lambda函数,其实很简单 key=lambda (l,s):s

    猜我犯了个什么错误?

    自己把(l,s)理解成lambda的2个形参了,是蛮容易这样理解的哈,毕竟以前函数都是  def f(1,s):这样的

    然后自己调用时老提示错误,参数错误,于是就看了下官方文档才知道lmbda参数其实是这样的

    lambda x,y:x+y

    x,y是它的2个形参,所以这里 lambda (l,s)其实就只有一个参数,那就是一个tuple类型的参数,

    所以调用时就是key((x,y))

    这个错误是很容易犯啊;)

    >>> key=lambda(1,s):s
    SyntaxError: invalid syntax
    >>> key=lambda(l,s)
    SyntaxError: invalid syntax
    >>> key=lambda(l,s):s
    >>> key
    <function <lambda> at 0x02A81CF0>
    >>> key(1,2)
    
    Traceback (most recent call last):
      File "<pyshell#6>", line 1, in <module>
        key(1,2)
    TypeError: <lambda>() takes exactly 1 argument (2 given)
    >>> key(1)
    
    Traceback (most recent call last):
      File "<pyshell#7>", line 1, in <module>
        key(1)
      File "<pyshell#4>", line 1, in <lambda>
        key=lambda(l,s):s
    TypeError: 'int' object is not iterable
    >>> key([1,2,3,4,5])
    
    Traceback (most recent call last):
      File "<pyshell#8>", line 1, in <module>
        key([1,2,3,4,5])
      File "<pyshell#4>", line 1, in <lambda>
        key=lambda(l,s):s
    ValueError: too many values to unpack
    >>> key([1])
    
    Traceback (most recent call last):
      File "<pyshell#9>", line 1, in <module>
        key([1])
      File "<pyshell#4>", line 1, in <lambda>
        key=lambda(l,s):s
    ValueError: need more than 1 value to unpack
    >>> key([])
    
    Traceback (most recent call last):
      File "<pyshell#10>", line 1, in <module>
        key([])
      File "<pyshell#4>", line 1, in <lambda>
        key=lambda(l,s):s
    ValueError: need more than 0 values to unpack
    >>> key([],1)
    
    Traceback (most recent call last):
      File "<pyshell#11>", line 1, in <module>
        key([],1)
    TypeError: <lambda>() takes exactly 1 argument (2 given)
    >>> x=lambda(x,y):x+y
    >>> x(1,2)
    
    Traceback (most recent call last):
      File "<pyshell#13>", line 1, in <module>
        x(1,2)
    TypeError: <lambda>() takes exactly 1 argument (2 given)
    >>> x(1)
    
    Traceback (most recent call last):
      File "<pyshell#14>", line 1, in <module>
        x(1)
      File "<pyshell#12>", line 1, in <lambda>
        x=lambda(x,y):x+y
    TypeError: 'int' object is not iterable
    >>> x=lambda(x):x+1
    >>> x(111)
    112
    >>> key=lambda x,y:x+y
    >>> key(1,2)
    3
    >>> key=lambda (1,s):s
    SyntaxError: invalid syntax
    >>> key=lambda (l,s):s
    >>> key((1,2))
    2
    
  • 相关阅读:
    测试代码运行效率
    用宏实现的单例模式
    上传控件的按钮改为图片
    ODAC的使用笔记
    ASP.NET防止重复提交
    向SharePoint图片库添加Item
    获取页面上用户控件的子控件ID
    SharePoint的WebService的应用
    GridView中HyperLinkField的链接使用JavaScript问题
    C#日期验证的正则表达式
  • 原文地址:https://www.cnblogs.com/hust/p/2509709.html
Copyright © 2011-2022 走看看