首页 > 编程语言 >python内置函数 D

python内置函数 D

时间:2024-03-14 16:31:04浏览次数:31  
标签:__ 内置 函数 python dict print my dir 属性

python内置函数 D

Python 解释器内置了很多函数和类型,任何时候都能使用。

D

名称描述
delattr删除对象的属性。
dict创建字典对象。
dir列出对象的属性。
divmod同时执行除法运算和取模运算,返回一个包含商和余数的元组。
delattr(object, name)

delattr()是一个内置函数,用于删除对象的属性。它接受两个参数:一个对象和一个字符串,该字符串表示要删除的属性的名称。

  • object:你想要删除属性的对象。
  • name:一个字符串,表示你想要从object中删除的属性的名称。

使用delattr()函数时,如果指定的属性存在,它将被删除;如果不存在,则会引发AttributeError

这是 setattr() 的相关函数。 其参数是一个对象和一个字符串。 其中字符串必须是对象的某个属性的名称。 该函数会删除指定的属性,如果对象允许这样做的话。 例如,delattr(x, 'foobar') 等价于 del x.foobarname 不要求必须是 Python 标识符 (参见 setattr())。

class MyClass:  
    def __init__(self):  
        self.my_attribute = "Hello, World!"  
  
# 创建类的实例  
my_instance = MyClass()  
  
# 打印属性,确认它存在  
print(my_instance.my_attribute)  # 输出: Hello, World!  
  
# 使用delattr删除属性  
delattr(my_instance, "my_attribute")  
  
# 尝试访问已删除的属性,将引发AttributeError  
try:  
    print(my_instance.my_attribute)  
except AttributeError as e:  
    print(f"属性不存在: {e}")  # 输出: 属性不存在: 'MyClass' object has no attribute 'my_attribute'

delattr()通常用于动态地删除对象的属性,这在某些特殊情况下可能很有用,例如当对象的属性是在运行时动态添加时。然而,在大多数情况下,更好的做法是在类的定义中明确管理属性的添加和删除,以保持代码的清晰和可维护性。

dict(**kwarg)

class dict(**kwarg)

class dict(mapping, **kwarg)

class dict(iterable, **kwarg)

创建一个新的字典。dict 对象是一个字典类。参见 dict映射类型 — dict 了解这个类。

其他容器类型,请参见内置的 listsettuple 类,以及 collections 模块。

dict()是一个内置函数,用于创建字典对象。字典是一种无序的、可变的数据结构,它存储了键值对的集合。可以通过键来快速访问、修改或删除与之相关联的值。

创建一个空字典
my_dict = dict()  # 或my_dict = {}
print(my_dict)  # 输出: {}
创建一个有初始键值对的字典

传递一个包含键值对的列表(每个键值对是一个包含两个元素的列表或元组)给dict()函数来创建一个包含初始数据的字典。

my_dict = dict([('apple', 1), ('banana', 2), ('cherry', 3)])  
print(my_dict)  # 输出: {'apple': 1, 'banana': 2, 'cherry': 3}

或者,可以传递一个包含键值对的可迭代对象,其中每个元素都是一个包含两个元素的元组。

my_dict = dict((('apple', 1), ('banana', 2), ('cherry', 3)))  
print(my_dict)  # 输出: {'apple': 1, 'banana': 2, 'cherry': 3}
从已有的键值对创建字典

也可以使用花括号 {} 和冒号 : 来直接创建字典,这种方式更加常见和简洁。

my_dict = {'apple': 1, 'banana': 2, 'cherry': 3}  
print(my_dict)  # 输出: {'apple': 1, 'banana': 2, 'cherry': 3}
使用关键字参数创建字典

dict()函数也接受关键字参数,其中关键字是键,对应的值是值。

my_dict = dict(apple=1, banana=2, cherry=3)  
print(my_dict)  # 输出: {'apple': 1, 'banana': 2, 'cherry': 3}
字典的常用操作
  • 访问字典中的值:通过键来访问对应的值。

    value = my_dict['apple']  # value 现在是 1
    
  • 修改字典中的值:通过给键分配新的值来修改字典。

    my_dict['apple'] = 10  # 现在 'apple' 的值是 10
    
  • 添加新的键值对:如果键不存在于字典中,给它分配一个值就会添加一个新的键值对。

    my_dict['orange'] = 4  # 添加一个新的键值对 'orange': 4
    
  • 删除键值对:使用del语句或pop()方法来删除键值对。

    del my_dict['banana']  # 删除键为 'banana' 的键值对  
    # 或者  
    value = my_dict.pop('cherry')  # 删除键为 'cherry' 的键值对,并返回其值
    
  • 检查键是否存在:使用in关键字来检查字典中是否包含某个键。

    if 'apple' in my_dict:  
        print("'apple' is in the dictionary.")
    

