枚举 Enumerate
枚举(enumerate)是Python内置函数。它的用处很难在简单的一行中说明,但是大多数的新人,甚至一些高级程序员都没有意识到它。
它允许我们遍历数据并自动计数,下面是一个例子:
for counter, value in enumerate(some_list): print(counter, value) 复制代码
不只如此,enumerate也接受一些可选参数,这使它更有用。
my_list = ['apple', 'banana', 'grapes', 'pear'] for c, value in enumerate(my_list, 1): print(c, value) 复制代码
输出:
(1, 'apple')
(2, 'banana')
(3, 'grapes')
(4, 'pear')
上面这个可选参数允许我们定制从哪个数字开始枚举。
你还可以用来创建包含索引的元组列表, 例如:
my_list = ['apple', 'banana', 'grapes', 'pear'] counter_list = list(enumerate(my_list, 1)) print(counter_list) 复制代码
输出: [(1, 'apple'), (2, 'banana'), (3, 'grapes'), (4, 'pear')]
对象自省
自省(introspection),在计算机编程领域里,是指在运行时来判断一个对象的类型的能力。
它是Python的强项之一。Python中所有一切都是一个对象,而且我们可以仔细勘察那些对象。Python还包含了许多内置函数和模块来帮助我们。
dir
在这个小节里我们会学习到dir以及它在自省方面如何给我们提供便利。
它是用于自省的最重要的函数之一。它返回一个列表,列出了一个对象所拥有的属性和方法。这里是一个例子:
my_list = [1, 2, 3] dir(my_list) 复制代码
Output: ['add', 'class', 'contains', 'delattr', 'delitem', 'delslice', 'doc', 'eq', 'format', 'ge', 'getattribute', 'getitem', 'getslice', 'gt', 'hash', 'iadd', 'imul', 'init', 'iter', 'le', 'len', 'lt', 'mul', 'ne', 'new', 'reduce', 'reduce_ex', 'repr', 'reversed', 'setattr', 'setitem', 'setslice', 'sizeof', 'str', 'subclasshook', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
上面的自省给了我们一个列表对象的所有方法的名字。当你没法回忆起一个方法的名字,这会非常有帮助。如果我们运行dir()而不传入参数,那么它会返回当前作用域的所有名字。
type和id
type函数返回一个对象的类型。举个例子:
print(type('')) 复制代码
Output: <type 'str'>
print(type([])) 复制代码
Output: <type 'list'>
print(type({})) 复制代码
Output: <type 'dict'>
print(type(dict)) 复制代码
Output: <type 'type'>
print(type(3)) 复制代码
Output: <type 'int'>
id()函数返回任意不同种类对象的唯一ID,举个例子:
name = "Yasoob" print(id(name)) 复制代码
Output: 139972439030304
inspect模块
inspect模块也提供了许多有用的函数,来获取活跃对象的信息。比方说,你可以查看一个对象的成员,只需运行:
import inspect print(inspect.getmembers(str)) 复制代码
Output: [('add', <slot wrapper 'add' of ... ...
还有好多个其他方法也能有助于自省。如果你愿意,你可以去探索它们。
作者:zhulin1028
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。