none函数python_将“None”作为函数参数传递(其中参数是函数)

我正在写一个小应用程序,必须执行一些'健全检查'才进入执行。(例如,健全性检查:测试某个路径是否可读/写/存在)

代码:import logging

import os

import shutil

import sys

from paths import PATH

logging.basicConfig(level=logging.DEBUG)

log = logging.getLogger('sf.core.sanity')

def sanity_access(path, mode):

ret = os.access(path, mode)

logfunc = log.debug if ret else log.warning

loginfo = (os.access.__name__, path, mode, ret)

logfunc('%s(\'%s\', %s)==%s' % loginfo)

return ret

def sanity_check(bool_func, true_func, false_func):

ret = bool_func()

(logfunc, execfunc) = (log.debug, true_func) if ret else \

(log.warning, false_func)

logfunc('exec: %s', execfunc.__name__)

execfunc()

def sanity_checks():

sanity_check(lambda: sanity_access(PATH['userhome'], os.F_OK), \

lambda: None, sys.exit)

我的问题与sanity_check函数有关。

这个函数有3个参数(bool_func,true_func,false_func)。如果bool_func(测试函数,返回布尔值)失败,则执行true_func,否则执行false_func。

1)lambda: None有点蹩脚,因为例如,如果健全访问返回True,则执行lambda: None,并且打印的输出将是:DEBUG:sf.core.sanity:access('/home/nomemory', 0)==True

DEBUG:sf.core.sanity:exec:

所以在日志中不太清楚执行了什么函数。日志将只包含。是否有一个默认函数什么也不做,并且可以作为参数传递?这是返回lambda中正在执行的第一个函数的名称的方法吗?

或者如果“nothing”作为参数发送,则不记录该“exec”的方法?

函数的“无/不做”等价于什么?sanity_check(lambda: sanity_access(PATH['userhome'], os.F_OK), \

>, sys.exit)

另外一个问题,为什么lambda: pass而不是lambda: None不起作用?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值