目录
Python 解释器内置了很多函数和类型(一共73个内置函数),任何时候都能使用。本篇将介绍第41到第50个内置函数的作用、特性以及详细的使用方法,并给出对应的代码示例。
前面的文章已经介绍了前40个内置函数,以及介绍了一些基本概念的说明,详细的请参考前面几篇文章
注意:本代码示例均在当前最新版本Python3.11上运行的结果。
Python专栏:https://blog.csdn.net/zhouruifu2015/category_5742543.html
list()
1. 作用
list()函数用于将一个可迭代对象转换为列表。它可以用于将元组、集合、字典等可迭代对象转换为列表。
2. 特性
- list()函数接受一个可迭代对象作为参数,返回一个列表。
- 如果可迭代对象是一个字符串,list()函数会将字符串中的每个字符作为一个元素添加到列表中。
- 如果可迭代对象是一个字典,list()函数会将字典中的键作为元素添加到列表中。
- 如果可迭代对象已经是一个列表,list()函数会直接返回该列表。
3. 详细用法
示例代码:
from inner_module_def_datastruct import WEIXIN_URL
my_tuple = (1, 2, 3, 4, 5)
my_set = {111, 222, 333, 444, 555}
my_dict = {'name': 'SteveRocket', 'age': 18}
my_list = [11,22,33,44,55]
# 使用list()函数将元组转换为列表
my_list1 = list(my_tuple)
print(my_list1) # 输出:[1, 2, 3, 4, 5]
# 使用list()函数将集合转换为列表
my_list2 = list(my_set)
print(my_list2) # 输出:[555, 333, 111, 444, 222]
# 使用list()函数将字典的键转换为列表
my_list3 = list(my_dict)
print(my_list3) # 输出:['name', 'age']
# 使用list()转换列表,输出还是列表
print(list(my_list)) # [11, 22, 33, 44, 55]
# 使用list()转换字符串
print(list(WEIXIN_URL))
在上面的示例代码中,我们分别使用list()函数将元组、集合和字典的键转换为列表。需要注意的是,如果可迭代对象已经是一个列表,list()函数会直接返回该列表。
locals()
1. 作用
locals()函数用于返回当前作用域中的所有局部变量和它们的值。它可以用于调试代码,查看当前作用域中的变量和值。
2. 特性
- locals()函数返回一个字典,其中包含当前作用域中的所有局部变量和它们的值。
- 如果在函数外部调用locals()函数,它将返回全局作用域中的所有变量和值。
- locals()函数只能在函数内部调用,不能在函数外部调用。
3. 详细用法
示例代码:
from inner_module_def_datastruct import WEIXIN_URL
# locals()函数的使用示例
def my_func():
blog = WEIXIN_URL
name = 'SteveRocket'
age = 18
print(locals())
my_func() # 输出:{'blog': 'https://mp.weixin.qq.com/s/0yqGBPbOI6QxHqK17WxU8Q', 'name': 'SteveRocket', 'age': 18}
# 用在此处locals与globals的输出结果一样
print(locals())
print(globals())
在上面的示例代码中,我们定义了一个函数my_func(),在函数内部定义了两个局部变量name和age,并使用locals()函数打印了当前作用域中的所有局部变量和它们的值。
需要注意的是,locals()函数只能在函数内部调用,不能在函数外部调用。如果在函数外部调用locals()函数,它将返回全局作用域中的所有变量和值。
locals() 和 globals() 的区别
locals() 和 globals() 都是 Python 内置函数,用于获取当前作用域内的变量和函数。它们的区别在于:
- locals() 函数返回一个字典,包含了当前作用域内的所有变量和函数。
- globals() 函数返回一个字典,包含了全局作用域内的所有变量和函数。
例如:
def my_func():
x = 1
print(locals()) # {'x': 1}
print(globals()) # {...} 全局作用域的字典
my_func()
在上面的示例中,我们定义了一个函数 my_func(),该函数包含了一个变量 x。在函数内部,我们分别使用 locals() 和 globals() 函数来获取当前作用域和全局作用域内的变量和函数。
map()
1. 作用
map()函数用于对一个序列中的每个元素进行操作,并返回一个新的序列。它可以用于对列表、元组等序列中的每个元素进行操作。
2. 特性
- map()函数接受一个函数和一个序列作为参数,返回一个新的序列。
- map()函数将函数应用于序列中的每个元素,并将结果作为一个新的序列返回。
- 如果序列中的元素是多个序列,map()函数将对多个序列中的元素进行操作,并返回一个新的序列。
3. 详细用法
示例代码:
# map()函数的使用示例
def square(x):
return x ** 2
my_list = [1, 2, 3, 4, 5]
# 使用map()函数对列表中的每个元素进行平方操作
result = map(square, my_list)
print(list(result)) # 输出:[1, 4, 9, 16, 25]
在上面的示例代码中,我们定义了一个函数square(),用于对一个数进行平方操作。然后,我们定义了一个列表my_list,使用map()函数对列表中的每个元素进行平方操作,并将结果作为一个新的列表返回。
需要注意的是,如果序列中的元素是多个序列,map()函数将对多个序列中的元素进行操作,并返回一个新的序列。
reduce是Python2的内置函数,在Python3中已被遗弃。
max()
1. 作用
max()函数用于返回给定可迭代对象中的最大值。它可以用于对数字、字符串等可比较的对象进行比较。
2. 特性
- max()函数接受一个或多个参数,并返回其中的最大值。
- 如果给定的可迭代对象为空,max()函数将引发ValueError异常。
- max()函数可以接受一个key参数,用于指定比较方式。
3. 详细用法
示例代码:
# max()函数的使用示例
my_list = [1, 3, 5, 7, 9]
# 返回列表中的最大值
print(max(my_list)) # 输出:9
# 返回列表中的最大字符串值
infos = ["https", "zhouruifu2015", "blog.csdn.net"]
print(max(infos)) # zhouruifu2015
my_str = 'SteveRocket Python3.11'
# 返回字符串中的最大字符
print(max(my_str)) # 输出:y
my_dict = {'name': 'Tom', 'age': 18}
my_dict2 = {123: 'steverocket', 456: 'rocket'}
# 返回字典中的最大键
print(max(my_dict)) # 输出:name
print(max(my_dict2)) # 输出:456
在上面的示例代码中,我们分别使用max()函数返回了列表、字符串和字典中的最大值。需要注意的是,如果给定的可迭代对象为空,max()函数将引发ValueError异常。
此外,max()函数可以接受一个key参数,用于指定比较方式。示例代码:
# max()函数的key参数示例
my_list = ['apple', 'banana', 'orange', 'watermelon']
# 返回列表中长度最长的元素
print(max(my_list, key=len)) # 输出:watermelon
# 如果列表里面存在两个相同长度的字符串 则返回列表中第一个出现的元素
print(max(infos, key=len)) # blog.csdn.net
在上面的示例代码中,我们使用key参数指定了比较方式,返回了列表中长度最长的元素。
memoryview()
1. 作用
memoryview()函数用于返回一个内存视图对象,可以用于对可变序列进行操作。
2. 特性
- memoryview()函数接受一个可变序列作为参数,并返回一个内存视图对象。
- 内存视图对象可以用于对可变序列进行操作,如切片、赋值等。
- 内存视图对象可以用于高效地操作大型数据集合,而不需要复制原始数据。
3. 详细用法
示例代码:
# memoryview()函数的使用示例
my_list = [1, 2, 3, 4, 5]
# 创建一个内存视图对象
my_view = memoryview(bytearray(my_list))
# 对内存视图对象进行切片操作
my_slice = my_view[1:3]
print(my_slice, type(my_slice)) #<memory at 0x000002742382F280> <class 'memoryview'>
# 对内存视图对象进行赋值操作
my_view[2] = 10
print(my_list) # 输出:[1, 2, 3, 4, 5]
print(list(my_view), type(my_view)) # [1, 2, 10, 4, 5] <class 'memoryview'>
在上面的示例代码中,我们使用memoryview()函数创建了一个内存视图对象,并对其进行了切片和赋值操作。需要注意的是,内存视图对象可以用于高效地操作大型数据集合,而不需要复制原始数据。
min()
1. 作用
min()函数用于返回给定可迭代对象中的最小值。它可以用于对数字、字符串等可比较的对象进行比较。
2. 特性
- min()函数接受一个或多个参数,并返回其中的最小值。
- 如果给定的可迭代对象为空,min()函数将引发ValueError异常。
- min()函数可以接受一个key参数,用于指定比较方式。
3. 详细用法
示例代码:
from inner_module_def_datastruct import WEIXIN_URL
# min()函数的使用示例
my_list = [1, 3, 5, 7, 9]
# 返回列表中的最小值
print(min(my_list)) # 输出:1
my_str = 'python'
# 返回字符串中的最小字符
print(min(my_str)) # 输出:h
print(min(WEIXIN_URL)) # 输出:.
my_dict = {'name': 'steverocket', 'age': 18}
# 返回字典中的最小键
print(min(my_dict)) # 输出:age
t1 = (WEIXIN_URL)
print(min(t1)) # 输出:.
# s1 = {1, 6, 3, 9, 3, 7, ""} # TypeError: '<' not supported between instances of 'str' and 'int'
# s1 = {1, 6, 3, 9, 3, 7, 'a'} # TypeError: '<' not supported between instances of 'str' and 'int'
s1 = {1, 6, 3, 9, 3, 7}
print(min(s1)) # 1
在上面的示例代码中,我们分别使用min()函数返回了列表、字符串和字典中的最小值。需要注意的是,如果给定的可迭代对象为空,min()函数将引发ValueError异常。
此外,min()函数可以接受一个key参数,用于指定比较方式。示例代码:
# min()函数的key参数示例
my_list = ['apple', 'banana', 'orange', 'watermelon']
# 返回列表中长度最短的元素
print(min(my_list, key=len)) # 输出:apple
在上面的示例代码中,我们使用key参数指定了比较方式,返回了列表中长度最短的元素。
next()
1. 作用
next()函数用于返回可迭代对象中的下一个元素。它可以用于对列表、字符串等可迭代对象进行迭代操作。
2. 特性
- next()函数接受一个可迭代对象作为参数,并返回其中的下一个元素。
- 如果可迭代对象已经迭代完毕,next()函数将引发StopIteration异常。
- next()函数可以接受一个默认值参数,用于在可迭代对象已经迭代完毕时返回一个默认值。
3. 详细用法
示例代码:
# next()函数的使用示例
my_list = [1, 2, 3, 4, 5]
# 创建一个迭代器对象
my_iter = iter(my_list)
print(type(my_iter))
# print(len(my_iter)) #TypeError: object of type 'list_iterator' has no len()
# list(my_iter) # 使用next前不能使用list进行操作
# 返回迭代器中的下一个元素
print(next(my_iter)) # 输出:1
# 返回迭代器中的下一个元素
print(next(my_iter)) # 输出:2
# 返回迭代器中的下一个元素,并指定默认值
print(next(my_iter, 'end')) # 输出:3
# 返回迭代器中的下一个元素
print(next(my_iter)) # 输出:4
# 返回迭代器中的下一个元素
print(next(my_iter)) # 输出:5
# 返回迭代器中的下一个元素,并引发StopIteration异常
print(next(my_iter)) # 引发StopIteration异常
在上面的示例代码中,我们使用next()函数对列表进行迭代操作。需要注意的是,如果可迭代对象已经迭代完毕,next()函数将引发StopIteration异常。此外,next()函数可以接受一个默认值参数,用于在可迭代对象已经迭代完毕时返回一个默认值。
object()
1. 作用
object()函数用于创建一个空的对象。它是所有类的基类,也可以用于检查对象是否为Python内置类型。object() 是 Python 内置函数,用于创建一个空对象。它没有任何属性和方法,只是一个空的对象。
2. 特性
- object()函数不接受任何参数,它返回一个空的对象。
- object()函数是所有类的基类,因此所有的Python内置类型都是object的子类。
- object()函数可以用于检查对象是否为Python内置类型。
3. 详细用法
示例代码:
# object()函数的使用示例
my_object = object()
obj = object()
print(obj) # <object object at 0x7f2c5d6b0f10>
# 输出对象的类型
print(type(my_object)) # 输出:<class 'object'>
# 检查对象是否为Python内置类型
print(isinstance(my_object, int)) # 输出:False
print(isinstance(my_object, str)) # 输出:False
print(isinstance(my_object, object)) # 输出:True
object() 函数的使用场景比较少,一般用于作为基类来创建新的类。例如:
class MyObject(object):
pass
obj = MyObject()
print(obj) # <__main__.MyObject object at 0x7f2c5d6b0f10>
此处使用 object() 函数作为基类来创建了一个新的类 MyObject,并创建了一个 MyObject 类的实例 obj。
在上面的示例代码中,我们使用object()函数创建了一个空的对象,并使用type()函数输出了该对象的类型。需要注意的是,object()函数是所有类的基类,因此所有的Python内置类型都是object的子类。此外,我们还使用isinstance()函数检查了该对象是否为Python内置类型。
oct()
1. 作用
oct()函数用于将整数转换为八进制字符串。
2. 特性
- oct()函数接受一个整数作为参数,并返回该整数的八进制字符串表示。
- 八进制字符串以前缀"0o"开头,例如"0o12"表示十进制数10。
3. 详细用法
示例代码:
# oct()函数的使用示例
my_int = 10
# 将整数转换为八进制字符串
my_oct = oct(my_int)
# 输出八进制字符串
print(my_oct) # 输出:0o12
# 将八进制字符串转换为整数
my_int2 = int(my_oct, 8)
# 输出转换后的整数
print(my_int2) # 输出:10
在上面的示例代码中,我们使用oct()函数将整数10转换为八进制字符串"0o12",并使用int()函数将八进制字符串转换为整数。需要注意的是,八进制字符串以前缀"0o"开头。
open()
1. 作用
open()函数用于打开一个文件,并返回一个文件对象。可以使用文件对象进行读写操作。
2. 特性
- open()函数接受两个参数:文件名和打开模式。
- 打开模式包括:读取模式('r')、写入模式('w')、追加模式('a')、二进制模式('b')和文本模式('t')。
- 默认情况下,open()函数使用文本模式和读取模式打开文件。
- open()函数返回一个文件对象,可以使用该对象进行读写操作。
- 使用完文件对象后,应该调用close()方法关闭文件。
3. 详细用法
示例代码:
from inner_module_def_datastruct import WEIXIN_URL,CSDN_URL
# open()函数的使用示例
# 打开文件并写入内容
with open('test.txt', 'w') as f:
f.write(WEIXIN_URL)
# 打开文件并读取内容
with open('test.txt', 'r') as f:
content = f.read()
print(content)
# 打开文件并追加内容
with open('test.txt', 'a') as f:
f.write(CSDN_URL)
# 打开二进制文件并读取内容
with open('test.bin', 'rb') as f:
content = f.read()
print(content)
在上面的示例代码中,我们使用open()函数打开了一个文本文件和一个二进制文件,并使用不同的打开模式进行读写操作。需要注意的是,使用完文件对象后,应该调用close()方法关闭文件。
open和file的区别
在 Python 中,open() 和 file() 都可以用来打开文件,但是它们之间有一些区别。open在py2py3中都是内置函数,file在py3中不是内置函数,如下验证情况
- open() 是 Python 2.6 版本之后引入的新函数,用于打开文件并返回文件对象。
- file() 是 Python 2.x 版本中的旧函数,用于打开文件并返回文件对象。
在 Python 3.x 版本中,file() 函数已经被移除,只能使用 open() 函数来打开文件。
另外,open() 函数有一个 mode 参数,用于指定文件的打开模式,可以是读模式('r')、写模式('w')、追加模式('a')等。而 file() 函数没有 mode 参数,只能使用默认的读模式。
例如:
# 使用 open() 函数打开文件
with open('file.txt', 'w') as f:
f.write('Hello, world!')
# 使用 file() 函数打开文件
f = file('file.txt')
print(f.read()) # Hello, world!
f.close()
在上面的示例中,我们使用 open() 函数和 file() 函数分别打开了一个名为 file.txt 的文件,并写入了一些内容。
更多资料 · 微信公众号搜索【CTO Plus】关注后,获取更多,我们一起学习交流。
关于公众号的描述访问如下链接