您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Python

python这些令人惊艳的技能,你能get几个?

时间:2019-09-04 10:07:38  来源:  作者:

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

python这些令人惊艳的技能,你能get几个?

 

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

下面可以设置的参数:

说明:
前景色 背景色 颜色
---------------------------------------
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 schedule

2.使用案例

import schedule
import time
def 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 sleep
def 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)

展示效果

python这些令人惊艳的技能,你能get几个?

 

上面的代码中的 print 有几个有用的参数,sep 的作用是已什么为分隔符,默认是空格,这里设置为空串是为了让每个字符之间更紧凑,end 参数作用是以什么结尾,默认是回车换行符,这里为了实现进度条的效果,同样设置为空串。还有最后一个参数 flush,该参数的作用主要是刷新, 默认 flush = False,不刷新,print 到 f 中的内容先存到内存中;而当 flush = True 时它会立即把内容刷新并输出。

4.优雅的打印嵌套类型的数据

大家应该都有印象,在打印 json 字符串或者字典的时候,打印出的一坨东西根本就没有一个层次关系,这里主要说的就是输出格式的问题。

import json
my_mApping = {'a': 23, 'b': 42, 'c': 0xc0ffee}
print(json.dumps(my_mapping, indent=4, sort_keys=True))

大家可以自己试试只用 print 打印 my_mapping,和例子的这种打印方法。

如果我们打印字典组成的列表呢,这个时候使用 json 的 dumps 方法肯定不行的,不过没关系,用标准库的 pprint 方法同样可以实现上面的方法。

import pprint
my_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)

但是呢,所有属性需要提前定义好才能使用,比如想使用my_car.name,你就得把代码改成下面的样子。

from collections import namedtuple
# 以前简单的类可以使用 namedtuple 实现。
Car = namedtuple('Car', 'color mileage name')
my_car = Car('red', 3812.4,"Auto")
print(my_car.color)
print(my_car.name)

使用 namedtuple 的缺点很明显了。

所以现在更优的方案,那就是 Python3.7 加入到标准库的 dataclass。

其实在 3.6 也可以使用不过需要它被作为第三方的库使用了,使用 pip 安装即可。使用示例如下:

from dataclasses import dataclass
@dataclass
class Car:
 color: str
 mileage: float
my_car = Car('red', 3812.4)
print(my_car.color)
print(my_car)

6.f-string 的 !r,!a,!s

f-string出现在Python3.6,作为当前最佳的拼接字符串的形式,看下 f-string 的结构

f ' <text> { <expression> <optional !s, !r, or !a> <optional : format specifier> } <text> ... '

其中'!s' 在表达式上调用str(),'!r' 调用表达式上的repr(),'!a' 调用表达式上的ascii()

