目录
Python 解释器内置了很多函数和类型(一共73个内置函数),任何时候都能使用。本篇将介绍第11到第20个内置函数的作用、特性以及详细的使用方法,并给出对应的代码示例。
前面的文章已经介绍了前10个Python内置函数,以及介绍了一些基本概念的说明,详细的请参考第一篇文章
注意:本代码示例均在当前最新版本Python3.11上运行的结果。
Python专栏:https://blog.csdn.net/zhouruifu2015/category_5742543.html
bytes()
函数bytes()是Python内置函数之一,用于创建一个不可修改的字节序列对象。其基本语法如下:
bytes([source[, encoding[, errors]]])
其中,source是可选参数,可以是一个字符串、一个字节序列、一个可迭代对象或一个整数,用于初始化字节序列的值;encoding是可选参数,用于指定字符串的编码方式;errors是可选参数,用于指定编码时的错误处理方式。
如果没有提供source参数,则返回一个空的字节序列对象。
下面是bytes()函数的一些常见用法:
from inner_module_def_datastruct import WEIXIN_URL
# 1. 创建一个空的字节序列对象
b = bytes()
print(b, type(b), len(b)) # b'' <class 'bytes'> 0
# 2. 通过一个字符串初始化字节序列
b = bytes(WEIXIN_URL, 'utf-8')
print(b, type(b), len(b)) # b'https://mp.weixin.qq.com/s/0yqGBPbOI6QxHqK17WxU8Q' <class 'bytes'> 49
for i in b:
print(i, end=' ')
# 3. 通过一个字节序列初始化字节序列
b = bytes(b'\x01\x02\x03')
print(b, type(b), len(b)) # b'\x01\x02\x03' <class 'bytes'> 3
# 4. 通过一个可迭代对象初始化字节序列
b = bytes([1, 2, 3])
print(b, type(b), len(b)) # b'\x01\x02\x03' <class 'bytes'> 3
# 5. 通过一个整数指定字节序列的长度
b = bytes(5)
print(b, type(b), len(b)) # b'\x00\x00\x00\x00\x00' <class 'bytes'> 5
# 6. 访问字节序列中的值
print(b[0]) # 返回值是0
# 遍历字节序列
for i in b:
print(i, end=' ') # 0 0 0 0 0
总之,函数bytearray()用于创建一个可修改的字节数组对象,函数bytes()用于创建一个不可修改的字节序列对象。这两个函数在Python编程中非常常用,掌握它们的使用方法可以帮助我们更好地处理二进制数据。
callable()
函数callable()是Python内置函数之一,用于判断一个对象是否可调用。其基本语法如下:
callable(obj)
其中,obj是要判断的对象。
如果obj是可调用的,则返回True;否则返回False。
下面是callable()函数的一些常见用法:
from inner_module_def_datastruct import WEIXIN_URL
# 1. 判断函数是否可调用
def func():
pass
if callable(func):
print('函数是可调用的')
else:
print('函数不可调用')
# 2. 判断类是否可调用
class MyClass:
pass
if callable(MyClass):
print('类是可调用的')
else:
print('类不可调用')
# 3. 判断实例对象是否可调用
class MyClass:
def __call__(self):
pass
obj = MyClass()
if callable(obj):
print('实例对象是可调用的')
else:
print('实例对象不可调用')
# 4. 整个字符串 判断是否可调用
print(callable(WEIXIN_URL))
输出结果:
函数是可调用的
类是可调用的
实例对象是可调用的
False
chr()
函数chr()是Python内置函数之一,用于返回指定整数对应的Unicode字符。其基本语法如下:
chr(i)
其中,i是要转换为Unicode字符的整数。
下面是chr()函数的一些常见用法:
# 1. 将整数转换为Unicode字符
print(chr(65)) # 返回值是'A'
# 2. 将十六进制数转换为Unicode字符
print(chr(0x4e2d)) # 返回值是'中'
# 3. 将Unicode编码转换为Unicode字符
print(chr(0x4e2d)) # 返回值是'中'
print(chr(0)) # 输出空格
print(chr(1000)) # 输出 Ϩ
print(chr(False)) # 输出空格
# 一些错误的用法
# print(chr(None)) # TypeError: an integer is required (got type NoneType)
# print(chr('')) # TypeError: an integer is required (got type str)
# print(chr('中文')) # TypeError: an integer is required (got type str)
总之,函数callable()用于判断一个对象是否可调用,函数chr()用于将一个整数转换为Unicode字符。这两个函数在Python编程中非常常用,掌握它们的使用方法可以帮助我们更好地处理函数和字符编码。
classmethod()
函数classmethod()是Python内置函数之一,用于将一个方法转换为类方法。类方法是指在类级别上调用的方法,而不是在实例级别上调用的方法。其基本语法如下:
classmethod(func)
其中,func是要转换为类方法的方法。
classmethod()函数通常与装饰器@classmethod一起使用。被@classmethod装饰的方法将会被自动转换为类方法。
下面是classmethod()函数的一些常见用法:
# 1. 将方法转换为类方法
class MyClass:
@classmethod
def my_classmethod(cls):
print('这是一个类方法')
MyClass.my_classmethod() # 调用类方法
# 2. 在类方法中访问类变量
class MyClass:
x = 0
@classmethod
def my_classmethod(cls):
cls.x += 1
print('类变量x的值为:', cls.x)
MyClass.my_classmethod() # 调用类方法
# 类变量被修改后,直接生效
print(MyClass.x) # 输出 1
参考:https://blog.csdn.net/zhouruifu2015/article/details/51348260
compile()
函数compile()是Python内置函数之一,用于将字符串形式的Python代码编译为可执行的代码对象。其基本语法如下:
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
其中,source是要编译的Python代码字符串;filename是文件名,可以是任意字符串;mode是编译模式,可以是exec、eval或single;flags是标志位,用于指定编译器的特定行为;dont_inherit和optimize是可选参数,分别用于控制继承和优化的行为。
compile()函数返回一个代码对象,可以通过exec()、eval()或者单独调用其代码对象的方式来执行编译后的代码。
下面是compile()函数的一些常见用法:
from inner_module_def_datastruct import WEIXIN_URL
# 1. 编译Python代码字符串为可执行代码对象
code_obj = compile('print(f"Hello, this is my blog {WEIXIN_URL}")', '<string>', 'exec')
# 执行代码对象
exec(code_obj) # Hello, this is my blog https://mp.weixin.qq.com/s/0yqGBPbOI6QxHqK17WxU8Q
# 2. 编译Python文件为可执行代码对象
with open('compile_test.py', 'r') as f:
code_str = f.read()
code_obj = compile(code_str, 'compile_test.py', 'exec')
# 执行代码对象
exec(code_obj) # this is my blog https://mp.weixin.qq.com/s/0yqGBPbOI6QxHqK17WxU8Q
# 3. 编译Python表达式为可执行代码对象
code_obj = compile('1 + 2', '<string>', 'eval')
result = eval(code_obj) # 执行代码对象
print(result) # 输出结果是3
总之,函数classmethod()用于将一个方法转换为类方法,函数compile()用于将一个Python代码字符串编译为可执行的代码对象。这两个函数在Python编程中非常常用,掌握它们的使用方法可以帮助我们更好地处理类和代码执行。
complex()
函数complex()是Python内置函数之一,用于创建一个复数对象。其基本语法如下:
complex(real, imag=0)
其中,real是复数的实部,imag是复数的虚部,默认值为0。
complex()函数返回一个复数对象,可以进行复数运算。
下面是complex()函数的一些常见用法:
1. 创建一个复数对象
z = complex(3, 4)
print(z) # 输出结果是(3+4j)
2. 进行复数运算
z1 = complex(1, 2)
z2 = complex(3, 4)
z3 = z1 + z2
print(z3) # 输出结果是(4+6j)
delattr()
函数delattr()是Python内置函数之一,用于删除对象的属性。其基本语法如下:
delattr(obj, name)
其中,obj是要删除属性的对象,name是要删除的属性名。
delattr()函数会删除对象的指定属性,如果属性不存在,则会抛出AttributeError异常。
下面是delattr()函数的一些常见用法:
1. 删除对象的属性
class MyClass:
x = 1
y = 2
obj = MyClass()
print(obj.x, obj.y) # 输出结果是1, 2
delattr(obj, 'x') # 删除属性x
print(obj.y) # 输出结果是2
2. 删除对象的不存在的属性
class MyClass:
x = 1
y = 2
obj = MyClass()
delattr(obj, 'z') # 删除不存在的属性z,会抛出AttributeError异常
总之,函数complex()用于创建一个复数对象,函数delattr()用于删除对象的属性。这两个函数在Python编程中非常常用,掌握它们的使用方法可以帮助我们更好地处理复数和对象属性。
dict()
dict(**kwarg)
dict(mapping, **kwarg)
dict(iterable, **kwarg)
其中,kwarg是一组关键字参数,用于指定字典的键值对;mapping是一个字典或者其他映射类型的对象;iterable是一个可迭代对象,其中每个元素都是一个包含两个元素的元组,第一个元素是键,第二个元素是值。
dict()函数返回一个字典对象,可以进行字典操作,例如添加、删除、修改和查找等。
下面是dict()函数的一些常见用法:
# dict() 函数用于创建一个字典。
# 用法
# class dict(**kwarg)
# class dict(mapping, **kwarg)
# class dict(iterable, **kwarg)
# 参数说明:
# **kwargs -- 关键字。
# mapping -- 元素的容器,映射类型(Mapping Types)是一种关联式的容器类型,它存储了对象与对象之间的映射关系。
# iterable -- 可迭代对象。
print({})
print(dict())
print(dict({'name': 'rocket', 'email': 'rocket_2014@126.com', 'year': 2023}))
# 输出:{'name': 'rocket', 'email': 'rocket_2014@126.com', 'year': 2023}
# 1. 创建一个字典对象
print(dict(name="rocket", email="rocket_2014@126.com", year=2023))
# 输出:{'name': 'rocket', 'email': 'rocket_2014@126.com', 'year': 2023}
# 2. 映射函数方式来构造字典 zip() 创建可迭代对象
# 映射类型(Mapping Types)是一种关联式的容器类型,它存储了对象与对象之间的映射关系。
print(dict(zip(["name", "email", "year"], ("rocket", "rocket_2014@126.com", 2023))))
# 输出:{'name': 'rocket', 'email': 'rocket_2014@126.com', 'year': 2023}
# 可迭代对象方式来构造字典
print(dict([("name", "rocket"), ("email", "rocket_2014@126.com"), ("year", 2023)], language="python3.11"))
# 输出:{'name': 'rocket', 'email': 'rocket_2014@126.com', 'year': 2023, 'language': 'python3.11'}
# 3. 通过可迭代对象创建字典
l = [('a', 1), ('b', 2), ('c', 3)]
d = dict(l)
print(d) # 输出结果是{'a': 1, 'b': 2, 'c': 3}
dir()
函数dir()是Python内置函数之一,用于返回指定对象的属性和方法列表。其基本语法如下:
dir([object])
其中,object是要查询属性和方法列表的对象,如果不指定object,则返回当前作用域内的属性和方法列表。
dir()函数返回一个包含属性和方法名称的列表,可以用于查看对象的属性和方法。
下面是dir()函数的一些常见用法:
# 1. 查看当前作用域内的属性和方法
print(dir()) # 输出当前作用域内的属性和方法列表
# ['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']
# 2. 查看对象的属性和方法
class MyClass:
x = 1
y = 2
@classmethod
def test1(cls):
pass
@staticmethod
def test2():
pass
def test3(self):
pass
obj = MyClass()
# 输出对象的属性和方法列表
print(dir(obj)) # [...... 'test1', 'test2', 'test3', 'x', 'y']
# 3. 查看模块的属性和方法
import math
print(dir(math)) # 输出模块的属性和方法列表
总之,函数dict()用于创建一个字典对象,函数dir()用于返回指定对象的属性和方法列表。这两个函数在Python编程中非常常用,掌握它们的使用方法可以帮助我们更好地处理字典和对象属性。
divmod()
函数divmod()是Python内置函数之一,用于计算两个数的商和余数,并返回一个元组,其中第一个元素是商,第二个元素是余数。其基本语法如下:
divmod(x, y)
其中,x和y是两个数,可以是整数、浮点数或复数。
divmod()函数返回一个元组,第一个元素是x除以y的商,第二个元素是x除以y的余数。
下面是divmod()函数的一些常见用法:
# 1. 计算整数的商和余数
result = divmod(10, 3)
print(result) # 输出结果是(3, 1)
# 2. 计算浮点数的商和余数
result = divmod(10.5, 3.2)
print(result) # 输出结果是(3.0, 1.0999999999999996)
# 如果参数 a 与 参数 b 都是整数,函数返回的结果相当于 (a // b, a % b)。
# 如果其中一个参数为浮点数时,函数返回的结果相当于 (q, a % b),q 通常是 math.floor(a / b),但也有可能是 1 ,比小,不过 q * b + a % b 的值会非常接近 a。
# 如果 a % b 的求余结果不为 0 ,则余数的正负符号跟参数 b 是一样的,若 b 是正数,余数为正数,若 b 为负数,余数也为负数,并且 0 <= abs(a % b) < abs(b)。
print(divmod(5, -2)) # (-3, -1)
print(divmod(-5, 2)) # (-3, 1)
print(divmod(-5, -2)) # (2, -1)
print(divmod(4, 2)) # (2, 0)
# 函数接收两个数字类型(非复数)参数,返回一个包含商和余数的元组(a // b, a % b)。在 python 3.x 版本该函数不支持复数。python2支持
# 3. 计算复数的商和余数
result = divmod(3+4j, 1+2j) # TypeError: can't take floor or mod of complex number.
print(result) # py2中输出结果是((2+0j), (1+0j))
c1 = complex(3,4)
c2 = complex(1,2)
print(c1, c2)
print(divmod(c1, c2)) # py2中输出:((2+0j), (1+0j))
更多资料 · 微信公众号搜索【CTO Plus】关注后,获取更多,我们一起学习交流。
关于公众号的描述访问如下链接