ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python:sys.stderr上的一些新手问题,并使用函数作为参数

2019-08-27 12:45:28  阅读:248  来源: 互联网

标签:python function-pointers stderr


我刚开始使用Python,也许我太担心太多了,但无论如何……

log = "/tmp/trefnoc.log"

def logThis (text, display=""):
    msg = str(now.strftime("%Y-%m-%d %H:%M")) + " TREfNOC: " + text
    if display != None:
        print msg + display
    logfile = open(log, "a")
    logfile.write(msg + "\n")
    logfile.close()
    return msg

def logThisAndExit (text, display=""):
    msg = logThis(text, display=None)
    sys.exit(msg + display)

这是有效的,但我不喜欢它的样子.有没有更好的方法来写这个(可能只有1个功能)并且有any other thing我应该关注退出吗?

现在到一些背景(但不是约trefnoc)……

有时我会调用logThis来记录和显示.其他时候我想打电话然后退出.最初我这样做:

logThis ("ERROR. EXITING")
sys.exit()

然后我认为这不会正确设置stderr,因此当前代码显示在顶部.

我的第一个想法是将“sys.exit”作为参数传递,并定义logThis(“ERROR.EXITING”,call = sys.exit)定义如下(仅显示相关的差异部分):

def logThis (text, display="", call=print):
    msg = str(now.strftime("%Y-%m-%d %H:%M")) + " TREfNOC: " + text
    call msg + display

但这显然不起作用.我认为Python不会将函数存储在变量中.我不能(很快)找到任何地方,如果Python可以有变量取功能!也许使用eval函数?我真的总是尽量避免它们,所以.当然我想过使用if而不是另一个def,但这不会更好或更糟.

无论如何,有什么想法吗?

解决方法:

没有理由“logThisAndExit”,它不会为你输入多少钱

sys.exit(logThis(text)+display)

(比较logThisAndExit(文本,显示))

要么

sys.exit(logThis(text))

(比较logThisAndExit(文本))

并不是说我完全确定你为什么喜欢将格式化为日志行的退出消息.

回答你的原始问题:你缺少括号:call(msg display)工作正常.但是我认为这对于记录/退出事物来说是过度的过度工作.维护代码的任何人都必须了解您的功能,以了解它何时退出以及何时退出.

标签:python,function-pointers,stderr
来源: https://codeday.me/bug/20190827/1741019.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有