python lambda表达式的用法
请教一下,这个结果输出来为什么是0?这个lambda fn:os.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 fn:os.path.getmtime(fn) if not os.path.isdir(fn) else 0
print(test(x))
这是python特有写法 你这句话意思就是 if not 后面这个条件如果为真 就返回if not前面这个 否则就是0 Real_小T 发表于 2017-12-5 17:19
这是python特有写法 你这句话意思就是 if not 后面这个条件如果为真 就返回if not前面这个 否则就是0
上代码会解释得更清楚一些:
c = lambda x:x+1 if 2==1 else 0
print(c(2))
上面这个运行结果是0
c = lambda x:x+1 if 1==1 else 0
print(c(2))
而这个上面运行结果是3
看懂这两片代码你就能理解了 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:34 编辑
liudinglong1989 发表于 2017-12-5 17:28
test =lambda fn:3 if not os.path.isdir(2) else 0
print(test)
Lambda中文名叫匿名函数 是个函数 调用函数是要带参数进去的 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啊??? Real_小T 发表于 2017-12-5 17:30
Lambda中文名叫匿名函数 是个函数 函数是要带参数进去的
你举的是if ..else不是if not ..else啊
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啊?而不是文件啊
页:
[1]