python可以没有返回值吗(python没有return返回什么)

python可以没有返回值吗(python没有return返回什么)p id 2VGFOL80 相信大部分人学习 Python 肯定会用 print 这个内置函数来调试代码 br p p id 2VGFOL82 那么在一个大型的项目中 如果你也是使用 print 来调试你的 Python 代码 可能会发现你的终端有很多输出 p

大家好,我是讯享网,很高兴认识大家。




讯享网

 <p id="2VGFOL80"> 相信大部分人学习Python,肯定会用print()这个内置函数来调试代码。<br/></p><p id="2VGFOL82">那么在一个大型的项目中,如果你也是使用print来调试你的Python代码,可能会发现你的终端有很多输出。</p><p id="2VGFOL84">以至于你不得不去分辨,每一行的输出是哪些代码的运行结果。</p><p id="2VGFOL86">举个例子,运行下面这个程序。<br/></p><p id="2VGFOL8A">num1 = 30<br/>num2 = 40 </p><p id="2VGFOL8B"> print(num1)<br/>print(num2)<br/></p><p id="2VGFOL8F">输出结果。<br/></p><p id="2VGFOL8J">30<br/>40<br/></p><p id="2VGFOL8N">这些输出中哪一个是num1?哪一个又是num2呢?</p><p id="2VGFOL8P">找出两个输出可能不是很困难,但是如果有五个以上的不同输出呢?尝试查找与输出相关的代码可能会很耗时。</p><p id="2VGFOL8R">当然你可以在打印语句中添加文本,使其更容易理解:</p><p id="2VGFOL8V">num1 = 30<br/>num2 = 40 </p><p id="2VGFOL90"> print("num1" num1)<br/>print("num2" num1)<br/></p><p id="2VGFOL94">输出结果。</p><p id="2VGFOL98">num1 30<br/>num2 40<br/></p><p id="2VGFOL9C">这个结果就很容易理解了,但是需要时间去写相关的信息。</p><p id="2VGFOL9E">这时就该「Icecream」上场了~</p><p id="2VGFOL9F"><strong>01. 什么是Icecream?</strong></p><p id="2VGFOL9H">Icecream是一个Python第三方库,可通过最少的代码使打印调试更清晰明了。</p><p id="2VGFOL9J">使用pip安装Icecream库。</p><p id="2VGFOL9N">pip install icecream<br/></p><p id="2VGFOL9R">下面,让我们通过打印Python函数的输出来进行尝试。</p><p id="2VGFOL9V">from icecream import ic </p><p id="2VGFOLA0"> def plus_five(num):<br/> return num + 5</p><p id="2VGFOLA1"> ic(plus_five(4))<br/>ic(plus_five(5))<br/></p><p id="2VGFOLA5">输出结果如下。</p><p id="2VGFOLA9">ic| plus_five(4): 9<br/>ic| plus_five(5): 10<br/></p><p id="2VGFOLAD">通过使用icecream,我们不仅可以看到函数输出,还可以看到函数及其参数!</p><p id="2VGFOLAG"><strong>02. 检查执行情况</strong></p><p id="2VGFOLAI">如果你想要找到执行代码的位置,可以通过执行如下所示的操作,来查找执行了哪个语句。</p><p id="2VGFOLAM">def hello(user:bool):<br/> if user:<br/> print("I'm user")<br/> else:<br/> print("I'm not user")</p><p id="2VGFOLAN"> hello(user=True)<br/></p><p id="2VGFOLAR">输出结果。<br/></p><p id="2VGFOLAV">I'm user<br/></p><p id="2VGFOLB3">使用icecream则无需多余的文本信息,就可以轻松地完成上述的操作。</p><p id="2VGFOLB7"> from icecream import ic </p><p id="2VGFOLB8"> def hello(user:bool):<br/> if user:<br/> ic()<br/> else:<br/> ic()</p><p id="2VGFOLB9"> hello(user= True)<br/></p><p id="2VGFOLBD">输出结果如下。</p><p id="2VGFOLBH">ic| ice_1.py:5 in hello() at 02:34:41.391<br/></p><p id="2VGFOLBL">从输出结果看,函数hello中的第5行的代码已被执行,而第7行的代码未执行。</p><p id="2VGFOLBN"><strong>03. 自定义前缀</strong></p><p id="2VGFOLBP">如果您想在打印语句中插入自定义前缀(例如代码执行时间),icecream也是能实现的。</p><p id="2VGFOLBT">from datetime import datetime<br/>from icecream import ic <br/>import time<br/>from datetime import datetime</p><p id="2VGFOLBU"> def time_format():<br/> return f'{datetime.now()}|&gt; '</p><p id="2VGFOLBV"> ic.configureOutput(prefix=time_format)</p><p id="2VGFOLC0"> for _ in range(3):<br/> time.sleep(1)<br/> ic('Hello')<br/></p><p id="2VGFOLC4">输出结果如下。<br/></p><p id="2VGFOLC8">2021-01-24 10:38:23.|&gt; 'Hello'<br/>2021-01-24 10:38:24.|&gt; 'Hello'<br/>2021-01-24 10:38:25.|&gt; 'Hello'<br/></p><p id="2VGFOLCC">可以看到代码的执行时间,就显示在输出的前面。</p><p id="2VGFOLCF"><strong>04. 获取更多的信息</strong></p><p id="2VGFOLCH">除了知道和输出相关的代码之外,你可能还想知道代码执行的行和代码文件。</p><p id="2VGFOLCJ">在ic.configureOutput()中,设置includeecontext的参数值为True即可。</p><p id="2VGFOLCN">from icecream import ic </p><p id="2VGFOLCO"> def plus_five(num):<br/> return num + 5</p><p id="2VGFOLCP"> ic.configureOutput(includeContext=True)<br/>ic(plus_five(4))<br/>ic(plus_five(5))<br/></p><p id="2VGFOLCT">输出结果如下。<br/></p><p id="2VGFOLD1">ic| ice_test.py:7 in - plus_five( 4): 9<br/>ic| ice_test.py: 8 in - plus_five( 5): 10<br/></p><p id="2VGFOLD5">这里我们就知道了,第一个输出是由函数plus_five在文件icecream_example.py的第7行执行的。</p><p id="2VGFOLD7"> 第二个输出则是由函数plus_five在代码文件的第8行执行的。</p><p id="2VGFOLD9"> 上述两个操作都用到了ic.configureOutput()函数。</p><p class="f_center"> <img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2024%2F0826%2F3cj00sit8tl005pd200u000b9g00u000b9.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p id="2VGFOLDD"> 通过查看源码,可知有四个可供设置的参数。</p><p><ul><li id="2VGFOLF0"></p><p id="2VGFOLDF">prefix,自定义输出前缀</p><p></li><li id="2VGFOLF1"></p><p id="2VGFOLDG">outputFunction,更改输出函数</p><p></li><li id="2VGFOLF2"></p><p id="2VGFOLDH">argToStringFunction,自定义参数序列化字符串</p><p></li><li id="2VGFOLF3"></p><p id="2VGFOLDI">includeContext,显示文件名、代码行、函数信息</p><p></li></ul></p><p id="2VGFOLDL"> <strong>05. 删除Icecream代码</strong></p><p id="2VGFOLDN"> 最后你可以将icecream仅用于调试,而将print用于其他目的(例如漂亮的打印)。<br/></p><p id="2VGFOLDR"> from icecream import ic</p><p id="2VGFOLDS"> def plus_five(num):<br/> return num + 5</p><p id="2VGFOLDT"> ic.configureOutput(includeContext= True)<br/>ic(plus_five( 4))<br/>ic(plus_five( 5))</p><p id="2VGFOLDU"> for i in range( 10):<br/> print( f' Training model {i} ')<br/></p><p id="2VGFOLE2">输出结果。</p><p id="2VGFOLE6">ic| ice_1.py:7 in - plus_five( 4): 9<br/>ic| ice_1.py: 8 in - plus_five( 5): 10<br/> Training model 0 <br/> Training model 1 <br/> Training model 2 <br/> Training model 3 <br/> Training model 4 <br/> Training model 5 <br/> Training model 6 <br/> Training model 7 <br/> Training model 8 <br/> Training model 9 <br/></p><p id="2VGFOLEA">由于你可以区分调试打印和漂亮打印,因此搜索和删除所有ic调试语句非常容易。</p><p class="f_center"> <img src="http://dingyue.ws.126.net/2024/0826/7f97085eg00sit8to002od200ii007mg00ii007m.gif"/><br/></p><p id="2VGFOLEE">删除所有调试代码后,你的Python代码就整洁了。</p><p id="2VGFOLEH"><strong>总结</strong></p><p id="2VGFOLEJ">到此,你就应该就学会了如何使用icecream去打印调试。</p><p id="2VGFOLEL">更多功能可以访问其GitHub主页了解:</p><p id="2VGFOLEM">https://github.com/gruns/icecream</p><p id="2VGFOLEO"> Crossin的新书《<strong>码上行动:用ChatGPT学会Python编程</strong>》已经上市了。 本书以ChatGPT为辅助,系统全面地讲解了如何掌握Python编程,适合Python零基础入门的读者学习。</p><p id="2VGFOLEP"> 购买后可加入读者交流群,Crossin为你开启陪读模式,解答你在阅读本书时的一切疑问。</p><p id="2VGFOLEQ"> Crossin的其他书籍:</p><p id="2VGFOLES"> 添加微信 <strong>crossin123 </strong>,加入编程教室共同学习 ~</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2024%2F0826%2F55d83113j00sit8tp0028d200u000cng00u000cn.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p id="2VGFOLEU"> 感谢 <strong>转发</strong> 和 <strong>点赞</strong> 的各位~</p> 

讯享网
小讯
上一篇 2025-04-18 07:07
下一篇 2025-06-01 09:50

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/145441.html