python内置函数 T
Python 解释器内置了很多函数和类型,任何时候都能使用。
T
名称 | 描述 |
---|---|
tuple | 创建一个元组。 |
type | 返回对象的类型。 |
tuple
class tuple
class tuple(iterable)
虽然被称为函数,但 tuple
实际上是一个不可变的序列类型,参见在 元组 与 序列类型 — list, tuple, range 中的文档说明。
# 创建一个空的元组
empty_tuple = tuple()
print(empty_tuple) # 输出: ()
# 创建一个包含一个元素的元组(注意,单个元素后面必须有一个逗号)
singleton_tuple = (42,)
print(singleton_tuple) # 输出: (42,)
# 创建一个包含多个元素的元组
multi_element_tuple = tuple([1, 2, 3, 4, 5])
print(multi_element_tuple) # 输出: (1, 2, 3, 4, 5)
# 从其他可迭代对象创建元组
iterable = [6, 7, 8]
tuple_from_iterable = tuple(iterable)
print(tuple_from_iterable) # 输出: (6, 7, 8)
# 从字符串创建元组(字符串将被拆分为单个字符)
str_tuple = tuple("hello")
print(str_tuple) # 输出: ('h', 'e', 'l', 'l', 'o')
当你尝试将一个单独的元素转换为元组时,你必须在该元素后面加上一个逗号,否则Python会将其视为该元素的普通表示,而不是一个元组。
元组常用于存储一系列不需要更改的值,例如函数的返回值、数据库查询的结果或用作字典的键(因为字典的键必须是不可变的)。由于元组是不可变的,它们在某些情况下比列表更安全、更高效。
type(object)
class type(object)
class type(name, bases, dict, **kwds)
type()
是一个内置函数,用于返回对象的类型。当你对一个对象使用 type()
函数时,它会返回一个表示该对象类型的类型对象。
传入一个参数时,返回 object 的类型。 返回值是一个 type 对象,通常与 object.__class__
所返回的对象相同。
推荐使用 isinstance()
内置函数来检测对象的类型,因为它会考虑子类的情况。
传入三个参数时,返回一个新的 type 对象。 这在本质上是 class
语句的一种动态形式,name 字符串即类名并会成为 __name__
属性;bases 元组包含基类并会成为 __bases__
属性;如果为空则会添加所有类的终极基类 object
。 dict 字典包含类主体的属性和方法定义;它在成为 __dict__
属性之前可能会被拷贝或包装。 下面两条语句会创建相同的 type
对象:
>>> class X:
... a = 1
...
>>> X = type('X', (), dict(a=1))
另请参阅 类型对象。
提供给三参数形式的关键字参数会被传递给适当的元类机制 (通常为 __init_subclass__()
),相当于类定义中关键字 (除了 metaclass) 的行为方式。
另请参阅 自定义类创建。
在 3.6 版本发生变更: type
的子类如果未重写 type.__new__
,将不再能使用一个参数的形式来获取对象的类型。
# 获取整数类型的类型对象
int_type = type(123)
print(int_type) # 输出: <class 'int'>
# 获取字符串类型的类型对象
str_type = type("hello")
print(str_type) # 输出: <class 'str'>
# 获取列表类型的类型对象
list_type = type([])
print(list_type) # 输出: <class 'list'>
# 获取元组类型的类型对象
tuple_type = type(())
print(tuple_type) # 输出: <class 'tuple'>
# 获取自定义类的类型对象
class MyClass:
pass
my_class_type = type(MyClass())
print(my_class_type) # 输出: <class '__main__.MyClass'>
print(type(MyClass)) # 输出: <class 'type'>
除了直接对对象使用 type()
函数外,还可以在定义类时使用 type()
动态地创建类。这在元编程和高级Python编程中很有用。
# 使用type()动态创建一个类
DynamicClass = type('DynamicClass', (object,), {'attribute': 'value'})
instance = DynamicClass()
print(instance.attribute) # 输出: value
在这个例子中,type()
函数接收三个参数来创建类:类名(一个字符串)、基类元组(一个包含所有父类的元组)和一个包含属性和方法定义的字典。
type()
函数也常用于检查对象的类型,经常与 isinstance()
函数一起使用。虽然它们都可以用来检查类型,但 isinstance()
更常用于检查对象是否是一个类的实例或者是否继承自某个类,因为它会考虑继承关系。而 type()
只会检查对象是否严格等于给定的类型。