字典是Python编程中非常有用的数据结构,因为它们允许你通过键来快速存储和检索值。

dir()

dir()是一个内置函数,用于列出对象的属性。当你对一个对象调用dir()时,它会返回一个包含该对象所有属性的列表,这些属性包括方法、模块、变量等。

  • object(可选):要列出其属性的对象。如果不提供对象,dir()将返回当前作用域中的名称列表。

dir()

dir(object)

如果没有实参,则返回当前本地作用域中的名称列表。如果有实参,它会尝试返回该对象的有效属性列表。

如果对象有一个名为 __dir__() 的方法,则该方法将被调用并且必须返回由属列组成的列表。 这允许实现自定义 __getattr__()__getattribute__() 函数的对象能够定制 dir() 报告其属性的方式。

如果对象未提供 __dir__(),该函数会尽量从对象所定义的 __dict__ 属性和其类型对象中收集信息。 结果列表不一定是完整的,并且当对象具有自定义的 __getattr__() 时还可能是不准确的。

默认的 dir() 机制对不同类型的对象行为不同,它会试图返回最相关而不是最全的信息:

  • 如果对象是模块对象,则列表包含模块的属性名称。
  • 如果对象是类型或类对象,则列表包含它们的属性名称,并且递归查找所有基类的属性。
  • 否则,列表包含对象的属性名称,它的类属性名称,并且递归查找它的类的所有基类的属性。

返回的列表按字母表排序。例如:

# ['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']
print(dir())

# 列出模块的属性
import struct
# ['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'struct']
print(dir())
# ['Struct', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_clearcache', 'calcsize', 'error', 'iter_unpack', 'pack', 'pack_into', 'unpack', 'unpack_from']
print(dir(struct))

# 列出对象的属性
class Shape:
    def __dir__(self):
        return ['area', 'perimeter', 'location']

s = Shape()
# ['Shape', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 's', 'struct']
print(dir())
# ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
print(dir(Shape))
# ['area', 'location', 'perimeter']
print(dir(s))

备注:因为 dir() 主要是为了便于在交互式时使用,所以它会试图返回人们感兴趣的名字集合,而不是试图保证结果的严格性或一致性,它具体的行为也可能在不同版本之间改变。例如,当实参是一个类时,metaclass 的属性不包含在结果列表中。

dir()函数返回的属性列表是动态的,这意味着它会根据对象的状态和类型变化。因此,在不同的时间点或不同的对象上调用dir()可能会得到不同的结果。

注意:dir()返回的属性列表可能包含一些以单下划线或双下划线开头的特殊属性或方法,这些是Python的内部实现细节,通常不建议直接访问或修改,除非你有明确的理由这样做,并且了解可能带来的后果。

divmod(a, b)

