Python进阶(一)——下划线开头变量或方法,collections包,列表推导,生成器

本文介绍了Python中下划线开头的变量和方法的含义,包括单下划线、双下划线以及双下划线开头和结尾的特殊方法。探讨了内置的collections模块,如namedtuple、OrderedDict和Counter的使用。此外,详细阐述了列表推导和生成器表达式的应用,包括它们的区别、优缺点以及在创建序列和计算笛卡尔积时的效率优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本系列博客将不断总结python的应用技巧,本文主要内容源于《Fluent Python》一书。

1. python 中带有下划线的方法,其设计目的是避免自定义的变量以下划线开头。

以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用“from xxx import *”而导入,相当于protected方法;

以双下划线开头的 __foo代表类的私有成员,仅有本类的内部变量可以访问;

以双下划线开头和结尾的 __foo__ 代表python里的系统方法,如 __init__() 代表类的构造函数。

2. python常用的built-in方法

和运算符无关的特殊方法:

字符串/字节序列表示形式: __repr__, __str__, __format__, __bytes__
数值转换: __abs__, __bool__, __complex__, __int__, __float__, __hash__, __index__
集合模拟: __len__, __getitem__, __setitem__, __delitem__, __contains__
迭代枚举:__iter__, __reversed__, __next__
可调用模拟:__call__
上下文管理: __enter__, __exit__
实例创建和销毁:__new__, __init__, __del__
属性管理 :__getattr__, __setattr__, __getattribute__, __setattribute__, __delattr__, __dir__
属性描述符: __get__, __set__, __delete__
跟类相关的服务: __prepare__, __instancecheck__, __subclasscheck__

和运算符相关的特殊方法:
一元运算符: __neg__ , __pos__, __abs__
众多比较运算符: __lt__ <, __le__ <=, __eq__ =, __ne__ !=, __gt__ >, __ge__ >=
算术运算符: __add__ +, __sub__ - , __mul__ *, __truediv__ /, __floordiv__ //, __mod__ %, __divmod__ divmod(), __pow__ **pow(), __round__ round()
反向算术运算符: __radd__, __rsub__, __rmul__, __rtruediv__, __rfloordiv__, __rmod__, __rdivmod__, __rpow__
增量赋值算术运算符 :__iadd__, __isub__, __imul__ , __itruediv__, __ifloordiv__, __imod__, __ipow__
位运算符: __invert__ ~, __lshift__ <<, __rshift__ >>, __and__ &, __or__ , __xor__ ^
反向位运算符: __rlshift__, __rrshift__, __rand__, __rxor__, __ror__
增量赋值位运算符 __ilshift__, __irshift__, __iand__, __ixor__, __ior__

2. python自带的collections包提供了一些加强版本的数据结构。

>>> collections.__all__
['deque', 'defaultdict', 'namedtuple', 'UserDict', 'UserList', 'UserString', 'Counter', 'OrderedDict', 'ChainMap', 'Awaitable', 'Coroutine', 'AsyncIterable', 'AsyncIterator', 'AsyncGenerator', 'Hashable', 'Iterable', 'Iterator', 'Generator', 'Reversible', 'Sized', 'Container', 'Callable', 'Collection', 'Set', 'MutableSet', 'Mapping', 'MutableMapping', 'MappingView', 'KeysView', 'ItemsView', 'ValuesView', 'Sequence', 'MutableSequence', 'ByteString']

namedtuple:创建一个只有少数属性,但没有方法的“类”

>>> Circle = collections.namedtuple('circle',['x','y','r'])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值