目录
5. isinstance(obj, classinfo):判断对象是否是某种类型或其子类的实例。
6. issubclass(class1, class2):判断一个类是否是另一个类的子类。
7. getattr(obj, name[, default]):获取对象的属性值。如果属性不存在,可以通过提供可选的第三个参数设置默认返回值。
8. setattr(obj, name, value):设置对象的属性值。
9. delattr(obj, name):删除对象的属性。
10. hasattr(obj, name):检查对象是否有指定名称的属性。该函数返回布尔值,如果对象拥有指定名称的属性,则返回 True,否则返回 False。
12. len(obj):返回对象的长度,适用于列表、元组、字符串、字典等可迭代对象。
13. iter(obj[, sentinel]):返回一个迭代器对象,用于遍历序列或其他可迭代的对象。
14. next(iterator[, default]):从迭代器中获取下一个项目,如果没有更多项目则抛出StopIteration异常或返回默认值(在Python 3中提供默认参数)。
15. tuple(obj) / list(obj) / set(obj) / dict(obj):将可迭代对象转换成相应的数据结构。
16. hash(obj):如果对象是可哈希的,则返回该对象的哈希值。
17. copy.copy(obj) / copy.deepcopy(obj):浅复制与深复制对象,需要导入copy模块。
18. callable(obj):判断一个对象是否可调用。即判断它是否是可调用对象(Callable Object),如函数、方法、带有 __call__ 方法的类实例等。
19. chr(i) / ord(c):将整数转换为其对应的单个字符(unichr在Python 3中变为chr),或将单个字符转换为其对应的Unicode编码。
20. min() 和 max() - 分别返回序列中的最小和最大元素
22.sorted() - 对序列进行排序并返回一个新的排序后的序列(原序列不变)
24.enumerate() - 返回一个枚举对象,包含索引和对应的值
25.str.upper() 或 str.lower() - 将字符串转换为大写或小写
26.str.split() - 按照分隔符切割字符串成多个子字符串组成的列表
27.str.join() - 使用指定的字符连接列表中的元素形成一个字符串
28.append() - 向列表末尾添加一个元素(不是内置函数,而是列表的方法)
30.remove() - 从列表中移除第一个匹配的指定元素
31.extend() - 在列表后面追加另一个序列的所有元素
33.any() 和 all() - 检查一个可迭代对象中是否存在至少一个True(any())或全部为True(all())的元素:
36.pow(x, y[, z]) - 计算幂次方,如果有第三个参数z,则计算 x^y % z
38.zip() - 将可迭代对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表
39.str.replace(old, new[, count]) - 替换字符串中所有的 old 子串为 new 子串,可选参数 count 控制替换次数
40.int(x[, base]) / float(x) / str(x) / bool(x) - 将其他类型的数据转换为整型、浮点型、字符串型或布尔型
1. getattr() 函数:
- 用途: 根据名称动态地从对象中获取属性值。
- 语法:
getattr(obj, name[, default])
- 参数:
- obj: 必须是一个对象,你想从这个对象中获取属性。
name
: 字符串类型,表示你想要访问的属性名。default
(可选): 如果指定的属性不存在于对象上,则返回此默认值。如果不提供,默认抛出AttributeError
异常。
class MyClass:
def __init__(self):
self.my_attribute = "Hello, World!"
my_instance = MyClass()
attribute_value = getattr(my_instance, 'my_attribute') # 获取 my_attribute 的值
print(attribute_value) # 输出: Hello, World!
2. setattr() 函数:
- 用途: 动态地给对象添加或修改属性及其值。
- 语法:
setattr(obj, name, value)
- 参数:
- obj: 同样是一个对象,你想在这个对象上设置属性。
name
: 要设置或创建的属性的字符串名称。value
: 要赋予属性的新值。
class MyClass:
pass
my_instance = MyClass()
# 动态添加并设置一个新属性
setattr(my_instance, 'new_attribute', 42)
print(getattr(my_instance, 'new_attribute')) # 输出: 42
# 修改已存在的属性值
setattr(my_instance, 'new_attribute', 'New Value')
print(getattr(my_instance, 'new_attribute')) # 输出: New Value
这两个函数在处理对象属性时提供了很大的灵活性,尤其是在需要根据条件动态操作属性或处理未知属性名的情况下非常有用。
3. id():返回对象的唯一标识符(内存地址)。
这个标识符是一个整数,代表了对象在内存中的地址。每个创建的对象在内存中都有一个唯一的地址,id()
函数就是用来获取这个地址的
a = 123
print(id(a)) # 输出示例:140732859644944(实际输出会根据运行环境变化)
4. type():返回对象的类型。
它的主要作用是返回一个对象的类型。可以用它来查看任何对象的数据类型。
# 创建一个字符串对象
s = "Hello, World!"
# 使用 type() 函数检查数据类型
print(type(s)) # 输出: <class 'str'>
# 创建一个整数对象
i = 42
# 检查整数的数据类型
print(type(i)) # 输出: <class 'int'>
# 创建一个列表对象
l = [1, 2, 3]
# 检查列表的数据类型
print(type(l)) # 输出: <class 'list'>
5. isinstance(obj, classinfo):判断对象是否是某种类型或其子类的实例。
- obj:是要检查的对象。
classinfo
:可以是一个具体的类型(如 int、str、list 等),也可以是一个类型元组,用于判断 obj是否属于这些类型中的任意一个。
# 判断一个变量是否为整数类型
x = 123
print(isinstance(x, int)) # 输出: True
# 判断一个变量是否为字符串类型
y = "Hello"
print(isinstance(y, str)) # 输出: True
# 判断一个变量是否为整数或字符串类型
print(isinstance(x, (int, str))) # 输出: True
# 对于自定义类也适用
class MyClass:
pass
instance = MyClass()
print(isinstance(instance, MyClass)) # 输出: True
6. issubclass(class1, class2):判断一个类是否是另一个类的子类。
class
:这是要检查的类。classinfo
:可以是一个单独的类(用于判断class
是否为其子类),也可以是一个包含多个类或元组,用于判断class
是否为这些类中的任意一个的子类。
# Python 自带的类示例
class A:
pass
class B(A):
pass
class C:
pass
# 判断 B 类是否是 A 类的子类
print(issubclass(B, A)) # 输出: True
# 判断 C 类是否是 A 类的子类
print(issubclass(C, A)) # 输出: False
# 判断 B 类是否是 (A, object) 中任意一个的子类,因为所有类都继承自 object
print(issubclass(B, (A, object))) # 输出: True
7. getattr(obj, name[, default]):获取对象的属性值。如果属性不存在,可以通过提供可选的第三个参数设置默认返回值。
obj
:是要从中获取属性的对象。name
:是要获取的属性名称。default
(可选):如果没有指定或者提供的属性不存在于对象上,则返回此默认值。
class MyClass:
def __init__(self):
self.my_attribute = "Hello"
my_instance = MyClass()
# 获取已存在的属性
print(getattr(my_instance, 'my_attribute')) # 输出: "Hello"
# 获取不存在的属性,不提供默认值将会抛出 AttributeError 异常
# print(getattr(my_instance, 'nonexistent_attribute'))
# 获取不存在的属性,并提供一个默认值
print(getattr(my_instance, 'nonexistent_attribute', 'Default Value')) # 输出: "Default Value"
8. setattr(obj, name, value):设置对象的属性值。
- obj:是要设置属性的对象。
name
:是要设置或修改的属性名称。value
:是要赋予该属性的新值。
class MyClass:
pass
my_instance = MyClass()
# 设置新的属性
setattr(my_instance, 'my_attribute', "Hello")
# 验证属性是否已成功设置
print(getattr(my_instance, 'my_attribute')) # 输出: "Hello"
# 修改已存在的属性
setattr(my_instance, 'my_attribute', "World")
# 验证属性是否已成功修改
print(getattr(my_instance, 'my_attribute')) # 输出: "World"
9. delattr(obj, name):删除对象的属性。
- obj:是要删除属性的对象。
name
:是要删除的属性名称。
class MyClass:
def __init__(self):
self.my_attribute = "Hello"
my_instance = MyClass()
# 查看当前对象属性
print(getattr(my_instance, 'my_attribute')) # 输出: "Hello"
# 删除对象的属性
delattr(my_instance, 'my_attribute')
# 尝试再次获取已被删除的属性,将会抛出 AttributeError 异常
# print(getattr(my_instance, 'my_attribute'))
10. hasattr(obj, name):检查对象是否有指定名称的属性。该函数返回布尔值,如果对象拥有指定名称的属性,则返回 True
,否则返回 False
。
- obj:是要检查的对象。
name
:是要查找的属性名称。
class MyClass:
def __init__(self):
self.my_attribute = "Hello"
my_instance = MyClass()
# 检查对象是否有 my_attribute 属性
print(hasattr(my_instance, 'my_attribute')) # 输出: True
# 检查对象是否有不存在的属性
print(hasattr(my_instance, 'nonexistent_attribute')) # 输出: False
11. dir(obj):列出对象的所有属性和方法名。
dir()
返回的结果不仅包括对象自身的属性和方法,还包括从基类继承来的属性和方法以及 Python 对象通用的一些特殊方法(如 __init__
、__str__
等)
- obj:是要查询的对象。
class MyClass:
def __init__(self):
self.my_attribute = "Hello"
self.my_method = lambda: "World"
my_instance = MyClass()
# 显示 MyClass 类及其实例的所有属性和方法
print(dir(MyClass))
# 显示 my_instance 实例的所有属性和方法
print(dir(my_instance))
12. len(obj):返回对象的长度,适用于列表、元组、字符串、字典等可迭代对象。
- obj:是要计算长度的序列类型对象或其他可迭代对象。
# 计算列表的长度:
my_list = [1, 2, 3, 4, 5]
length_of_list = len(my_list)
print(length_of_list) # 输出:5
# 计算字符串的长度(包括空格和字符):
my_string = "Hello, World!"
length_of_string = len(my_string)
print(length_of_string) # 输出:13
# 计算字典的项数(键值对的数量):
my_dict = {'appl