Python内置函数--dir()&id()

简介: Python内置函数--dir()&id()

dir

此函数获取一个对象并返回可应用于该对象的所有方法的列表,称为属性

print(dir(3))
print(dir(list))
class A:
    """"清安"""
a = A()
print(dir(a))
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'as_integer_ratio', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']

里面有很多很多的属性,魔术方法里面有讲到部分,此处略作讲解。

class A:
    """"清安"""
    name = 'QINGAN'
    def run(self):
        return f"{self.run.__name__}!"
a = A()
print("run name",a.run())
print("__doc__", a.__doc__)
print("__class__", a.__class__)
print("class __name__", a.__class__.__name__)
print("__dict__", A.__dict__)
"""
run name run is run !
__doc__ "清安
__class__ <class '__main__.A'>
__name__ A
__dict__ QINGAN
"""

dir()可以看到的属性居多。如果还是没有一个比较好的概念,那么: 举例:自动化的测试报告中的用例说明就能直接使用__doc__。当你不知道类中有哪些字典属性可以使用的时候就可以使用__dict__。在函数以外的地方可以直接使用。此外:

x=dir(dict)
print(x)
['__class__', '__class_getitem__', '__contains__', '__delattr__', 
 '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', 
 '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', 
 '__init_subclass__', '__ior__', '__iter__', '__le__', '__len__', '__lt__', 
 '__ne__', '__new__', '__or__', '__reduce__', '__reduce_ex__', '__repr__', 
 '__reversed__', '__ror__', '__setattr__', '__setitem__', '__sizeof__', 
 '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items',
 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

你可以获取到某个对象的所有方法与属性,上述没有做说明。当你不知道字典中存在哪些属性可以使用的时候就可以使用这个方法查看指定的对象的属性与方法,并使用他。

自定义dir()

class Dir:
    def __init__(self,first_name,last_name):
        self.first_name = first_name
        self.last_name = last_name
    def __dir__(self) -> [str]:
        return [self.first_name,self.last_name]
d = Dir('清','安')
print(dir(d))

有用到魔法函数,如果不清楚没关系,了解,后续请看魔法函数篇章。

id

返回对象的标识。保证在同时存在的对象中是唯一的。也就是常听到的内存地址。

cmd进入交互式环境,换一种体验,可以用vscode跟pycharm以及其他的。
>>> x = 1
>>> y = 1
>>> id(x) == id(y)
True
>>> id(x)
2163759474992
>>> id(y)
2163759474992
>>> list1 = [1,2,3]
>>> list2 = [1,2,3]
>>> id(list1) == id(list2)
False
>>> id(list1[0]) == id(list2[0])
True
>>> id(list1[0])
2163759474992
>>> id(list2[0])
2163759474992
>>> list3 = [2,3,4]
>>> id(list3[1]) == id(list2[1])
False
>>> id(list3[0]) == id(list2[1])
True
>>> id(list3[0]) == id(list1[1])
True
>>> id(list3)
2163768100992
>>> dic = {"name":"qa"}
>>> dic1 = {"name":"123"}
>>> id(dic)==id(dic1)
False
>>> id(dic['name'])==id(dic1['name'])
False
>>> dic2 = {"name":"qa"}
>>> id(dic)==id(dic2)
False
>>> id(dic['name'])==id(dic2['name'])
True

上述小例子中可以看出,对象确实是唯一的,但是其中的值(元素)却不是。

目录
相关文章
|
5天前
|
Python
Python闭包函数和计时器
本文介绍了闭包函数的概念,它允许内部函数引用外部作用域的变量但无法修改它们。示例展示了如何使用闭包来封装函数。接着,文章讨论了如何在函数调用时添加开始和结束的打印语句,通过传递函数作为参数实现。然后,文章引入装饰器,通过闭包定义了一个`timer`装饰器,用于在函数执行前后打印消息。最后,给出了一个练习,实现了一个计算函数执行时间的装饰器,处理了带有参数的被装饰函数。
12 1
|
2天前
|
程序员 开发者 Python
Python中的装饰器:优雅而强大的函数修饰工具
在Python编程中,装饰器是一种强大的工具,它可以简洁地实现函数的增强、扩展和重用。本文将深入探讨Python中装饰器的工作原理、常见应用场景以及如何自定义装饰器,帮助读者更好地理解和运用这一重要的编程概念。
|
3天前
|
数据采集 Python
10个Python set 常用操作函数!,bilibili面试题
10个Python set 常用操作函数!,bilibili面试题
10个Python set 常用操作函数!,bilibili面试题
|
3天前
|
数据采集 数据挖掘 Python
Python学习——函数,2024年最新手持4个大厂offer的我
Python学习——函数,2024年最新手持4个大厂offer的我
|
3天前
|
数据采集 数据挖掘 关系型数据库
Excel计算函数(计算机二级)(1),2024年最新2024Python架构面试指南
Excel计算函数(计算机二级)(1),2024年最新2024Python架构面试指南
|
3天前
|
存储 Java Shell
【Python学习教程】Python函数和lambda表达式_6(1),2024蚂蚁金服面试题及答案
【Python学习教程】Python函数和lambda表达式_6(1),2024蚂蚁金服面试题及答案
|
3天前
|
Python
Python基础教程: math库常用函数(1),Python这些高端技术只有你还不知道
Python基础教程: math库常用函数(1),Python这些高端技术只有你还不知道
|
4天前
|
机器学习/深度学习 数据采集 自然语言处理
python函数参数的传递、带星号参数的传递,2024年大厂Python高级面试题分享
python函数参数的传递、带星号参数的传递,2024年大厂Python高级面试题分享
|
4天前
|
Python
Python 使用type()函数
【5月更文挑战第10天】
13 4
|
4天前
|
Python
Python使用isinstance()函数
【5月更文挑战第10天】Python使用isinstance()函数
9 2