学python90%人的不知道的,python使用小计巧 (有代码)

这些小技巧,小编用的非常上手,所以分享出来,希望对你有帮助。
显示有限的接口到外部

当发布python第三方package时, 并不希望代码中所有的函数或者class可以被外部import,在__init__.py中添加__all__属性,该list中填写可以import的类或者函数名,可以起到限制的import的作用,防止外部import其他函数或者类。

小编建了一个学习Q群883444106,里面有很多的python学习大牛,欢迎小伙伴的加入

with的魔力

with语句需要支持上下文管理协议的对象, 上下文管理协议包含__enter__和__exit__两个方法。with语句建立运行时上下文需要通过这两个方法执行进入和退出操作。

其中上下文表达式是跟在with之后的表达式, 该表示大返回一个上下文管理对象。

详细原理可以查看这篇文章, 浅谈 Python 的 with 语句。

知道具体原理,我们可以自定义支持上下文管理协议的类, 类中实__enter__和__exit__方法。

执行结果如下:

883444106
证明了会先执行__enter__方法,然后调用with内的逻辑,最后执行__exit__做退出处理,并且, 即使出现异常也能正常退出。
filter的用法

相对filter而言, map和reduce使用的会更频繁一些, filter正如其名字, 按照某种规则过滤掉一些元素。

QQ群
一行作判断

当条件满足时, 返回的为等号后面的变量, 否则返回else后语句。

装饰器之单例

扫描二维码关注公众号,回复: 4603761 查看本文章

使用装饰器实现简单的单例模式。

staticmethod装饰器

类中两种常用的装饰,首先区分一下他们。

普通成员函数, 其中第一个隐式参数为对象;
classmethod装饰器,类方法(给人感觉非常类似于OC中的类方法), 其中第一个隐式参数为类;
staticmethod装饰器,没有任何隐式参数。python中的静态方法类似与C++中的静态方法。

定义私有类属性
将property与装饰器结合实现属性私有化(更简单安全的实现get和set方法)。

fget是获取属性的值的函数,fset是设置属性值的函数,fdel是删除属性的函数,doc是一个字符串(like a comment)。从实现来看,这些参数都是可选的。

property有三个方法getter(),setter()和delete()来指定fget,fset和fdel。 这表示以下这行:

iter魔法

通过yield和__iter__的结合, 我们可以把一个对象变成可迭代的。
通过__str__的重写,可以直接通过想要的形式打印对象。

partial使用上很像C++中仿函数(函数对象)。

在stackoverflow给出了类似与partial的运行方式。

利用用闭包的特性绑定预先绑定一些函数参数,返回一个可调用的变量, 直到真正的调用执行。

神秘eval

eval我理解为一种内嵌的python解释器(这种解释可能会有偏差), 会解释字符串为对应的代码并执行, 并且将执行结果返回。

看一下下面这个例子:

exec

exec在Python中会忽略返回值, 总是返回None,eval会返回执行代码或语句的返回值。
exec和eval在执行代码时,除了返回值其他行为都相同。
在传入字符串时,会使用compile(source, '

getattr

通过string类型的name,返回对象的name属性(方法)对应的值,如果属性不存在,则返回默认值,相当于object.name。

命令行处理

读写csv文件

883444106
小编建了一个学习Q群883444106,里面有很多的python学习大牛,欢迎小伙伴的加入

各种时间形式转换
只发一张网上的图, 然后差文档就好了, 这个是记不住的。

字符串格式化

一个非常好用,很多人又不知道的功能。

猜你喜欢

转载自www.cnblogs.com/yeqingli/p/10160468.html