最近在看python文档的过程中,发现还有好多有用的内置函数自己竟然不熟悉。于是在此做出如下整理。
bin/hex/oct,bin转换为二进制0b,hex转换为16进制0x,oct转换为八进制0o。
>>> bin(3)
'0b11'
>>> bin(-10)
'-0b1010'
>>> format(14, '#b'), format(14, 'b')
('0b1110', '1110')
>>> f'{14:#b}', f'{14:b}'
('0b1110', '1110')
>>> hex(255)
'0xff'
>>> hex(-42)
'-0x2a'
>>> '%#x' % 255, '%x' % 255, '%X' % 255
('0xff', 'ff', 'FF')
>>> format(255, '#x'), format(255, 'x'), format(255, 'X')
('0xff', 'ff', 'FF')
>>> f'{255:#x}', f'{255:x}', f'{255:X}'
('0xff', 'ff', 'FF')
chr /ord
chr(97) #out,'a'
ord('a') #out,97
delattr/setattr/getattr,分别为删除属性、设置属性、获得属性。
dir([object]),返回参数的所有属性
divmod(a,b),返回一个元组(a//b,a%b)
enumerate,返回一个枚举对象,例子如下。
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
list(enumerate(seasons))
#out,[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
list(enumerate(seasons, start=1))
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
eval(expression, globals=None, locals=None),expression为字符串,其他两个参数可选填。作用是分析字符串内容,将其转换为表达式。
exec(object),作用是执行括号内语句,参数可以是代码字符串或直接是代码。
filter(function,iterable),等价于以下语句。返回迭代器中符合function函数的每一项
item for item in iterable if function(item)
float(x),将x转化为浮点型
format,解释有点复杂,直接看例子。
>>> li = ['hoho',18]
>>> 'my name is {} ,age {}'.format('hoho',18)
'my name is hoho ,age 18'
>>> 'my name is {1} ,age {0}'.format(10,'hoho')
'my name is hoho ,age 10'
>>> 'my name is {1} ,age {0} {1}'.format(10,'hoho')
'my name is hoho ,age 10 hoho'
>>> 'my name is {} ,age {}'.format(*li)
'my name is hoho ,age 18'
>>> hash = {'name':'hoho','age':18}
>>> 'my name is {name},age is {age}'.format(name='hoho',age=19)
'my name is hoho,age is 19'
>>> 'my name is {name},age is {age}'.format(**hash)
'my name is hoho,age is 18'
frozenset/set,frozenset,创建不可变集合;set,创建可变集合。
>>>a = frozenset(range(10)) # 生成一个新的不可变集合
>>> a
frozenset([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> b = frozenset('runoob')
>>> b
frozenset(['b', 'r', 'u', 'o', 'n']) # 创建不可变集合
>>>
globals/locals,globals(),返回一个字典,字典内容为当前全局符号表。包括in、out等;locals(),返回一个字典,字典内容为当前本地符号表
hasattr(object,name),检查name是否是object的属性。
hash(x),参数可以是数字、字符串、对象,但不能是字典、集合、列表。具体作用有待探究
id(),实质是内存中对象的地址,对于该对象是唯一的,当然非重叠寿命周期的两个对象可共用一个id.
isinstance/issubclass,字面意思很好理解,直接看应用例子。
>>>a = 2
>>> isinstance (a,int)
True
>>> isinstance (a,str)
False
>>> isinstance (a,(str,int,list)) # 是元组中的一个返回 True
True
class A:
pass
class B(A):
pass
print(issubclass(B,A)) # 返回 True
iter,生成迭代器。
len(s),返回对象长度。
map(function,iterable),对iterable中的每一个元素做function变化后,以迭代器的形式将结果返回。实例如下。
>>>def square(x) : # 计算平方数
... return x ** 2
...
>>> map(square, [1,2,3,4,5]) # 计算列表各个元素的平方
[1, 4, 9, 16, 25]
>>> map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]
# 提供了两个列表,对相同位置的列表数据进行相加
>>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
[3, 7, 11, 15, 19]
next(),返回迭代器中的下一个元素。
it = iter([1, 2, 3, 4, 5])
# 循环:
while True:
try:
# 获得下一个值:
x = next(it)
print(x)
except StopIteration:
# 遇到StopIteration就退出循环
break
#也可给迭代结束加标识符
it = iter([1, 2, 5, 4, 3])
while True:
x = next(it, 'a')#当迭代结束后,下一项为a。
print(x)
if x == 'a':
break
open(file,mode =‘r’,buffering = -1,encoding = None,errors = None,newline = None,closefd = True,opener = None )
reversed,返回反向迭代器。
slice(stop),slice(start,stop,step),切片
aa = [i for i in range(20)]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
Aslice = slice(2,10,3)
aa[Aslice]
[2, 5, 8]
Bslice = slice(5)
aa[Bslice]
[0, 1, 2, 3, 4]
sort/sorted
默认为升序排列,设置reverse为Ture,结果为降序排列。
sort/sorted区别:
- sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
- list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
备注,简单的内置函数不做详述