# 值得收藏的22个Python运用技巧

get最新最全的IT技能

1. 原地交换两个数字

Python 提供了一个直观的在一行代码中赋值与交换（变量值）的方法，请参见下面的示例：

x, y = 10, 20

print(x, y)

x, y = y, x

print(x, y)

#1 (10, 20)

#2 (20, 10)

2. 链状比较操作符

n = 10

result = 1

print(result)

# True

result = 1 > n

print(result)

# False

3. 使用三元操作符来进行条件赋值

[表达式为真的返回值] if [表达式] else [表达式为假的返回值]

x = 10 if (y == 9) else 20

x = (classA if y == 1 else classB)(param1, param2)

def small(a, b, c):

return a if a

print(small(1, 0, 1))

print(small(1, 2, 2))

print(small(2, 2, 3))

print(small(5, 4, 3))

#Output

#0 #1 #2 #3

[m2 if m > 10 else m4 for m in range(50)]

#=> [0, 1, 16, 81, 256, 625, 1296, 2401, 4096, 6561, 10000, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961, 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209, 2304, 2401]

4. 多行字符串

multiStr = "select * from multi_row

where row_id

print(multiStr)

# select * from multi_row where row_id

multiStr = """select * from multi_row

where row_id

print(multiStr)

#select * from multi_row

#where row_id

multiStr= ("select * from multi_row "

"where row_id

"order by age")

print(multiStr)

#select * from multi_row where row_id

5. 存储列表元素到新的变量中

testList = [1,2,3]

x, y, z = testList

print(x, y, z)

#-> 1 2 3

6. 打印引入模块的文件路径

import socket

print(socket)

#1-

#2-

7. 交互环境下的 “_” 操作符

>>> 2 1

3

>>> _

3

>>> print _

3

“_” 是上一个执行的表达式的输出。

8. 字典/集合推导

testDict =

testSet =

print(testSet)

print(testDict)

#set([0, 2, 4, 6, 8, 10, 12, 14, 16, 18])

#

9. 调试脚本

import pdb

pdb.set_trace()

10. 开启文件分享

Python 允许运行一个 HTTP 服务器来从根路径共享文件，下面是开启服务器的命令：

# Python 2

python -m SimpleHTTPServer

# Python 3

python3 -m http.server

11. 检查 Python 中的对象

test = [1, 3, 5, 7]

print( dir(test) )

['add', 'class', 'contains', 'delattr', 'delitem', 'delslice', 'doc', 'eq', 'format', 'ge', 'getattribute', 'getitem', 'getslice', 'gt', 'hash', 'iadd', 'imul', 'init', 'iter', 'le', 'len', 'lt', 'mul', 'ne', 'new', 'reduce', 'reduce_ex', 'repr', 'reversed', 'rmul', 'setattr', 'setitem', 'setslice', 'sizeof', 'str', 'subclasshook', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

12. 简化 if 语句

if m in [1,3,5,7]:

if m==1 or m==3 or m==5 or m==7:

13. 一行代码计算任何数的阶乘

Python 2.x.

result = (lambda k: reduce(int.mul, range(1,k 1),1))(3)

print(result)

#-> 6

Python 3.x.

import functools

result = (lambda k: functools.reduce(int.mul, range(1,k 1),1))(3)

print(result)

#-> 6

14. 找到列表中出现最频繁的数

test = [1,2,3,4,2,2,3,1,4,4,4]

print(max(set(test), key=test.count))

#-> 4

15. 重置递归限制

Python 限制递归次数到 1000，我们可以重置这个值：

import sys

x=1001

print(sys.getrecursionlimit())

sys.setrecursionlimit(x)

print(sys.getrecursionlimit())

#1-> 1000

#2-> 1001

16. 检查一个对象的内存使用

import sys

x=1

print(sys.getsizeof(x))

#-> 24

import sys

x=1

print(sys.getsizeof(x))

#-> 28

17. 使用 slots 来减少内存开支

import sys

class FileSystem(object):

def init(self, files, folders, devices):

self.files = files

self.folders = folders

self.devices = devices

print(sys.getsizeof( FileSystem ))

class FileSystem1(object):

slots = ['files', 'folders', 'devices']

def init(self, files, folders, devices):

self.files = files

self.folders = folders

self.devices = devices

print(sys.getsizeof( FileSystem1 ))

#In Python 3.5

#1-> 1016

#2-> 888

#In Python 2.7 win10

#1-> 896

#2-> 1016

18. 使用 lambda 来模仿输出方法

19. 从两个相关的序列构建一个字典

t1 = (1, 2, 3)

t2 = (10, 20, 30)

print(dict (zip(t1,t2)))

#->

20. 一行代码搜索字符串的多个前后缀

#1-> True

#2-> True

21. 不使用循环构造一个列表

22. 在 Python 中实现一个真正的 switch-case 语句

def xswitch(x):

return xswitch._system_dict.get(x, None)

xswitch._system_dict = {'files': 10, 'folders': 5, 'devices': 2}

print(xswitch('default'))

print(xswitch('devices'))

#1-> None

#2-> 2

• 发表于:
• 原文链接https://kuaibao.qq.com/s/20180914A0TONE00?refer=cp_1026
• 腾讯「云+社区」是腾讯内容开放平台帐号（企鹅号）传播渠道之一，根据《腾讯内容开放平台服务协议》转载发布内容。
• 如有侵权，请联系 yunjia_community@tencent.com 删除。

2022-05-21

2022-05-21

2022-05-21

2022-05-21

2022-05-21

2022-05-21

2018-06-25

2022-05-21

2022-05-21

2022-05-21

2022-05-21

2022-05-21