贴士#21. 一行代码计算任何数的阶乘
Python 2.x.
result = (lambda k: reduce(int.__mul__, range(1,k+1),1))(3)
print(result)
Python 3.x.
import functools
result = (lambda k: functools.reduce(int.__mul__, range(1,k+1),1))(3)
print(result)
现在有很多人都想学一点编程,但是直接看教程又有点太难下手。
之前有几个朋友都问我能不能指导他们一下入门学个语言,于是我就弄了个零基础免费学习python的群,每天讲一点点很简单的内容。如果有0基础想入门的新手,不如来跟着看看,欢迎加入我们共同学习的队伍。(145010486)
贴士#22. 找到列表中出现最频繁的数
test = [1,2,3,4,2,2,3,1,4,4,4]
print(max(set(test), key=test.count))
贴士#23. 重置递归限制
Python 限制递归次数到 1000,我们可以重置这个值:
import sys
x=1001
print(sys.getrecursionlimit())
sys.setrecursionlimit(x)
print(sys.getrecursionlimit())
请只在必要的时候采用上面的技巧。
贴士#24. 检查一个对象的内存使用
在 Python 2.7 中,一个 32 比特的整数占用 24 字节,在 Python 3.5 中利用 28 字节。为确定内存使用,我们可以调用 getsizeof 方法:
在 Python 2.7 中
import sys
x=1
print(sys.getsizeof(x))
在 Python 3.5 中
import sys
x=1
print(sys.getsizeof(x))
贴士#25. 使用 __slots__ 来减少内存开支
你是否注意到你的 Python 应用占用许多资源特别是内存?有一个技巧是使用 __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
很明显,你可以从结果中看到确实有内存使用上的节省,但是你只应该在一个类的内存开销不必要得大时才使用 __slots__。只在对应用进行性能分析后才使用它,不然地话,你只是使得代码难以改变而没有真正的益处。
【注:在我的 win10 python2.7 中上面的结果是:
#In Python 2.7 win10
所以,这种比较方式是不那么让人信服的,使用 __slots__ 主要是用以限定对象的属性信息,另外,当生成对象很多时花销可能会小一些,具体可以参见 python 官方文档:
The slots declaration takes a sequence of instance variables and reserves just enough space in each instance to hold a value for each variable. Space is saved because dict is not created for each instance. 】
贴士#26. 使用 lambda 来模仿输出方法
import sys
lprint("python", "tips",1000,1001)
#-> python tips 1000 1001
贴士#27. 从两个相关的序列构建一个字典
t1 = (1, 2, 3)
t2 = (10, 20, 30)
print(dict (zip(t1,t2)))
贴士#28. 一行代码搜索字符串的多个前后缀
print("http://www.google.com".startswith(("http://", "https://")))
贴士#29. 不使用循环构造一个列表
import itertools
test = [[-1, -2], [30, 40], [25, 35]]
#-> [-1, -2, 30, 40, 25, 35]
贴士#30. 在 Python 中实现一个真正的 switch-case 语句
下面的代码使用一个字典来模拟构造一个 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'))
结语 – 给程序员的基本 Python 贴士与技巧
希望上述的基本的 Python 贴士与技巧可以帮助你快速地 & 有效地完成任务,你可以在作业与项目中使用他们。
你的回馈会使看到这篇文章的我们变得更好,所以如果有时间,请分享你的想法,谢谢大家,希望大家可以一起在python学习路上前进。
后续会有详细视频讲解,敬请期待
领取专属 10元无门槛券
私享最新 技术干货