代码女神分享之Python程序员常用技巧——three完结篇

贴士#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学习路上前进。

后续会有详细视频讲解,敬请期待

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180104A0LMFQ00?refer=cp_1026

扫码关注云+社区