关于Python开发的技巧小编在上篇文章已经给大家分享过一些,本篇文章扣丁学堂小编再和大家分享一下Python开发的技巧有哪些,下面随小编一起来了解一下Python开发的技巧有哪些吧。
Python开发的技巧有哪些
Python开发的技巧有哪些
property装饰器:
定义私有类属性
将property与装饰器结合实现属性私有化(更简单安全的实现get和set方法)。
#python内建函数
property(fget=None, fset=None, fdel=None, doc=None)
fget是获取属性的值的函数,fset是设置属性值的函数,fdel是删除属性的函数,doc是一个字符串(像注释一样)。从实现来看,这些参数都是可选的。
property有三个方法getter(), setter()和delete() 来指定fget, fset和fdel。 这表示以下这行:
class Student(object):
@property #相当于property.getter(score) 或者property(score)
def score(self):
return self._score
@score.setter #相当于score = property.setter(score)
def score(self, value):
if not isinstance(value, int):
raise ValueError('score must be an integer!')
if value < 0 or value > 100:
raise ValueError('score must between 0 ~ 100!')
self._score = value
iter魔法:
通过yield和iter的结合,我们可以把一个对象变成可迭代的
通过str的重写, 可以直接通过想要的形式打印对象
#!/usr/bin/env python
-- coding: utf-8 --
class TestIter(object):
def init(self):
self.lst = [1, 2, 3, 4, 5]
def read(self):
for ele in xrange(len(self.lst)):
yield ele
def iter(self):
return self.read()
def str(self):
return ','.join(map(str, self.lst))
repr = str
def test_iter():
obj = TestIter()
for num in obj:
print num
print obj
if name == 'main':
test_iter()
神奇partial:
partial使用上很像C++中仿函数(函数对象)。
在stackoverflow给出了类似与partial的运行方式:
def partial(func, *part_args):
def wrapper(*extra_args):
args = list(part_args)
args.extend(extra_args)
return func(*args)
return wrapper
利用用闭包的特性绑定预先绑定一些函数参数,返回一个可调用的变量, 直到真正的调用执行:
#!/usr/bin/env python
-- coding: utf-8 --
from functools import partial
def sum(a, b):
return a + b
def test_partial():
fun = partial(sum, 2) # 事先绑定一个参数, fun成为一个只需要一个参数的可调用变量
print fun(3) # 实现执行的即是sum(2, 3)
if name == 'main':
test_partial()