1.简介虽然有那么多花哨的调试工具和方法供我们选择,但我们不得不承认,在大多数情况下,print()是调试代码最方便的方式😂,通过在关键位置手动编写适当的打印语句在程序中,可以快速帮助我们了解程序的运行过程,找到问题所在。而icecream是一个最大化打印方法的Python库。它的工作方式有点像vscode中javascript的TurboConsoleLog插件。下面我们就来看看icecream中的实用功能吧。2使用icecream进行高效调试让我们看一下icecream最基本的用法。如果我们需要在循环过程中打印每一轮对应的几个变量,为了让显示的信息更加清晰,传统的方式可以这样做:fromicecreamimporticforiinrange(3):j=i+1k=i**2print('i:',i,'j:',j,'k:',k)并且基于冰淇淋,事情会更简单一些:foriinrange(3):j=i+1k=i**2ic(i,j,k)比较区别,效果一目了然:这是icecream的基本用法,下面我们来了解它更丰富的特性:2.1利用icecream检查各种变量icecream可以检查任何类型的变量,只需将变量传入即可ic(),连pandas中的数据框都可以友好打印出来:importpandasaspddefdemo_func(x):returnx+1classDemoClass:a=1demo_df=pd.DataFrame({'a':[1,2,3],'b':['a','b','c']})ic(demo_func(1))ic(DemoClass.a)ic(demo_df);2.2查看代码执行位置很多时候我们在调试代码中打印一些关键位置结果的时候,希望能够快速的找到对应结果在代码中的位置,使用ic(),不传递任何参数,会自动打印出来位置、父函数等信息:fromicecreamiimporticdefdemo():ic()a=1if1>0:ic()a+=1else:ic()a-=1demo()2.3一次导入到处使用当你的项目有一个main文件和其他子模块在主文件中调用,那么可以在主文件开头执行如下代码,然后在子模块中不用导入icecream就可以使用ic():fromicecreamimportinstallsinstall()2.4Personalization除了使用icecream默认的信息打印格式,我们也可以使用ic.configureOutput()自定义一些显示参数,例如:更多自定义参数请访问https://github.com/gruns/icecream#configuration查看更多。正如icecream的介绍中所说:不要再用print()来调试了,大家可以在日常使用中多使用icecream来体验它的便利。
