51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2066|回复: 7
打印 上一主题 下一主题

python lambda表达式的用法

[复制链接]
  • TA的每日心情
    开心
    2015-4-13 19:27
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2017-12-5 16:39:52 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    请教一下,这个结果输出来为什么是0?这个lambda fns.path.getmtime(fn) if not os.path.isdir(fn) else 0语法怎么判断的?

    代码:x = u"C:\\Users\\LeoLiu\\Desktop"
    a = os.listdir(x)
    b = os.path.getmtime(x)
    print(b)

    d =  os.path.isdir(x)
    print(d)

    test =lambda fns.path.getmtime(fn) if not os.path.isdir(fn) else 0

    print(test(x))

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2015-4-13 19:27
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
     楼主| 发表于 2017-12-5 17:35:11 | 只看该作者
    Real_小T 发表于 2017-12-5 17:30
    Lambda中文名叫匿名函数 是个函数 调用函数是要带参数进去的

    import os,os.path,datetime
    import sys,io

    file_dir=u"c:\\Windows\\"
    list=os.listdir(file_dir)
    list.sort(key=lambda fn: os.path.getmtime(file_dir+fn) if not os.path.isdir(file_dir+fn) else 0)

    请问一下,这个list.sort是排序,而里面的key值应该是0啊?  而不是文件啊
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-4-13 19:27
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    7#
     楼主| 发表于 2017-12-5 17:31:47 | 只看该作者
    Real_小T 发表于 2017-12-5 17:30
    Lambda中文名叫匿名函数 是个函数 函数是要带参数进去的

    你举的是if ..else  不是if not ..else啊
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-4-13 19:27
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    6#
     楼主| 发表于 2017-12-5 17:31:08 | 只看该作者
    Real_小T 发表于 2017-12-5 17:27
    上代码会解释得更清楚一些:

    上面这个运行结果是0


    Real_小T 发表于 2017-12-5 17:19
    这是python特有写法 你这句话意思就是 if not 后面这个条件如果为真 就返回if not前面这个 否则就是0

    test =lambda fn:3 if not os.path.isdir(2) else 0

    print(test)

    那这个结果怎么是:
    <function <lambda> at 0x000000000224CBF8>
    应该是0啊???
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-10 10:58
  • 签到天数: 194 天

    连续签到: 1 天

    [LV.7]测试师长

    5#
    发表于 2017-12-5 17:30:29 | 只看该作者
    本帖最后由 Real_小T 于 2017-12-5 17:34 编辑
    liudinglong1989 发表于 2017-12-5 17:28
    test =lambda fn:3 if not os.path.isdir(2) else 0

    print(test)

    Lambda中文名叫匿名函数 是个函数 调用函数是要带参数进去的
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-4-13 19:27
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    4#
     楼主| 发表于 2017-12-5 17:28:18 | 只看该作者
    Real_小T 发表于 2017-12-5 17:19
    这是python特有写法 你这句话意思就是 if not 后面这个条件如果为真 就返回if not前面这个 否则就是0

    test =lambda fn:3 if not os.path.isdir(2) else 0

    print(test)

    那这个结果怎么是:
    <function <lambda> at 0x000000000224CBF8>
    应该是0啊???
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-10 10:58
  • 签到天数: 194 天

    连续签到: 1 天

    [LV.7]测试师长

    3#
    发表于 2017-12-5 17:27:11 | 只看该作者
    Real_小T 发表于 2017-12-5 17:19
    这是python特有写法 你这句话意思就是 if not 后面这个条件如果为真 就返回if not前面这个 否则就是0

    上代码会解释得更清楚一些:
    1. c = lambda x:x+1 if 2==1 else 0
    2. print(c(2))
    复制代码

    上面这个运行结果是0
    1. c = lambda x:x+1 if 1==1 else 0
    2. print(c(2))
    复制代码

    而这个上面运行结果是3
    看懂这两片代码你就能理解了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-10 10:58
  • 签到天数: 194 天

    连续签到: 1 天

    [LV.7]测试师长

    2#
    发表于 2017-12-5 17:19:51 | 只看该作者
    这是python特有写法 你这句话意思就是 if not 后面这个条件如果为真 就返回if not前面这个 否则就是0

    评分

    参与人数 1测试积点 +10 收起 理由
    lsekfe + 10 积极回复获得测试积点10 赶快去商城换取奖.

    查看全部评分

    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-23 09:29 , Processed in 0.070847 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表