当前位置: 首页 > news >正文

python之icecream使用实测

写在前面

算法组小伙伴今天安利我这个插件,我来看看。

本文为个人学习练手之作,欢迎讨论。

1.print和icecream的关联和区别

这玩意你离开不了,个人常用的几个

def personaluse():
    name ="ergouzi"
    age = "18"
    print("here is name :",name)
    print("here is age :{}".format(age))
    print(f"here is all infor: {name},{age}")


if __name__ == "__main__":
    personaluse()

这么多年了,我早已经喜欢了print,

从最开始c的printf

到python的print。

你今天同我讲要换其他的?(不是)

print存在几个问题:

1.调试过程中主要添加print,观察信息和数据的流转过程。然后正式发版记得要注释或者删掉,工作量大和影响美观。

2.打印多个变量必须手动格式化输出以增强其可读性。比如:对打印行号、函数名称及其输入等,这会增加了编写又长、又多的print()语句的复杂性。

。。。。越说我越觉得print大法好。

那我本着学习的心态,来看看icecream

2.IceCream-冰淇淋

#直接使用pip安装icecream库

pip install icecream

#导入ic模块
from icecream import ic

1.ic输出和print的区别。

class MyIcecream:
    def __init__(self) -> None:
        pass
        
    def baseuse(self):
        var_1 = 1
        var_2 = 2   
        ic(var_1)
        ic(var_2)





####输出结果
ic| var_1: 1
ic| var_2: 2
    

2. 查看函数名、入参和返回结果:

class MyIcecream:
    def __init__(self) -> None:
        pass
        
    def baseuse(self):
        var_1 = 1
        var_2 = 2   
        ic(var_1)
        ic(var_2)
    
    def moreinfor(self,num):
        return num + 5


if __name__ == "__main__":
    #personaluse()
    myic = MyIcecream()
    myic.baseuse()
    ic( myic.moreinfor(5))



ic| myic.moreinfor(5): 10

3.牛的来了。ic可以用在判断语句中,查询判断状态。

看例子有点吓人,具体文件名称,时间,行数,都打印出来了。

from icecream import ic

class MyIcecream:
    def __init__(self) -> None:
        pass
        
    def baseuse(self):
        var_1 = 1
        var_2 = 2   
        ic(var_1)
        ic(var_2)
    
    def moreinfor(self,num):
        return num + 5

    def useinjug(self, mystatus):
        if mystatus:
            ###your code
            ic()
        else:
            ###your code
            ic()





def personaluse():
    name ="ergouzi"
    age = "18"
    print("here is name :",name)
    print("here is age :{}".format(age))
    print(f"here is all infor: {name},{age}")


if __name__ == "__main__":
    #personaluse()
    myic = MyIcecream()
    # myic.baseuse()
    # ic( myic.moreinfor(5))
    myic.useinjug(True)




ic| iceprint.py:19 in useinjug() at 13:35:32.557

4.自定义参数

    ic.configureOutput(prefix='Old bro use| -> ')
    ic("here is information!")



#output
Old bro use| -> 'here is information!'

在这个里面有用到ic.configureOutput()

源码如下:(2022年12月7日)

def configureOutput(self, prefix=_absent, outputFunction=_absent,
                    argToStringFunction=_absent, includeContext=_absent):
    if prefix is not _absent:
        self.prefix = prefix

    if outputFunction is not _absent:
        self.outputFunction = outputFunction

    if argToStringFunction is not _absent:
        self.argToStringFunction = argToStringFunction

    if includeContext is not _absent:
        self.includeContext = includeContext

其中参数如下:

prefix,自定义输出前缀
outputFunction,更改输出函数
argToStringFunction,自定义参数序列化字符串
includeContext,显示文件名、代码行、函数信息

你可以选择把时间打在前面,

    import time
    from datetime import datetime
    def time_flag():
        return f'Now time is:{datetime.now()}|>'
    ic.configureOutput(prefix=time_flag)
    for i in range(3):
        time.sleep(2)
        ic("The infor is 歪比巴卜")



输出结果为:
Now time is:2022-12-07 13:58:30.844330|>'The infor is 歪比巴卜'
Now time is:2022-12-07 13:58:33.331548|>'The infor is 歪比巴卜'
Now time is:2022-12-07 13:58:35.333918|>'The infor is 歪比巴卜'

5.不想看到打印,可以使用

ic.disable()  #停止ic打印
is.enable()  #开始ic打印

因为可以区分调试打印和print打印,因此搜索和删除所有ic调试语句非常轻松:
可以使用ctrl+f全局搜索:ic
或者使用一键选择、修改多个相同变量、符号、值:ctrl+shift+alt+j,全局选中对应的ic打印代码删除。

大家可以试试

相关文章:

  • 第9章 集合
  • RfDNet 在Ubuntu16下的配置与运行——(二)数据准备与训练
  • 前端Gitee + Jenkins自动化实战(转)
  • 【Android Studio程序开发】按钮触控---按钮控件Button
  • 《棒球大联盟2nd》:热血拼搏·棒球1号位
  • 计算机、软件专业常去的学习网站
  • 5 年经验年薪百万,一位阿里 P8 分享自己的成长干货
  • 【C++笔试强训】第三天
  • brew换源
  • G银行借助光伏互联网平台发展户用光伏金融业务,加速绿色转型 | 案例研究
  • JAVA基础语法以及一些常见的练习
  • 如何在 Spring Boot 项目中使用 Thymeleaf 和 Bootstrap 实现文件上传
  • 智能电销机器人《各版本机器人部署》
  • 微信小程序的生命周期概览
  • 【华为上机真题 2022】数组组成的最小数字
  • Pr:导出设置之音频
  • html实训大作业《基于HTML+CSS+JavaScript红色文化传媒网站(20页)》
  • [LeetCode 1775]通过最少操作数使数组的和相等
  • js实现的在线绘图板,写字板
  • 迷宫逃离的问题-CoCube
  • 电加热油锅炉工作原理_电加热导油
  • 大型电蒸汽锅炉_工业电阻炉
  • 燃气蒸汽锅炉的分类_大连生物质蒸汽锅炉
  • 天津市维修锅炉_锅炉汽化处理方法
  • 蒸汽汽锅炉厂家_延安锅炉厂家
  • 山西热水锅炉厂家_酒店热水 锅炉
  • 蒸汽锅炉生产厂家_燃油蒸汽发生器
  • 燃煤锅炉烧热水_张家口 淘汰取缔燃煤锅炉
  • 生物质锅炉_炉
  • 锅炉天然气_天燃气热风炉