Python 开发中高级技巧
列表推导式
>>> chars = [ c for c in 'python' ]
>>> chars
['p', 'y', 't', 'h', 'o', 'n']
字典推导式
>>> dict1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
>>> double_dict1 = {k:v*2 for (k,v) in dict1.items()}
>>> double_dict1
{'a': 2, 'b': 4, 'c': 6, 'd': 8, 'e': 10}
集合推导式
>>> set1 = {1,2,3,4}
>>> double_set = {i*2 for i in set1}
>>> double_set
{8, 2, 4, 6}
合并字典
>>> x = {'a':1,'b':2}
>>> y = {'c':3, 'd':4}
>>> z = {**x, **y}
>>> z
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
复制列表
>>> nums = [1,2,3]
>>> nums[::]
[1, 2, 3]
>>> copy_nums = nums[::]
>>> copy_nums
[1, 2, 3]
反转列表
>>> reverse_nums = nums[::-1]
>>> reverse_nums
[3, 2, 1]
变量交换
>>> a,b = 1, 2
>>> a ,b = b,a
>>> a
2
>>> b
1
高级拆包
>>> a, *b = 1,2,3
>>> a
1
>>> b
[2, 3]
或者 >>> a, *b, c = 1,2,3,4,5
>>> a
1
>>> b
[2, 3, 4]
>>> c
5
函数返回多个值(其实是自动packing成元组)然后unpacking赋值给4个变量
>>> def f():
... return 1, 2, 3, 4
...
>>> a, b, c, d = f()
>>> a
1
>>> d
4
列表合并成字符串
>>> " ".join(["I", "Love", "Python"])
'I Love Python'
链式比较
>>> if a > 2 and a < 5:
... pass
...
>>> if 2<a<5:
... pass
yield from
# 没有使用 field from
def dup(n):
for i in range(n):
yield i
yield i # 使用yield from
def dup(n):
for i in range(n):
yield from [i, i] for i in dup(3):
print(i) >>>
0
0
1
1
2
2
in 代替 or
>>> if x == 1 or x == 2 or x == 3:
... pass
...
>>> if x in (1,2,3):
... pass
字典代替多个if else
def fun(x):
if x == 'a':
return 1
elif x == 'b':
return 2
else:
return None def fun(x):
return {"a": 1, "b": 2}.get(x)
有下标索引的枚举
>>> for i, e in enumerate(["a","b","c"]):
... print(i, e)
...
0 a
1 b
2 c
生成器
注意区分列表推导式,生成器效率更高 >>> g = (i**2 for i in range(5))
>>> g
<generator object <genexpr> at 0x10881e518>
>>> for i in g:
... print(i)
...
0
1
4
9
16
默认字典 defaultdict
>>> d = dict()
>>> d['nums']
KeyError: 'nums'
>>> >>> from collections import defaultdict
>>> d = defaultdict(list)
>>> d["nums"]
[]
字符串格式化
>>> lang = 'python'
>>> f'{lang} is most popular language in the world'
'python is most popular language in the world'
列表中出现次数最多的元素
>>> nums = [1,2,3,3]
>>> max(set(nums), key=nums.count)
3 或者
from collections import Counter
>>> Counter(nums).most_common()[0][0]
3
读写文件
>>> with open("test.txt", "w") as f:
... f.writelines("hello")
判断对象类型,可指定多个类型
>>> isinstance(a, (int, str))
True
类似的还有字符串的 startswith,endswith >>> "http://foofish.net".startswith(('http','https'))
True
>>> "https://foofish.net".startswith(('http','https'))
True
__str__ 与 __repr__ 区别
>>> str(datetime.now())
'2018-11-20 00:31:54.839605'
>>> repr(datetime.now())
'datetime.datetime(2018, 11, 20, 0, 32, 0, 579521)'
前者对人友好,可读性更强,后者对计算机友好,支持 obj == eval(repr(obj))
使用装饰器
def makebold(f):
return lambda: "<b>" + f() + "</b>" def makeitalic(f):
return lambda: "<i>" + f() + "</i>" @makebold
@makeitalic
def say():
return "Hello" >>> say()
<b><i>Hello</i></b>
不使用装饰器,可读性非常差 def say():
return "Hello" >>> makebold(makeitalic(say))()
<b><i>Hello</i></b>
Python 开发中高级技巧的更多相关文章
- python 开发技巧(1)-- 用PyCharm安装第三方库
在python开发中,我们经常需要安装一些python的第三方类库,包等等,用PyCharm就会安装就会超级方便 1.打开上面的小扳手 2.点击页面左边的Project Interpreter 3.点 ...
- Python开发最常犯错误总结10种
不管是在学习还是工作过程中,人都会犯错.虽然Python的语法简单.灵活,但也一样存在一些不小的坑,一不小心,初学者和资深Python程序员都有可能会栽跟头.本文是Toptal网站的程序员梳理的10大 ...
- iOS开发实用技巧—在手机浏览器头部弹出app应用下载提示
iOS开发实用技巧—在手机浏览器头部弹出app应用下载提示 本文介绍其简单使用: 第一步:在本地建立一个访问的服务端. 打开本地终端,在本地新建一个文件夹,在该文件夹中存放测试的html页面. ...
- Python 开发与接口测试学习笔记
这是我跟着虫师学习中积累下来的学习笔记,写得比较简单,适合想学习Python开发与接口测试的初学者学习. 一.开发投票系统 1.参考官网文档,创建投票系统. https://docs.djangopr ...
- Python开发技术详解PDF
Python开发技术详解(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1F5J9mFfHKgwhkC5KuPd0Pw 提取码:xxy3 复制这段内容后打开百度网盘手 ...
- 【python安装】Windows上安装和创建python开发环境
1. 在 windows10 上安装python开发环境 Linux和Mac OS都自带python环境,但是Windows没有,所以需要自行安装. 第1步:访问 python官网,下载Windows ...
- 30个有关Python的小技巧,给程序员的 30 个基本 Python 贴士与技巧
30个有关Python的小技巧 2013/07/04 · Python, 开发 · 4 评论 · Python 分享到: 66 本文由 伯乐在线 - Kevin Sun 翻译.未经许可,禁止转载!英文 ...
- 《python开发技术详解》|百度网盘免费下载|Python开发入门篇
<python开发技术详解>|百度网盘免费下载|Python开发入门篇 提取码:2sby 内容简介 Python是目前最流行的动态脚本语言之一.本书共27章,由浅入深.全面系统地介绍了利 ...
- 学会这些Python美图技巧,就等着女朋友夸你吧
一.前言 Python中有许多用于图像处理的库,像是Pillow,或者是OpenCV.而很多时候感觉学完了这些图像处理模块没有什么用,其实只是你不知道怎么用罢了.今天就给大家带了一些美图技巧,让你的图 ...
随机推荐
- PHP+jquery+ajax实现分页
HTML <div id="list"> <ul></ul> </div> <div id="pagecount&q ...
- Java 07 example
留下两个例子作为参考, 1. 追逐小方块的例子 2. HashMap 和 Iterator 的例子 Example one: import acm.graphics.*; import acm.pro ...
- sublime text 3中配置golang开发环境
1:首先下载 Go源码 https://golang.org/dl/ [根据不同的环境选择] 2:新建文件项目文件夹 存放 D:/Go_project 分别建立 bin src pkg 子 ...
- 【BZOJ】1053: [HAOI2007]反素数ant(贪心+dfs)
http://www.lydsy.com/JudgeOnline/problem.php?id=1053 约数个数等于分解出的质因数的(指数+1)的乘积这个就不用说了吧... 然后好神的题在于贪心.. ...
- 【BZOJ】1681: [Usaco2005 Mar]Checking an Alibi 不在场的证明(spfa)
http://www.lydsy.com/JudgeOnline/problem.php?id=1681 太裸了.. #include <cstdio> #include <cstr ...
- Python 资料性网站。
伯乐在线:http://blog.jobbole.com/category/python/ http://blog.chinaunix.net/uid/22334392/cid-24327-list- ...
- 如何kill掉一个screen
两种方式: 1.使用screen名字,kill掉. screen -S session_name -X quit 2.激活screen: screen -r session_name 并利用exit退 ...
- 漫游Kafka入门篇之简单介绍(1)
介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语: Kafka将消息以 ...
- 【读书笔记】iOS-ARC-环境下怎样查看引用计数的变化
一.新建立一个project.用于測试引用计数的变化. 二,找到例如以下路径Build Phases---->Compile Sources---->AppDelegate.m 三,选中A ...
- JAVA上百实例源码网站
JAVA源码包1JAVA源码包2JAVA源码包3JAVA源码包4 JAVA开源包1 JAVA开源包2 JAVA开源包3 JAVA开源包4 JAVA开源包5 JAVA开源包6 JAVA开源包7 JAVA ...