51Testing软件测试论坛

标题: python lambda表达式的用法 [打印本页]

作者: liudinglong1989    时间: 2017-12-5 16:39
标题: python lambda表达式的用法
请教一下,这个结果输出来为什么是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))

作者: Real_小T    时间: 2017-12-5 17:19
这是python特有写法 你这句话意思就是 if not 后面这个条件如果为真 就返回if not前面这个 否则就是0
作者: Real_小T    时间: 2017-12-5 17:27
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
看懂这两片代码你就能理解了
作者: liudinglong1989    时间: 2017-12-5 17:28
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啊???
作者: Real_小T    时间: 2017-12-5 17:30
本帖最后由 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中文名叫匿名函数 是个函数 调用函数是要带参数进去的
作者: liudinglong1989    时间: 2017-12-5 17:31
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啊???
作者: liudinglong1989    时间: 2017-12-5 17:31
Real_小T 发表于 2017-12-5 17:30
Lambda中文名叫匿名函数 是个函数 函数是要带参数进去的

你举的是if ..else  不是if not ..else啊

作者: liudinglong1989    时间: 2017-12-5 17:35
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啊?  而不是文件啊




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2