# Python 技巧 | |
##### Github地址:[https://github.com/vimiix/python_tricks](https://github.com/vimiix/python_tricks) | |
##### Slide链接:[http://vimiix.com/python_tricks](http://vimiix.com/python_tricks) | |
``` | |
Vimiix | |
2017.12.20 | |
``` | |
--- | |
class: inverse | |
## 多种方法来验证多条件语句 | |
``` | |
x, y, z = 0, 1, 0 | |
if x == 1 or y == 1 or z == 1: | |
print('passed') | |
if 1 in (x, y, z): | |
print('passed') | |
# These only test for truthiness: | |
if x or y or z: | |
print('passed') | |
if any((x, y, z)): | |
print('passed') | |
``` | |
--- | |
class: inverse | |
## 函数参数解包 | |
``` | |
# Function argument unpacking | |
def myfunc(x, y, z): | |
print(x, y, z) | |
tuple_vec = (1, 0, 1) | |
dict_vec = {'x': 1, 'y': 0, 'z': 1} | |
myfunc(*tuple_vec) | |
# 1, 0, 1 | |
myfunc(**dict_vec) | |
# 1, 0, 1 | |
``` | |
--- | |
class: inverse | |
## 使用timeit模块来测试函数执行效率 | |
``` | |
import timeit | |
rt = timeit.timeit('"-".join(str(n) for n in range(100))', | |
number=10000) | |
print(rt) | |
# 0.252703905106 | |
rt = timeit.timeit('"-".join([str(n) for n in range(100)])', | |
number=10000) | |
print(rt) | |
# 0.234980106354 | |
rt = timeit.timeit('"-".join(map(str, range(100)))', | |
number=10000) | |
print(rt) | |
# 0.152318954468 | |
``` | |
--- | |
class: inverse | |
## 合并两个字典在不同版本中的写法 | |
``` | |
x = {'a': 1, 'b': 2} | |
y = {'b': 3, 'c': 4} | |
# Python 3.5+ | |
z = {**x, **y} | |
print(z) | |
# {'c': 4, 'a': 1, 'b': 3} | |
# Python 2.x | |
z = dict(x, **y) | |
print(z) | |
# {'a': 1, 'c': 4, 'b': 3} | |
``` | |
--- | |
class: inverse | |
## 巧用json模块更舒服的打印字典 | |
``` | |
# 标准打印出来,对于阅读不是很友好 | |
my_mapping = {'a': 23, 'b': 42, 'c': 0xc0ffee} | |
print(my_mapping) | |
# {'b': 42, 'c': 12648430. 'a': 23} # đŸ˜ž | |
# 使用json可以更好的展示 | |
import json | |
print(json.dumps(my_mapping, indent=4, sort_keys=True)) | |
# { | |
# "a": 23, | |
# "b": 42, | |
# "c": 12648430 | |
# } | |
``` | |
--- | |
class: inverse | |
## 通过字典的值(value)排序输出 | |
``` | |
# How to sort a Python dict by value | |
xs = {'a': 4, 'b': 3, 'c': 2, 'd': 1} | |
print(sorted(xs.items(), key=lambda x: x[1])) | |
# [('d', 1), ('c', 2), ('b', 3), ('a', 4)] | |
# Or: | |
import operator | |
print(sorted(xs.items(), key=operator.itemgetter(1))) | |
# [('d', 1), ('c', 2), ('b', 3), ('a', 4)] | |
``` | |
--- | |
class: inverse | |
## 字典的get用法和默认值 | |
``` | |
name_for_userid = { | |
382: "Alice", | |
590: "Bob", | |
951: "Dilbert", | |
} | |
def greeting(userid): | |
return "Hi %s!" % name_for_userid.get(userid, "there") | |
print(greeting(382)) | |
# "Hi Alice!" | |
print(greeting(2333333)) | |
# "Hi there!" | |
``` | |
--- | |
class: inverse | |
## 用namedtuple来代替简单的类 | |
``` | |
from collections import namedtuple | |
Car = namedtuple('Car', 'color mileage') | |
# 实例化一个Car,并像类一样使用 | |
my_car = Car('red', 3812.4) | |
print(my_car.color) | |
# 'red' | |
print(my_car.mileage) | |
# 3812.4 | |
print(my_car) | |
# Car(color='red' , mileage=3812.4) | |
# 就像元组一样,namedtuple也不可更改: | |
my_car.color = 'blue' | |
# AttributeError: "can't set attribute" | |
``` | |
--- | |
class: center, middle, inverse | |
## 持续更新中... | |
--- | |
class: middle, inverse | |
## 联系方式 | |
### | |
- Website: http://vimiix.com | |
- Twitter: http://twitter.com/_vimiix | |
- GitHub: http://github.com/vimiix | |
- Email: [i@vimiix.com](mailto:i@vimiix.com) |
# Python 技巧
最新推荐文章于 2022-09-22 18:01:44 发布