目录
Python 解释器内置了很多函数和类型(一共73个内置函数),任何时候都能使用。本篇将介绍第31到第40个内置函数的作用、特性以及详细的使用方法,并给出对应的代码示例。
前面的文章已经介绍了前30个内置函数,以及介绍了一些基本概念的说明,详细的请参考前面几篇文章
注意:本代码示例均在当前最新版本Python3.11上运行的结果。
Python专栏:https://blog.csdn.net/zhouruifu2015/category_5742543.html
hash()
1. 作用
hash()函数用于返回对象的哈希值,哈希值是一个整数,用于在字典、集合等数据结构中快速查找和比较对象。它可以帮助我们在编写代码时高效地处理大量数据。
2. 特性
- hash()函数的参数可以是数字、字符串、元组等不可变类型的对象。
- 对于相同的对象,hash()函数返回的哈希值应该相同;对于不同的对象,哈希值应该尽可能地不同。
- 对于不可哈希的对象,如列表、字典等可变类型的对象,hash()函数会抛出TypeError异常。
- hash()函数返回的哈希值是一个整数,可以用于字典、集合等数据结构中的键值比较。
3. 详细用法
示例代码:
from inner_module_def_datastruct import WEIXIN_URL
# hash()函数的使用示例
print(hash("hello")) # 8717829118467943447
print(hash((1, 2, 3))) # 529344067295497451
print(hash(123)) # 123
print(hash(3.14)) # 476876632144354977
print(hash(True)) # 1
print(hash(False)) # 0
# 不可哈希的对象示例
# print(hash([1, 2, 3])) # TypeError: unhashable type: 'list'
# print(hash({"name": "SteveRocket", "age": 18})) # TypeError: unhashable type: 'dict'
# 哈希值相同的对象示例
print(hash("hello")) # 8717829118467943447
print(hash("Hello")) # 3152661429459725354
# 哈希值不同的对象示例
print(hash("hello")) # 8717829118467943447
print(hash("world")) # -7160543189288757831
# 对URL进行hash
print('URL', hash(WEIXIN_URL)) # URL 7620566311523340584
print('空字符串:', hash('')) # 空字符串: 0
print('None', hash(None)) # None 8795438377352
在上面的示例代码中,我们使用hash()函数计算了不同类型的对象的哈希值,并演示了哈希值相同和不同的对象。同时,我们还演示了不可哈希的对象会导致TypeError异常。
help()
1. 作用
help()函数用于获取Python对象的帮助文档,帮助我们了解对象的属性、方法、使用方法等信息,进一步学习和使用Python语言。
2. 特性
- help()函数的参数可以是模块、函数、类、方法、对象等Python对象。
- help()函数会打印出对象的帮助文档,包括对象的说明、属性、方法等信息。
- 如果没有提供参数,则会进入交互式帮助模式,可以通过输入对象名称来获取帮助信息。
- help()函数可以帮助我们快速了解Python对象的使用方法和属性,提高编程效率。
3. 详细用法
示例代码:
# help()函数的使用示例
# 获取模块帮助信息
import math
help(math)
# 获取函数帮助信息
def add(a, b):
"""
This function adds two numbers.
"""
return a + b
help(add)
# 获取类帮助信息
class Person:
"""
This is a Person class.
"""
def __init__(self, name, age):
self.name = name
self.age = age
def say_hello(self):
"""
This method prints a greeting message.
"""
print("Hello, my name is", self.name)
help(Person)
# 获取对象帮助信息
person = Person("Alice", 18)
help(person)
# 进入交互式帮助模式
# help()
# 输入对象名称,如math、add、Person、person等,即可获取帮助信息
在上面的示例代码中,我们使用help()函数获取了模块、函数、类、对象的帮助信息,并演示了进入交互式帮助模式的方法。
hex()
1. 作用
hex()函数用于将整数转换为十六进制字符串,返回一个以"0x"开头的字符串。它可以帮助我们在编写代码时处理十六进制数据。
2. 特性
- hex()函数的参数必须是整数类型,可以是正整数、负整数、0等。
- hex()函数返回一个以"0x"开头的字符串,表示参数的十六进制表示。
- 如果参数不是整数类型,则会抛出TypeError异常。
3. 详细用法
示例代码:
# hex()函数的使用示例
print(hex(10)) # 0xa
print(hex(-10)) # -0xa
print(hex(0)) # 0x0
# 参数错误示例
# print(hex(3.14)) # TypeError: 'float' object cannot be interpreted as an integer
# print(hex("hello")) # TypeError: 'str' object cannot be interpreted as an integer
在上面的示例代码中,我们使用hex()函数将整数转换为十六进制字符串,并演示了正整数、负整数、0的转换结果。同时,我们还演示了参数错误时会抛出TypeError异常。
id()
1. 作用
id()函数用于获取对象的唯一标识符,即对象在内存中的地址。它可以帮助我们判断两个变量是否指向同一个对象。
2. 特性
- id()函数的参数可以是任意类型的Python对象。
- id()函数返回一个整数,表示对象在内存中的地址。
- 不同的对象具有不同的地址,相同的对象具有相同的地址。
3. 详细用法
示例代码:
# id()函数的使用示例
# 获取整数、字符串、列表、字典的地址
a = 10
print(id(a)) # 140727023900624
b = "hello"
print(id(b)) # 140727023997936
c = [1, 2, 3]
print(id(c)) # 140727023999872
d = {"name": "Alice", "age": 18}
print(id(d)) # 140727024000000
# 不可变类型示例
e = "world"
f = "world"
print(id(e)) # 140727023999856
print(id(f)) # 140727023999856
print(id(e) == id(f)) # True
# 可变类型示例
g = [1, 2, 3]
h = [1, 2, 3]
print(id(g)) # 140727023998080
print(id(h)) # 140727023998208
在上面的示例代码中,我们使用id()函数获取了整数、字符串、列表、字典的地址,并演示了不可变类型和可变类型的地址不同情况。
input()
1. 作用
input()函数用于从标准输入(通常是键盘)获取用户输入的数据,并返回一个字符串。它可以帮助我们与用户进行交互,获取用户输入的数据。
2. 特性
- input()函数会等待用户输入数据,并将其作为字符串返回。
- 用户输入的数据可以包含任意字符,包括空格、制表符等。
- 如果需要获取其他类型的数据,需要使用类型转换函数进行转换。
3. 详细用法
示例代码:
# input()函数的使用示例
# 获取用户输入的字符串
name = input("Please enter your name: ")
print("Hello,", name)
# 获取用户输入的数字
age = int(input("Please enter your age: "))
print("Your age is", age)
# 获取用户输入的多个数据
a, b, c = input("Please enter three numbers: ").split()
print("The sum of the three numbers is", int(a) + int(b) + int(c))
在上面的示例代码中,我们使用input()函数获取了用户输入的字符串、数字、多个数据,并演示了如何使用类型转换函数进行转换。需要注意的是,如果用户输入的数据与期望的类型不匹配,会抛出ValueError异常。
int()
1. 作用
int()函数用于将一个字符串或数字转换为整数类型。它可以将一个字符串转换为整数,也可以将一个浮点数或布尔值转换为整数。
2. 特性
- int()函数可以接受一个字符串或数字作为参数,返回一个整数。
- 如果参数是一个字符串,它必须是表示整数的字符串,否则会抛出ValueError异常。
- 如果参数是一个浮点数,它会将浮点数的小数部分截断,只保留整数部分。
- 如果参数是一个布尔值,True会被转换为1,False会被转换为0。
- int()函数还可以接受一个进制参数,用于将一个指定进制的字符串转换为整数。
3. 详细用法
示例代码:
# int(x) 将x转换为一个整数。
# int()函数的使用示例
a = '123'
b = 3.14
c = True
d = '0x1F' # 十六进制字符串
print(int(a)) # 输出:123
print(int(b)) # 输出:3
print(int(c)) # 输出:1
print(int(d, 16)) # 输出:31
# 不可以对None和空字符串使用int转换
# print(int(None)) # TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
print(int('')) # ValueError: invalid literal for int() with base 10: ''
在上面的示例代码中,我们分别使用int()函数将一个字符串、浮点数、布尔值和十六进制字符串转换为整数。需要注意的是,如果参数无法转换为整数,int()函数会抛出ValueError异常。
isinstance()
1. 作用
isinstance()函数用于判断一个对象是否属于某个指定的类型。它可以用于判断一个对象是否属于内置类型、自定义类型、抽象基类等。
2. 特性
- isinstance()函数接受两个参数,第一个参数是要判断的对象,第二个参数是要判断的类型。
- 如果第一个参数是第二个参数的实例,isinstance()函数返回True,否则返回False。
- isinstance()函数还可以接受一个元组作为第二个参数,用于判断对象是否属于元组中的任意一个类型。
- isinstance()函数可以用于判断一个对象是否属于内置类型、自定义类型、抽象基类等。
3. 详细用法
示例代码:
# isinstance()函数的使用示例
class MyClass:
pass
a = 123
b = 'hello'
c = [1, 2, 3]
d = {'name': 'Tom', 'age': 18}
e = MyClass()
print(isinstance(a, int)) # 输出:True
print(isinstance(b, str)) # 输出:True
print(isinstance(c, (list, tuple))) # 输出:True
print(isinstance(d, dict)) # 输出:True
print(isinstance(e, MyClass)) # 输出:True
print(isinstance(e, object)) # 输出:True
在上面的示例代码中,我们分别使用isinstance()函数判断一个整数、字符串、列表、字典和自定义类的对象是否属于指定的类型。需要注意的是,如果第二个参数是一个元组,isinstance()函数会判断对象是否属于元组中的任意一个类型。
issubclass()
1. 作用
issubclass()函数用于判断一个类是否是另一个类的子类。它可以用于判断一个类是否继承自另一个类、抽象基类等。
2. 特性
- issubclass()函数接受两个参数,第一个参数是要判断的类,第二个参数是要判断的父类或元组。
- 如果第一个参数是第二个参数的子类,issubclass()函数返回True,否则返回False。
- issubclass()函数还可以接受一个元组作为第二个参数,用于判断类是否继承自元组中的任意一个父类。
3. 详细用法
示例代码:
# issubclass()函数的使用示例
class MyBaseClass:
pass
class MySubClass(MyBaseClass):
pass
class MyOtherClass:
pass
print(issubclass(MySubClass, MyBaseClass)) # 输出:True
print(issubclass(MyOtherClass, MyBaseClass)) # 输出:False
print(issubclass(MySubClass, (MyBaseClass, MyOtherClass))) # 输出:True
在上面的示例代码中,我们分别使用issubclass()函数判断一个类是否继承自另一个类或元组中的任意一个父类。需要注意的是,如果第二个参数是一个元组,issubclass()函数会判断类是否继承自元组中的任意一个父类。
iter()
1. 作用
iter()函数用于返回一个可迭代对象的迭代器。它可以用于遍历列表、元组、字典、集合等可迭代对象。
2. 特性
- iter()函数接受一个可迭代对象作为参数,返回一个迭代器。
- 迭代器是一个可以遍历可迭代对象的对象,它可以使用next()函数获取下一个元素。
- 如果可迭代对象已经是一个迭代器,iter()函数会直接返回该迭代器。
- iter()函数还可以接受两个参数,分别是可迭代对象和一个用于哨兵值的对象,用于在迭代时判断何时停止迭代。
3. 详细用法
示例代码:
# iter()函数的使用示例
my_list = [1, 2, 3, 4, 5]
my_dict = {'name': 'SteveRocket', 'age': 18}
# 使用iter()函数获取列表的迭代器
my_list_iterator = iter(my_list)
print(type(my_list_iterator)) # <class 'list_iterator'>
# 使用next()函数遍历列表
print(next(my_list_iterator)) # 输出:1
print(next(my_list_iterator)) # 输出:2
# 使用iter()函数获取字典的迭代器
my_dict_iterator = iter(my_dict)
print(type(my_dict_iterator)) # <class 'dict_keyiterator'>
# 使用next()函数遍历字典
print(next(my_dict_iterator)) # 输出:'name'
print(next(my_dict_iterator)) # 输出:'age'
# 如果没有值可以继续next,则抛出 StopIteration 异常
# print(next(my_dict_iterator)) # StopIteration
# 如果没有值可以继续next,通过指定第二个参数来作为指定默认输出,则不会报错
print(next(my_dict_iterator, "Not Exists")) # 输出 Not Exists
在上面的示例代码中,我们分别使用iter()函数获取列表和字典的迭代器,并使用next()函数遍历它们。需要注意的是,如果可迭代对象已经是一个迭代器,iter()函数会直接返回该迭代器。
len()
1. 作用
len()函数用于返回一个对象的长度或元素个数。它可以用于获取字符串、列表、元组、字典、集合等对象的长度或元素个数。
2. 特性
- len()函数接受一个对象作为参数,返回该对象的长度或元素个数。
- 如果对象是一个字符串,len()函数返回字符串的字符个数。
- 如果对象是一个列表、元组、字典或集合,len()函数返回其中元素的个数。
3. 详细用法
示例代码:
from inner_module_def_datastruct import WEIXIN_URL
# len()函数的使用示例
my_str = WEIXIN_URL
my_list = [1, 2, 3, 4, 5]
my_dict = {'name': 'SteveRocket', 'age': 18}
# 使用len()函数获取字符串的字符个数
print(len(my_str)) # 输出:49
# 使用len()函数获取列表的元素个数
print(len(my_list)) # 输出:5
# 使用len()函数获取字典的元素个数
print(len(my_dict)) # 输出:2
在上面的示例代码中,我们分别使用len()函数获取字符串、列表和字典的长度或元素个数。需要注意的是,如果对象是一个字符串,len()函数返回字符串的字符个数;如果对象是一个列表、元组、字典或集合,len()函数返回其中元素的个数。
更多资料 · 微信公众号搜索【CTO Plus】关注后,获取更多,我们一起学习交流。
关于公众号的描述访问如下链接