以两个(非复数)数字为参数,在作整数除法时,返回商和余数。若操作数为混合类型,则适用二进制算术运算符的规则。对于整数而言,结果与 (a // b, a % b) 相同。对于浮点数则结果为 (q, a % b),其中 q 通常为 math.floor(a / b),但可能比它小 1。在任何情况下, q * b + a % b 都非常接近 a,如果 a % b 非零,则结果符号与 b 相同,并且 0 <= abs(a % b) < abs(b)

# 简单的整数除法
quotient, remainder = divmod(10, 3)
print(quotient)  # 输出: 3
print(remainder)  # 输出: 1

# 浮点数也可以使用,但结果将是整数商和余数
quotient, remainder = divmod(10.0, 3)
print(quotient)  # 输出: 3.0
print(remainder)  # 输出: 1.0

# 负数的情况
quotient, remainder = divmod(-10, 3)
print(quotient)  # 输出: -4
print(remainder)  # 输出: 2

# 处理余数为负的情况
quotient, remainder = divmod(-10, 4)
print(quotient)  # 输出: -3
print(remainder)  # 输出: 2

# 负数的情况
quotient, remainder = divmod(-10, -3)
print(quotient)  # 输出: 3
print(remainder)  # 输出: -1

# 负数的情况
quotient, remainder = divmod(10, -3)
print(quotient)  # 输出: -4
print(remainder)  # 输出: -2

注意,当被除数为负数且除数为正数时,结果的余数为负数,且其绝对值小于除数。反之,当除数为负数时,结果的余数为正数,且其绝对值也小于除数的绝对值。

参考:内置函数 — Python 3.12.2 文档

标签:__,内置,函数,python,dict,print,my,dir,属性
From: https://blog.csdn.net/dc1120/article/details/136714607

相关文章

  • 入门必看:写给 Python 小伙伴的一些建议
    写在前面不知不觉作为一名Python开发工程师也有好几年的时间了,对于Python总想写点总结,却又不知从何开始。随着公司项目不断转向Java,我隐约的觉得Python的生涯也将迎来终结,所以近期抽个空下这篇关于Python的一些总结。正文开始先看一个Python3CheatSheet,忘了......
  • 【2024-完整版】python爬虫 批量查询自己所有CSDN文章的质量分:附整个实现流程
    【2024】批量查询CSDN文章质量分写在最前面一、分析获取步骤二、获取文章列表1.前期准备2.获取文章的接口3.接口测试(更新重点)三、查询质量分1.前期准备2.获取文章的接口3.接口测试四、python代码实现1.分步实现2.批量获取文章信息3.从excel中读取文章url,查询......
  • 自学Python第一步,记住这7大编码规范
    一、缩进每一级缩进4个空格。续行应该与包裹元素对齐,要么使用圆括号,方括号,花括号内的隐式行连接来垂直对齐,要么使用挂行缩进对齐。当使用挂行缩进对齐时,应该考虑到第一行不应该有参数,以及使用缩进以区分自己是续行。对齐缩进(左右括号对齐)deflong_function_name(var_......
  • Python 中 Panda 库 处理表格方法
    1.导入Pandas库importpandasaspd2.创建DataFrame对象#从列表创建data=[['Alice',25],['Bob',30],['Charlie',35]]df=pd.DataFrame(data,columns=['Name','Age'])#从字典创建data={'Name':[&#......
  • [USACO | Python] 201602B2 Circular Barn
    作为当代建筑的粉丝,农民约翰(John)建造了一个完美圆形的新谷仓。在里面,谷仓由n环组成房间,从1…n的顺时针方向编号。房间的有n个(1<=n<=1000)。每一间房间都有三扇门,两扇分别通往临近的房间,一扇通往谷仓的外面。FarmerJohn想要有准确的ri头牛在房间r中(1<=ri<=100),他......
  • Python实现ws订阅服务
    一、Python实现ws订阅服务#使用websocket订阅欧易公共频道中的行情频道,以下是已知信息,写出Python代码#地址:"wss://wspap.okx.com:8443/ws/v5/public?brokerId=9999"#请求示例:#{#"op":"subscribe",#"args":[{#"channel":"......
  • 滴水逆向笔记系列-c语言总结6-20.多级指针 数组指针 函数指针-21.位运算-22.内存分配
    第二十课c语言13多级指针数组指针函数指针1.多级指针反汇编一二级指针可以看到p1==*(p1+0)==p1[0]本来一直没想懂为什么是movsxecx,byteptr[eax],是byte,才发现p1是char类型,所以才得用movsx拓展(p1+2)==p1[2],指针可以用和[]取值,他们是一样的(((p3+1)+2)+3)==p3[......
  • Python实现http接口请求数据后,往RabbitMQ里面插入数据
    python实现http接口请求数据服务后,往RABBITmq里面插入数据importtimeimportrequestsimportpikaimportdatetimebase_url='https://www.okx.com'api_url='/api/v5/market/history-mark-price-candles'#时间颗粒度[1m/3m/5m/15m/30m/1H/2H/4H]time_unit=[......
  • 问题记录:Vue3的watch,如何做到在监听值没变化的情况下调用相关函数去请求接口?
    一般来说Vue的watch属性只在监听到值发生变化了,才会去执行相关代码。可是最近在做项目(Vue3+TS+Vite)的时候,遇到了这种情况:标题如图所示:Modal是在父组件里写的,Modal里的折线图是在子组件里写的。点击按钮后会获取到pid和vid的值传给子组件。子组件通过watch属......
  • python string模块
    介绍ascii_letters--所有字母的字符串ascii_lowercase--小写字母的字符串ascii_uppercase--大写字母的字符串digits--十进制数字的字符串hexdigits--十六进制数字的字符串octdigits--八进制数字的字符串punctuation--标点符号的字符串printable--所有可打印的ASCII码字符......