input函数最是经典,在多种实现中简单粗暴单纯而经济。
(笔记模板由python脚本于2024年11月22日 10:58:38创建,本篇笔记适合比较熟悉python的coder翻阅)
-
Python 官网:https://www.python.org/
-
Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
地址:https://lqpybook.readthedocs.io/
自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
—— 华罗庚
- My CSDN主页、My HOT博、My Python 学习个人备忘录
- 好文力荐、 老齐教室
本文质量分:
本文地址: https://blog.csdn.net/m0_57158496/article/details/143977115
CSDN质量分查询入口:http://www.csdn.net/qc
- ◆ Python中“暂停”
- 1、脱颖而出的input
- 1.1 “暂停”探索
- 1.2 input()“详解”
- 2、“暂停”示例
- 2.1 time.sleep
- 2.2 threading.Event
- 2.3 input
- 2.4 os.system
- 2.5 raw_input
- 2.6 timeit.defaulr_timer
- 3、“暂停”对性能的影响
- 4、过度使用“暂停”
- 5、条件性测试代码
- 6、结论
◆ Python中“暂停”
1、脱颖而出的input
1.1 “暂停”探索
引言
在Python编程中,实现“暂停”功能有多种方法,但并非所有场景都适用。根据实践经验,选择最合适的“暂停”方式对于提高开发效率和程序稳定性至关重要。
在探索Python的“暂停”功能时,我们发现了time.sleep
、threading.Event
、input
、os.system('pause')
、raw_input
、timeit.default_timer
等多种实现方式:
Python暂停工具列表
1、time.sleep 2、threading.Event 3、input 4、os.system('pause') 5、raw_input 6、timeit.default_timer
看起来python中有6个暂停之多,除开os.system
、raw_input
(前者,“指令容器”是外援且“不安全”;后者是低版本的input
),实际上也就四个可以用于代码执行中的“暂停”。
time.sleep
要加载且设定时长,threading.Event
和timeit.default_timer
又太“高端”,就剩下简单粗暴的input()
。根据我的实践经验,“暂停”一般多用于代码程序调试,在成品程序中,除了键盘输入外其实很少用到。所以,我认为一般“不太专业”的调试工作,用input
方便经济。
time.sleep
:虽然功能强大,但需要导入time
模块并设定具体的暂停时长,对于快速调试来说略显繁琐。threading.Event
和timeit.default_timer
:这两个方法在多线程和时间测量方面更为专业,但在简单的调试场景中可能显得有些“高端”。input()
:无需额外导入,只需一行代码即可实现暂停,非常适合快速调试。
由上面的比较,可以看出input
在Python中是一种简单而直接的方法来实现暂停,特别适合于非正式的调试场景。
根据我的实践经验,“暂停”功能在成品程序中并不常见,除了需要用户输入的场景外,几乎不会用到。因此,对于大多数“不太专业”的调试工作,input()
无疑是最方便、最经济的选择。
在Python编程中,选择合适的工具和方法对于实现高效、简洁的代码至关重要。对于简单的调试需求,input()
是一个非常好的选择!
对Python多种工具和方法深入理解后,作出最适选择是一种智慧。
1.2 input()“详解”
默认没有“输入提示”
help(input):Help on built-in function input in module builtins:
input(prompt=’’, /)
Read a string from standard input. The trailing newline is stripped.
The prompt string, if given, is printed to standard output without a
trailing newline before reading input.
If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
On *nix systems, readline is used if available.
--------- 这是help(input)的内容 ---------
-
“非常”却正是重置其参数
可以
input(f"\n{' 任意键继续…… ':-^37}")
一般
input(f"\n变量实况:{value}")
这是我对input()的非常常规。😎😎😎
input()
函数默认情况下是没有提示信息的。当调用input()
函数时,它会暂停程序的执行,等待用户输入内容,并返回用户输入的字符串。
input()
函数可以接受一个可选的prompt
参数,该参数用于提供给用户的提示信息。当您传递一个提示字符串给input()
时,它会打印该字符串,然后等待用户输入内容。也可以传入一个“对象”,input()
将打印输出该对象的str属性。
以下是一些input()函数的使用示例:
a a a. 默认用法(没有提示信息):
这个调用会暂停程序的执行,等待用户输入内容,并返回用户输入的字符串。user_input = input()
b b b. 带有提示信息的用法:
这个调用会暂停程序的执行,并打印出提示信息“请输入您的名字:”,然后等待用户输入内容,并返回用户输入的字符串。user_input = input("请输入您的名字: ")
c c c. 非常规用法(使用格式化字符串作为提示信息):
这个调用会暂停程序的执行,并打印出格式化的提示信息“ 任意键继续…… ”,然后等待用户按键,直到用户“回车”后才继续执行后面的代码。(这“非常”操作不用接收键盘输入内容,直接放弃对input返回字符串的接收。)user_input = input(f"\n{' 任意键继续…… ':-^37}")
2、“暂停”示例
在Python中,虽然没有直接名为 wait()
或 pause()
的内置函数,但是你可以使用几个不同的方法来实现类似的效果。
以下是一些常用的方法:
2.1 time.sleep
- 使用
time.sleep()
函数:
这是暂停Python程序执行最常见的方式。time.sleep()
函数接受一个参数,表示暂停的秒数。import time time.sleep(5) # 暂停5秒
2.2 threading.Event
- 使用
threading.Event()
:
如果你在使用多线程,并且想要在某个条件满足之前暂停线程,可以使用threading.Event()
。import threading event = threading.Event() # 设置事件,允许等待该事件的线程继续执行 event.set() # 等待事件,线程将在这里暂停,直到event.set()被调用 event.wait()
2.3 input
- 使用
input()
函数:
在简单的脚本中,如果你想要程序暂停直到用户输入某些内容,可以使用input()
函数。user_input = input("按回车键继续...")
2.4 os.system
- 使用
os.system('pause')
:
在 W i n d o w s Windows Windows系统中,可以使用os.system('pause')
来暂停脚本,它将显示“请按任意键继续. . .”的消息。import os os.system('pause')
2.5 raw_input
- 使用
raw_input()
(Python 2.x):
在Python 2中,raw_input()
函数可以用来实现暂停,不过这在Python 3中已经被input()
取代。
2.6 timeit.defaulr_timer
- 使用
timeit.default_timer()
:
如果你需要更精确的时间控制,可以使用timeit.default_timer()
来获取当前时间,并基于此进行计算和暂停。
每种方法都有其适用的场景,你可以根据具体需求选择合适的方法。在多线程编程中, threading.Event()
可能是更好的选择,而在简单的脚本中, time.sleep()
通常就足够了。
3、“暂停”对性能的影响
在上述方法中,如果考虑对性能的影响,通常 time.sleep()
函数对性能的影响是最小的,因为它直接由操作系统处理,不会涉及复杂的线程操作或其他资源消耗。
time.sleep()
的工作原理是让当前线程暂停指定的时间。在这段时间内,线程不会占用
C
P
U
CPU
CPU资源,因此不会对系统性能产生显著影响。操作系统会处理线程的调度,当指定的时间到达后,线程会自动恢复执行。
其他方法,如 threading.Event()
和 input()
,可能会涉及更多的资源管理和上下文切换:
-
1、
threading.Event()
:
当线程等待一个事件时,虽然它不会占用CPU资源,但是线程的状态管理和事件的通知机制可能会引入一些额外的开销。 -
2、
input()
:
会等待用户输入,这通常涉及到标准输入的处理,可能会阻塞主线程,直到用户提供了输入。这不会影响 C P U CPU CPU性能,但会阻塞程序的执行。 -
3、
os.system('pause')
和raw_input()
在性能影响上类似于input()
,它们会导致程序暂停,直到用户交互。
总的来说,如果你只是想要程序暂停一段时间,而不涉及用户输入或多线程同步, time.sleep()
是性能影响最小的选择。不过,需要注意的是,即使 time.sleep()
对性能的影响很小,也不应该在程序中过度使用,尤其是在高并发的服务端程序中,不恰当的睡眠可能会导致服务响应缓慢。
4、过度使用“暂停”
“在程序中过度使用暂停”,这是一个“没有意义”的命题。完全是多虑了!
我的理解和实践是:
- 1、“暂停”主要是“非正式”的,在最终“完成”的代码中,一般是没有“程序调试”语句存在的,除非为了标识,那也是以不影响的注释行保留在代码中。
- 2、当有“信息需要告知用户”或等待用户输入/确认时,才有“暂停语句”行。
我的ai学伴
您的理解和实践是正确的。在正式的、最终完成的代码中,确实应该避免不必要的暂停,特别是那些用于调试目的的time.sleep()
调用。
以下是几个最佳实践:
- 移除调试代码:
在代码开发阶段,使用time.sleep()
或其他暂停语句来帮助调试是常见的做法。但是,在代码准备发布之前,应该移除这些调试语句,以确保程序能够高效运行。 - 用户通知和输入:
如果需要告知用户信息或等待用户输入/确认,使用input()
或其他用户交互方式是合适的。这些暂停是程序逻辑的一部分,对于用户体验是必要的。 - 注释保留:
如果某些暂停语句是为了特定的调试目的,并且可能在未来再次需要,可以考虑将其注释掉而不是直接删除,这样可以在需要时快速恢复。 - 使用日志记录:
在正式代码中,使用日志记录(例如Python的logging
模块)来记录程序的状态和事件,而不是使用暂停来观察程序行为。 - 条件性调试代码:
如果需要在生产环境中保留某些调试功能,可以设置一个配置选项或环境变量来控制调试代码的执行。这样可以在不修改代码的情况下,通过更改配置来启用或禁用调试功能。 - 性能测试:
在发布前进行性能测试,确保没有遗留的暂停语句或其他性能瓶颈。
- 移除调试代码:
通过遵循这些最佳实践,可以确保代码既保持了可维护性,又能在生产环境中高效运行。
5、条件性测试代码
“ 条件性调试代码: 如果需要在生产环境中保留某些调试功能,可以设置一个配置选项或环境变量来控制调试代码的执行。这样可以在不修改代码的情况下,通过更改配置来启用或禁用调试功能。”
我
这个逻辑,我已实践并享用过。
我有个“工程”,在线收集我的数百篇csdn学习笔记的“阅读点赞收藏”等信息,就设置了一个“机关”,仅当开启时,才会random.choices(ids, k=8)
,用少量数据测试修改或者迭代过的“工程”状况,非常方便和实用。😎😎
ai学伴
听起来您已经很好地应用了条件性调试代码的概念,并且在实际项目中取得了良好的效果。使用random.choices()
来选择少量的数据集进行测试是一种高效的方法,因为它可以帮助您快速验证代码的更改,而不会影响到整个数据集的处理。
以下是一些可以进一步优化和扩展的建议:
-
配置文件:您可以使用配置文件(如JSON、YAML或INI格式)来存储调试设置,这样可以在不修改代码的情况下轻松更改配置。
-
环境变量:通过环境变量来控制调试模式,可以在部署时通过更改环境配置来启用或禁用调试,这对于云服务和容器化部署特别有用。
-
命令行参数:如果您的“工程”是通过命令行运行的,可以添加命令行参数来控制调试模式。
-
日志级别:除了控制数据集的大小,还可以根据配置来调整日志级别,以便在调试模式下输出更详细的日志信息。
-
断言和日志:在调试模式下,可以使用Python的
assert
语句来检查代码中的假设,并结合日志记录来提供更多的调试信息。 -
单元测试:对于更复杂的逻辑,可以编写单元测试来验证代码的正确性,这些测试可以在调试模式下自动运行。
-
代码分割:将调试代码和核心逻辑分离,可以使得代码更加清晰,并且更容易维护。
-
文档:确保记录了如何启用和禁用调试模式,以及调试模式下的预期行为,这对于其他开发者或未来的自己来说是非常有用的。
通过这些方法,您可以更灵活地控制调试过程,同时确保生产环境的稳定性和性能。再次强调,这种实践是提高代码质量和开发效率的有效手段。😊👍
6、结论
i
n
p
u
t
input
input,知名,易用,强大,方便。
它
它
它是python中非常随性的“暂停”工具。
上一篇: 我要扛起lambda“节操捍卫”大旗,为其“一次性”标签正名(短于“鳏夫”,不可“额外夹带”;优于对“简单”逻辑身轻如燕,优雅飘逸,起降随心)
下一篇:
我的HOT博:
本次共计收集 311 篇博文笔记信息,总阅读量43.82w。数据于2024年03月22日 00:50:22完成采集,用时6分2.71秒。阅读量不小于6.00k的有
7
7
7篇。
-
001
标题:让QQ群昵称色变的神奇代码
(浏览阅读 5.9w )
地址:https://blog.csdn.net/m0_57158496/article/details/122566500
点赞:25 收藏:86 评论:17
摘要:让QQ昵称色变的神奇代码。
首发:2022-01-18 19:15:08
最后编辑:2022-01-20 07:56:47 -
002
标题:Python列表(list)反序(降序)的7种实现方式
(浏览阅读 1.1w )
地址:https://blog.csdn.net/m0_57158496/article/details/128271700
点赞:8 收藏:35 评论:8
摘要:Python列表(list)反序(降序)的实现方式:原址反序,list.reverse()、list.sort();遍历,全数组遍历、1/2数组遍历;新生成列表,resersed()、sorted()、负步长切片[::-1]。
首发:2022-12-11 23:54:15
最后编辑:2023-03-20 18:13:55 -
003
标题:pandas 数据类型之 DataFrame
(浏览阅读 9.7k )
地址:https://blog.csdn.net/m0_57158496/article/details/124525814
点赞:7 收藏:36
摘要:pandas 数据类型之 DataFrame_panda dataframe。
首发:2022-05-01 13:20:17
最后编辑:2022-05-08 08:46:13 -
004
标题:个人信息提取(字符串)
(浏览阅读 8.2k )
地址:https://blog.csdn.net/m0_57158496/article/details/124244618
点赞:2 收藏:15
摘要:个人信息提取(字符串)_个人信息提取python。
首发:2022-04-18 11:07:12
最后编辑:2022-04-20 13:17:54 -
005
标题:Python字符串居中显示
(浏览阅读 7.6k )
地址:https://blog.csdn.net/m0_57158496/article/details/122163023
评论:1 -
006
标题:罗马数字转换器|罗马数字生成器
(浏览阅读 7.5k )
地址:https://blog.csdn.net/m0_57158496/article/details/122592047
摘要:罗马数字转换器|生成器。
首发:2022-01-19 23:26:42
最后编辑:2022-01-21 18:37:46 -
007
标题:回车符、换行符和回车换行符
(浏览阅读 6.0k )
地址:https://blog.csdn.net/m0_57158496/article/details/123109488
点赞:2 收藏:3
摘要:回车符、换行符和回车换行符_命令行回车符。
首发:2022-02-24 13:10:02
最后编辑:2022-02-25 20:07:40
截屏图片
(此文涉及ChatPT,曾被csdn多次下架,前几日又因新发笔记被误杀而落马。躺“未过审”还不如回收站,回收站还不如永久不见。😪值此年底清扫,果断移除。留此截图,以识“曾经”。2023-12-31)
精品文章:
- 好文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)
- OPP三大特性:封装中的property
- 通过内置对象理解python'
- 正则表达式
- python中“*”的作用
- Python 完全自学手册
- 海象运算符
- Python中的 `!=`与`is not`不同
- 学习编程的正确方法
来源:老齐教室
◆ Python 入门指南【Python 3.6.3】
好文力荐:
- 全栈领域优质创作者——[寒佬](还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
- 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
- 靠谱程序员的好习惯
- 大佬帅地的优质好文“函数功能、结束条件、函数等价式”三大要素让您认清递归
CSDN实用技巧博文:
- 8个好用到爆的Python实用技巧
- python忽略警告
- Python代码编写规范
- Python的docstring规范(说明文档的规范写法)