liudinglong1989 发表于 2017-12-5 16:39:52

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))

Real_小T 发表于 2017-12-5 17:19:51

这是python特有写法 你这句话意思就是 if not 后面这个条件如果为真 就返回if not前面这个 否则就是0

Real_小T 发表于 2017-12-5 17:27:11

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
看懂这两片代码你就能理解了

liudinglong1989 发表于 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啊???

Real_小T 发表于 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中文名叫匿名函数 是个函数 调用函数是要带参数进去的

liudinglong1989 发表于 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啊???

liudinglong1989 发表于 2017-12-5 17:31:47

Real_小T 发表于 2017-12-5 17:30
Lambda中文名叫匿名函数 是个函数 函数是要带参数进去的

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

liudinglong1989 发表于 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啊?而不是文件啊
页: [1]
查看完整版本: python lambda表达式的用法