关于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()

执行结果