为了账号安全,请及时绑定邮箱和手机立即绑定

logging.debug() 正在打印与常规 print() 不同的东西

logging.debug() 正在打印与常规 print() 不同的东西

大话西游666 2021-08-24 14:56:52
我编写了一个代码来查找阶乘,我使用了日志记录模块。搜索该网站后,我还没有找到相关问题。这是我的代码def factorial(n):    logging.basicConfig(level=logging.DEBUG,format='%(asctime)s-%(levelname)s-%(message)s')    logging.debug('Start of program')    logging.debug('start of action (%s)'%(n))    total=1    for i in range(1,n+1):        #print(i)        total *=i        print(total)        logging.debug('i is '+str(i)+' total='+str(total))    logging.debug('End of factorial(%s) '%(n))    return totaldef main():    print(factorial(5))    logging.debug('End of program')if __name__=='__main__':    import logging    main()total 的输出不是“它应该是什么”logging.debug('i is '+str(i)+' total='+str(total))这是我运行代码时得到的2018-11-21 09:34:56,213-DEBUG-Start of program2018-11-21 09:34:56,213-DEBUG-start of action (5)12018-11-21 09:34:56,213-DEBUG-i is 1 total=122018-11-21 09:34:56,213-DEBUG-i is 2 total=262018-11-21 09:34:56,213-DEBUG-i is 3 total=6242018-11-21 09:34:56,213-DEBUG-i is 4 total=241202018-11-21 09:34:56,213-DEBUG-i is 5 total=1202018-11-21 09:34:56,213-DEBUG-End of factorial(5) 1202018-11-21 09:34:56,213-DEBUG-End of program这个问题看起来很长,但它应该是非常简单的操作。
查看完整描述

1 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

这是一个猜测,但看起来您的打印中存在竞争条件。我实际上认为日志记录需要这种情况,但要检查您可以尝试以下操作:删除打印语句并运行程序。如果程序正确删除调试并返回打印再次检查。

可能的(显然)竞争条件是,虽然 logging.debug 没有完成打印整行,但您的代码现在执行了打印语句。这就是为什么你有空行。


查看完整回答
反对 回复 2021-08-24
  • 1 回答
  • 0 关注
  • 231 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号