Python进阶系列(九)

举报
zhulin1028 发表于 2022/06/21 00:50:49 2022/06/21
【摘要】 目录 枚举 Enumerate 对象自省 dir type和id inspect模块 枚举 Enumerate 枚举(enumerate)是Python内置函数。它的用处很难在简单的一行中说明,但是大多数的新人,甚至一些高级程序员都没有意识到它。 它允许我们遍历数据并自动计数,下面是一个例子: for count...

目录

枚举 Enumerate

对象自省

dir

type和id

inspect模块


枚举 Enumerate

枚举(enumerate)是Python内置函数。它的用处很难在简单的一行中说明,但是大多数的新人,甚至一些高级程序员都没有意识到它。

它允许我们遍历数据并自动计数,下面是一个例子:


  
  1. for counter, value in enumerate(some_list):
  2.     print(counter, value)

不只如此,enumerate也接受一些可选参数,这使它更有用。


  
  1. my_list = ['apple', 'banana', 'grapes', 'pear']
  2. for c, value in enumerate(my_list, 1):
  3.     print(c, value)

输出:

(1, 'apple')

(2, 'banana')

(3, 'grapes')

(4, 'pear')

上面这个可选参数允许我们定制从哪个数字开始枚举。

你还可以用来创建包含索引的元组列表, 例如:


  
  1. my_list = ['apple', 'banana', 'grapes', 'pear']
  2. counter_list = list(enumerate(my_list, 1))
  3. print(counter_list)

 输出: [(1, 'apple'), (2, 'banana'), (3, 'grapes'), (4, 'pear')]

对象自省

自省(introspection),在计算机编程领域里,是指在运行时来判断一个对象的类型的能力。

它是Python的强项之一。Python中所有一切都是一个对象,而且我们可以仔细勘察那些对象。Python还包含了许多内置函数和模块来帮助我们。

dir

在这个小节里我们会学习到dir以及它在自省方面如何给我们提供便利。

它是用于自省的最重要的函数之一。它返回一个列表,列出了一个对象所拥有的属性和方法。这里是一个例子:


  
  1. my_list = [1, 2, 3]
  2. 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,举个例子:


  
  1. name = "Yasoob"
  2. print(id(name))

# Output: 139972439030304

inspect模块

inspect模块也提供了许多有用的函数,来获取活跃对象的信息。比方说,你可以查看一个对象的成员,只需运行:


  
  1. import inspect
  2. print(inspect.getmembers(str))

 Output: [('__add__', <slot wrapper '__add__' of ... ...

还有好多个其他方法也能有助于自省。如果你愿意,你可以去探索它们。

文章来源: zhulin1028.blog.csdn.net,作者:zhulin1028,版权归原作者所有,如需转载,请联系作者。

原文链接:zhulin1028.blog.csdn.net/article/details/125062572

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。