(1.默认情况下,f-string将使用str(),但如果包含转换标志,则可以确保它们使用repr () !

class Comedian:
 def __init__(self, first_name, last_name, age):
 self.first_name = first_name
 self.last_name = last_name
 self.age = age
 def __str__(self):
 return f"{self.first_name} {self.last_name} is {self.age}."
 def __repr__(self):
 return f"{self.first_name} {self.last_name} is {self.age}. Surprise!"

调用

>>> new_comedian = Comedian("Eric", "Idle", "74")
>>> f"{new_comedian}"
'Eric Idle is 74.'
>>> f"{new_comedian}"
'Eric Idle is 74.'
>>> f"{new_comedian!r}"
'Eric Idle is 74. Surprise!'

(2.!a的例子

>>> a = 'some string'
>>> f'{a!r}'
"'some string'"

等价于

>>> f'{repr(a)}'
"'some string'"

(3.!d的例子

类似2

pycon2019有人提出的一个展望!d的功能实现:

python这些令人惊艳的技能,你能get几个?

 

在python3.8中已经实现上述功能,不过不再使用!d了改为了f"{a=}"的形式,看过这个视频的发现没有!d应该很懵逼7.f-string 里"="的应用

在 Python3.8 里有这样一个功能

a = 5
print(f"{a=}")

打印之后的结果为

a=5

是不是很方便,不用你再使用f"a={a}"了。

8.海象运算符:=的使用

a =6
if (b:=a+1)>6:
 print(b)

赋值的时候同时可以进行运算,和 Go 语言的赋值类似了。

代码的运行顺序,首先计算 a+1 得到值为 7,然后把 7 赋值给 b,到这里代码相当于下面这样了

b =7
if b>6:
 print(b)

怎么样是不是简单了不少?



Tags:python   点击:()  评论:()
声明:本站部分内容来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除,谢谢。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
zip() 是 Python 中最好用的内置类型之一,它可以接收多个可迭代对象参数,再返回一个迭代器,可以把不同可迭代对象的元素组合起来。我之前写迭代器系列的时候,在《Python进阶:设计...【详细内容】
2020-07-10   python  点击:(0)  评论:(0)  加入收藏
目标:在中国的股票市场上盈利,每周都有单个股票盈利2%,月总盈利超过2%计划实现方式:Pycharm + Anaconda3 + Python3 + Django + AKShare + MongoDB目前采用的实现方式:Pycharm +...【详细内容】
2020-07-10   python  点击:(0)  评论:(0)  加入收藏
0. 序言在做数据分析之前,我们首先要明确数据分析的目标,然后 应用数据分析的思维,对目标进行细分,再采取相应的行动。我们可以把数据分析细分为以下 8 个步骤:(1)读取(2) 清洗(3) 操...【详细内容】
2020-07-09   python  点击:(0)  评论:(0)  加入收藏
我们这个世界充满了数据,而图像是这些数据的重要组成部分。然而,要想使用这些图像,需要对它们进行处理。因此,图像处理是分析和处理数字图像的必要的过程,其主要目的是提高图像质量或从中提取一些信息,然后加以利用。...【详细内容】
2020-07-09   python  点击:(0)  评论:(0)  加入收藏
在Python Console中执行,会报错,错误提示与代码匹配不上。例如:runfile(&#39;D:/project/python/example/pythonExample/LanguageExample/ObjectOrient/biz_handle.py&#39;, wd...【详细内容】
2020-07-09   python  点击:(1)  评论:(0)  加入收藏
再见HTML ! 用纯Python就能写一个漂亮的网页我们在写一个网站或者一个网页界面的时候,需要学习很多东西,对小白来说很困难!比如我要做一个简单的网页交互:天啊,听听头都大呢!其实...【详细内容】
2020-07-09   python  点击:(1)  评论:(0)  加入收藏
今天给大家带来了12个在GitHub等开源网站中最受欢迎的Python开源框架。如果你正在学习python,那么这12个开源框架,千万别错过,这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测...【详细内容】
2020-07-09   python  点击:(0)  评论:(0)  加入收藏
大家好,这里是弘创共享时刻。 本视频是面向编程零基础学员的Python入门教程,内容涵盖了Python的基础知识和初步应用。以较轻快的风格,向零基础学习者介绍了一门时下比较流行的...【详细内容】
2020-07-08   python  点击:(0)  评论:(0)  加入收藏
1 说明:=====1.1 SnakeViz:一个基于浏览器的 Python&#39;s cProfile 模块输出结果查看工具。1.2 SnakeViz是用于Python分析数据的查看器,该数据在浏览器中作为Web应用程序运行...【详细内容】
2020-07-07   python  点击:(0)  评论:(0)  加入收藏
今天用一个实际例子带大家走遍多元线性回归模型机器学习的全程。实例问题描述 我们现在拿到如上图的数据集,今天要做的就是建立多元线性回归模型,利用area, bedrooms, age来预测...【详细内容】
2020-07-05   python  点击:(0)  评论:(0)  加入收藏
情景(Situation)上文说到小爱面临着要给总部集团的李总每天早上固定发送日报邮件,而且他也找到自动化的方式了,那究竟是什么呢?其实在讲方法之前,其实我们也可以先简单学一下邮件...【详细内容】
2020-07-05   python  点击:(0)  评论:(0)  加入收藏
一、字符编码初探字符编码其实就是将人类能识别的字符与计算机能识别的数字对应起来。ASCII(American Standard Code for Information Interchange)美国信息交换标准代码,是...【详细内容】
2020-07-05   python  点击:(0)  评论:(0)  加入收藏
前言Python由于其易用性而成为最流行的语言,它提供了许多库,使程序员能够开发更强大的软件,以并行运行模型和数据转换。有这么一个库,它提供了并行计算、加速了算法,甚至允许您将...【详细内容】
2020-07-04   python  点击:(1)  评论:(0)  加入收藏
考虑到现在大部分小伙伴使用 Python 主要因为爬虫,那么为了更好地帮助大家巩固爬虫知识,加深对爬虫的理解,选择了爬取百度文库作为我们的目标。 废话不多说,我们开始。TXT、DOCX...【详细内容】
2020-07-03   python  点击:(0)  评论:(0)  加入收藏
前言交易系统的"止盈",作者认为是一个非常重要的模块。我常说,好的开仓仅仅决定你的策略浮盈大小,而最终的交易结果却只有止盈决定。作者之前就曾写过,比较经典的跟踪止盈方法之...【详细内容】
2020-07-03   python  点击:(1)  评论:(0)  加入收藏
选择的这些工具将简化你的 Python 环境,以实现顺畅和一致的开发实践。 来源:https://linux.cn/article-12369-1.html 作者:Moshe Zadka 译者:Xingyu.Wang(本文字数:2747,阅读时长...【详细内容】
2020-07-02   python  点击:(2)  评论:(0)  加入收藏
亲测有效,针对 阿里云, 华为云 centos 7 轻量服务器python ==> 3.7.8pip ==> 3一,打开python官网,找到下载Python的tgz文件,有两种方式下载 (版本可能更新,进官网核实为准) 1,直接在...【详细内容】
2020-07-01   python  点击:(0)  评论:(0)  加入收藏
前言Python Web框架里比较有名当属Django,Django功能全面,它提供一站式解决方案,集成了MVT(Model-View-Template)和ORM,以及后台管理。但是缺点也很明显,它偏重。就像是一个装潢好...【详细内容】
2020-07-01   python  点击:(1)  评论:(0)  加入收藏
首先要说明的一下,所描述的是 Python 中的 运算表达式 的部分,不是 Python 表达式的部分。关于什么是 Python 中的运算表达式,可以参考 Python 文档 10.3.1. Mapping Operators...【详细内容】
2020-07-01   python  点击:(1)  评论:(0)  加入收藏
用任何编程语言来开发程序,都是为了让计算机干活,比如编写一篇文章,下载一首MP3等,而计算机干活的CPU只认识机器的指令,所以,尽管不同的编程语言差异极大,最后都得“翻译”成CPU可...【详细内容】
2020-06-29   python  点击:(1)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条