这篇文章主要和大家分享一些 Python 不一样的技巧 , 感受 Python 带给你的乐趣吧 。

文章插图
1.print 打印带有颜色的信息
大家知道 Python 中的信息打印函数 Print , 一般我们会使用它打印一些东西 , 作为一个简单调试 。
但是你知道么 , 这个 Print 打印出来的字体颜色是可以设置的 。
一个小例子
def esc(code=0): return f'[{code}m'print(esc('31;1;0') + 'Error:'+esc()+'important')在控制台或者 Pycharm 运行这段代码之后你会得到结果 。
Error:important其中 Error 是红色加下划线的 , important 为默认色
其设置格式为:[显示方式;前景色;背景色 m
【python这些令人惊艳的技能,你能get几个?】下面可以设置的参数:
说明:前景色 背景色 颜色---------------------------------------30 40 黑色31 41 红色32 42 绿色33 43 黃色34 44 蓝色35 45 紫红色36 46 青蓝色37 47 白色显示方式 意义-------------------------0 终端默认设置1 高亮显示4 使用下划线5 闪烁7 反白显示8 不可见例子:[1;31;40m <!--1-高亮显示 31-前景色红色 40-背景色黑色-->2.在 Python 中使用定时器
今天看到一个比较人性化的定时模块 schedule , 目前 star 数为 6432 , 还是非常的受欢迎 , 这个模块也是秉承这 For Humans 的原则 , 这里推荐给大家 。地址 https://github.com/dbader/schedule
1.通过 pip 即可安装 。
pip install schedule2.使用案例
import scheduleimport timedef job(): print("I'm working...")schedule.every(10).minutes.do(job) schedule.every().hour.do(job)schedule.every().day.at("10:30").do(job)schedule.every().monday.do(job)schedule.every().wednesday.at("13:15").do(job)schedule.every().minute.at(":17").do(job)while True: schedule.run_pending() time.sleep(1)从单词的字面意思 , 你就知道这是做什么的 。
举个例子:
schedule.every().monday.do(job)
这句代码作用就是就是单词意思 , 定时器会每个周一运行函数 job , 怎么样是不是很简单 。
3.实现一个进度条
from time import sleepdef progress(percent=0, width=30): left = width * percent // 100 right = width - left print('[', '#' * left, ' ' * right, ']', f' {percent:.0f}%', sep='', end='', flush=True)for i in range(101): progress(i) sleep(0.1)展示效果

文章插图
上面的代码中的 print 有几个有用的参数 , sep 的作用是已什么为分隔符 , 默认是空格 , 这里设置为空串是为了让每个字符之间更紧凑,end 参数作用是以什么结尾 , 默认是回车换行符 , 这里为了实现进度条的效果 , 同样设置为空串 。还有最后一个参数 flush , 该参数的作用主要是刷新 , 默认 flush = False , 不刷新 , print 到 f 中的内容先存到内存中;而当 flush = True 时它会立即把内容刷新并输出 。
4.优雅的打印嵌套类型的数据
大家应该都有印象 , 在打印 json 字符串或者字典的时候 , 打印出的一坨东西根本就没有一个层次关系 , 这里主要说的就是输出格式的问题 。
import jsonmy_mApping = {'a': 23, 'b': 42, 'c': 0xc0ffee}print(json.dumps(my_mapping, indent=4, sort_keys=True))大家可以自己试试只用 print 打印 my_mapping,和例子的这种打印方法 。
如果我们打印字典组成的列表呢 , 这个时候使用 json 的 dumps 方法肯定不行的 , 不过没关系 , 用标准库的 pprint 方法同样可以实现上面的方法 。
import pprintmy_mapping = [{'a': 23, 'b': 42, 'c': 0xc0ffee},{'a': 231, 'b': 42, 'c': 0xc0ffee}]pprint.pprint(my_mapping,width=4)5.功能简单的类使用 namedtuple 和 dataclass 的方式定义
有时候我们想实现一个类似类的功能 , 但是没有那么复杂的方法需要操作的时候 , 这个时候就可以考虑下下面两种方法了 。
第一个 , namedtuple 又称具名元组 , 带有名字的元组 。它作为 Python 标准库 collections 里的一个模块 , 可以实现一个类似类的一个功能 。
from collections import namedtuple# 以前简单的类可以使用 namedtuple 实现 。Car = namedtuple('Car', 'color mileage')my_car = Car('red', 3812.4)print(my_car.color)print(my_car)
推荐阅读
- 30行Python代码爬取Wifi密码
- 如何将一个 Python 函数进行模块化封装
- 复习时针扎穴位提神 这些方法也能提神
- 淘宝怎么开通直播步骤? 淘宝直播间的这些设置,你知道要怎么操作?
- 吃过这些经典小吃,才算到过苏州
- 这几个“养生知识”都是坑人!医学上根本没有这些概念
- 这些必吃的减肥水果,分分钟消灭你的肥肉!
- 买手机最该看的三方面?原来性能并非第一位,看懂这些不交智商税
- iOS 15这些实用功能,值得你一试
- 用微信赚钱的小心了,这些操作全都被禁止
