常用内置函数
内置函数 python3.8 官网 (opens new window)
# range()
# 生成列表,返回迭代器
print(list(range(0, 20, 3))) # [0, 3, 6, 9, 12, 15, 18],默认步长为1,需要其他步长的时候,必须要设置开始和结果位置。
print(list(range(10))) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # 注意含头不含尾,所以有0,没有10
print(list(range(10, 0, -1))) # [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] # 注意含头不含尾,所以有10,没有0
1
2
3
4
2
3
4
# len()
# 返回对象的长度(元素个数)。实参可以是序列(如 string、bytes、tuple、list 或 range 等)或集合(如 dictionary、set 或 frozen set 等)
print(len(range(10))) # 10
1
2
2
# sum()、max()、min()
# sum(),求和
# max(),最大
# min(),最小
print(sum(range(10))) # 45
print(max(range(10))) # 9
print(min(range(10))) # 0
1
2
3
4
5
6
7
2
3
4
5
6
7
# round()
# round(),返回 number 舍入到小数点后 ndigits 位精度的值。 如果 ndigits 被省略或为 None,则返回最接近输入值的整数。
print(round(3.255, 2)) # 3.25 ,这一结果是由于大多数十进制小数实际上都不能以浮点数精确地表示
print(round(3.4)) # 3
print(round(3.5)) # 4
print(round(3.6)) # 4
1
2
3
4
5
2
3
4
5
# filter()
# 过滤,返回的是一个迭代器
print(list(filter(lambda a: a > 4, range(10)))) # [5, 6, 7, 8, 9]
1
2
2
# map()
# 重新生成列表,返回的是一个迭代器
print(list(map(lambda a: a * a, range(5)))) # [0, 1, 4, 9, 16]
1
2
2
# zip()
# zip(),创建一个聚合了来自每个可迭代对象中的元素的迭代器
print(list(zip(range(3), range(2, -1, -1), range(3)))) # [(0, 2, 0), (1, 1, 1), (2, 0, 2)]
1
2
2
# dir()
# 它列出所有类型的名称:变量,模块,函数,等等
print(dir(range))
my_dir = 'test'
print(dir()) # 当前文件 [...等等, '__spec__', 'my_dir']
1
2
3
4
2
3
4
# all()
# 如果 iterable 的所有元素均为真值(或可迭代对象为空)则返回 True
print(all([])) # True
print(all([True, 1, 'hello'])) # True
print(all([1, True, ''])) # False
1
2
3
4
2
3
4
# any()
# 如果 iterable 的任一元素为真值则返回 True。 如果可迭代对象为空,返回 False
print(any([])) # False
print(any([1, True])) # True
print(any([True, '', 0, {}, []])) # True
print(any([False, '', 0, {}, []])) # False
1
2
3
4
5
2
3
4
5
# setattr()、hasattr()、getattr()、delattr()
# setattr(), 其参数为一个对象、一个字符串和一个任意值。 字符串指定一个现有属性或者新增属性。 函数会将值赋给该属性,只要对象允许这种操作
# hasattr(), 该实参是一个对象和一个字符串。如果字符串是对象的属性之一的名称,则返回 True,否则返回 False
# getattr(), 返回对象命名属性的值。name 必须是字符串。如果该字符串是对象的属性之一,则返回该属性的值
# delattr(),实参是一个对象和一个字符串。该字符串必须是对象的某个属性。如果对象允许,该函数将删除指定的属性
class A:
# a = 1
pass
setattr(A, 'a', 1) # 等价于 A.a = 1,a是A的类变量
print(A().a) # 1
print(getattr(A, 'a')) # 等价于 A.a ,值为1
delattr(A, 'a') # 等价于 del A.a
print(hasattr(A, 'a')) # False
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# enumerate()
# 返回一个枚举对象(迭代器)
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
print(list(enumerate(seasons, start=1))) # start默认为0 [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
1
2
3
2
3
# hash()
# 返回该对象的哈希值(如果它有的话)。哈希值是整数。它们在字典查找元素时用来快速比较字典的键。相同大小的数字变量有相同的哈希值(即使它们类型不同,如 1 和 1.0)
# 同个进程下值一样,不同进程值可能不一样,是因为函数在处理 str,bytes 和datetime类型的对象时,会对其加盐, 参考:https://ceshihao.github.io/2020/11/18/python-hash-inconsistency/
print(hash('hello'))
print(hash(1)) # 1
print(hash(1.0)) # 1
# 如果不同进程之间要保证hash值一样,使用hashlib
import hashlib
print(hashlib.sha1('hello'.encode('utf-8')).hexdigest()) # aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# input()
# 终端输入
s = input('输入内容:')
print(s)
1
2
3
2
3
# isinstance()
# isinstance(object, classinfo),如果参数 object 是参数 classinfo 的实例或者是其 (直接、间接或 虚拟) 子类则返回 True
print(isinstance(1, int)) # True
print(isinstance(1, str)) # False
1
2
3
2
3
# issubclass()
# issubclass(class, classinfo),如果 class 是 classinfo 的 (直接、间接或 虚拟) 子类则返回 True
print(issubclass(A, object)) # True,所有类的基类都是object
1
2
2
# open()
# open() 打开 file 并返回对应的 file object
# mode: r:读取(默认)/ w:写入,并先截断文件 / x:排它性创建,如果文件已存在则失败 / a:写入,如果文件存在则在末尾追加
# b:二进制模式 / t:文本模式(默认)/ +:打开用于更新(读取与写入)
with open('study-with.py', encoding='utf-8') as f:
# f.readline() # 读取一行
# f.read() # 读取文件所有内容
# f.readlines() # 读取文件所有内容,返回一个列表,每一行为列表中一个值
print(f.readline())
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# sorted()
# sorted() reverse=True(表示降序,默认为False升序)
print(sorted(range(10), reverse=True))
l = list(range(10))
l.sort(reverse=True) # 注意列表直接调用sort方法,没有有返回值,使用sorted排序有返回值
print(l)
1
2
3
4
5
2
3
4
5
# 内置数据类型
print(list()) # []
print(set()) # set()
print(tuple()) # ()
print(dict()) # {}
print(int()) # 0
print(float()) # 0.0
print(complex()) # 0j
print(str()) # ''
print(bytes()) # b''
print(bytearray()) # bytearray(b'')
print(bool()) # False
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
上次更新: 2023/09/04, 18:39:45