python内置函数
Posted Vizier
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python内置函数相关的知识,希望对你有一定的参考价值。
python官方文档内置函数BIF:https://docs.python.org/3/library/functions.html
数学相关:
abs(a) : 求取绝对值。abs(-1)
max(list) : 求取list最大值。max([1,2,3])
#1.传入的多个参数的最大值
print(max(1,2,3,4)) #输出 4
#2.传入可迭代对象时,取其元素最大值
s=\'12345\'
print(max(s)) #输出 5
#3.传入命名参数key,其为一个函数,用来指定取最大值的方法
s = [
{\'name\': \'sumcet\', \'age\': 18},
{\'name\': \'bbu\', \'age\': 11}
]
a = max(s, key=lambda x: x[\'age\'])
print(a) #输出 {\'name\': \'sumcet\', \'age\': 18}
min(list) : 求取list最小值,同sum()。
sum(list) : 求取list元素的和。
1. 函数功能是对可迭代类型进行求和。要求:① 接收对象是可迭代类型。② 可迭代对象所有元素类型是数值型。
sum([1,2,3]) ,sum((1,2,3))。
2. 可以传入一个可选参数start,表示求和前的初始化值,如果传入空的可迭代数据类型,则返回初始值。
>>> sum((1,2,3,4),2) 12 # 传入空可迭代对象,直接返回初始值 >>> sum([],2) 2
sorted(list) : 排序,返回排序后的list。
sorted([36,6,-12,9,-22],key=abs) 高阶函数,以绝对值大小排序
如果需要排序的是一个元组,则需要使用参数key,也就是关键字。
>>> a = [(\'b\',2), (\'a\',1), (\'c\',0)] >>> list(sorted(a,key=lambda x:x[1])) 按照元组第二个元素排序
sorted([\'bob\', \'about\', \'Zoo\', \'Credit\'],key=str.lower) 忽略大小写排序
sorted([\'bob\', \'about\', \'Zoo\', \'Credit\'],key=str.lower,reverse=True) 反向排序
len(list) : list长度,len([1,2,3])
1. 返回对象的长度,参数可以是序列(比如字符串、字节数组、元组、列表和range对象),或者是集合(比如字典、集合、不可变集合)
2. 如果参数为其它类型,则其必须实现__len__方法,并返回整数,否则报错。
divmod(a,b): 获取商和余数。 divmod(5,2) >>> (2,1)
pow(a,b) : 获取乘方数。pow(2,3) >>> 8
函数有两个必需参数x,y和一个可选参数z,结果返回x的y次幂乘(相当于x**y),如果可选参数z有传入值,则返回幂乘之后再对z取模(相当于pow(x,y)%z)。
round(a,b) : 获取指定位数四舍五入后的小数。a代表浮点数,b代表要保留的位数。round(3.1415926,2) >>> 3.14
默认保留0位小数进行取整,返回的是整数。
如果b小于零,则控制了对浮点数的整数部分的后几位进行四舍五入,小数部分全部清0。
range(a[,b]) : 生成一个a到b的数组,左闭右开。 range(1,10) >>> [1,2,3,4,5,6,7,8,9]
range
(stop)
range
(start, stop[, step]),step是步长,默认是1.
类型相关
int(str) : 转换为int型。int(\'1\') >>> 1
传入字符串,并指定了进制,则按对应进制将字符串转换成10进制整数。
>>> int(\'07\',8) 7 >>> int(\'0f\',16) 15
float(int/str) : 将int型或字符型转换为浮点型。float(\'1\') >>> 1.0
str(int) : 转换为字符型。str(1) >>> \'1\'
>>> str(b\'\\xe7\\x8e\\x8b\', encoding=\'utf-8\') # 字节转换为字符串 \'王\'
file_bytes = \'b\'\\\\xe6\\\\x88\\\\x91\\\\xe6\\\\x98\'
str(file_bytes,\'gbk\') # 当传入encoding不能解码时,会报错(即errors参数默认为strict)
str(file_bytes,\'gbk\',\'ignore\') # \'ignore\' 忽略级别,字符编码有错,忽略掉.
str(file_bytes,\'gbk\',\'replace\') # \'replace\' 替换级别,字符编码有错的,替换成?.
bool(int) : 转换为布尔类型。 str(0) >>> False str(None) >>> False
bytes(str,code) : 接收一个字符串,与所要编码的格式,返回一个字节流类型。bytes(\'abc\', \'utf-8\') >>> b\'abc\' bytes(u\'爬虫\', \'utf-8\') >>> b\'\\xe7\\x88\\xac\\xe8\\x99\\xab\'
bytearray():根据传入的参数创建一个新的字节数组
list(iterable) : 转换为list。 list((1,2,3)) >>> [1,2,3]
iter(iterable): 返回一个可迭代的对象。 iter([1,2,3]) >>> <list_iterator object at 0x0000000003813B00>
dict(iterable) : 转换为dict。 dict([(\'a\', 1), (\'b\', 2), (\'c\', 3)]) >>> {\'a\':1, \'b\':2, \'c\':3}
enumerate(iterable) : 根据可迭代对象创建枚举对象。
>>> seasons = [\'Spring\', \'Summer\', \'Fall\', \'Winter\'] >>> list(enumerate(seasons)) [(0, \'Spring\'), (1, \'Summer\'), (2, \'Fall\'), (3, \'Winter\')] >>> list(enumerate(seasons, start=1)) #指定起始值 [(1, \'Spring\'), (2, \'Summer\'), (3, \'Fall\'), (4, \'Winter\')]
tuple(iterable) : 传入可迭代对象,使用其元素创建一个新的元组。 tuple([1,2,3]) >>>(1,2,3),tuple(\'123\') >>>(\'1\',\'2\',\'3\')
set(iterable) : 转换为set。 set([1,4,2,4,3,5]) >>> {1,2,3,4,5} set({1:\'a\',2:\'b\',3:\'c\'}) >>> {1,2,3}
frozenset():根据传入的参数创建一个新的不可变集合
>>> a = frozenset(range(10)) >>> a frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
hex(int) : 转换为16进制。hex(1024) >>> \'0x400\'
oct(int) : 转换为8进制。 oct(1024) >>> \'0o2000\'
bin(int) : 转换为2进制。 bin(1024) >>> \'0b10000000000\'
chr(int) : 转换数字为相应ASCI码字符。 chr(65) >>> \'A\'
ord(str) : 转换ASCI字符为相应的数字。 ord(\'A\') >>> 65
complex():根据传入参数创建一个新的复数
>>> complex(\'1+2j\') #传入字符串创建复数 (1+2j) >>> complex(1,2) #传入数值创建复数 (1+2j)
memoryview():根据传入的参数创建一个新的内存查看对象
>>> v = memoryview(b\'abcefg\') >>> v[1] 98 >>> v[-1] 103
slice():根据传入的参数创建一个新的切片对象
class slice
(stop)
class slice
(start, stop[, step])
a=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> c1 = slice(5) # 定义c1 >>> c1 slice(None, 5, None) >>> c2 = slice(2,5) # 定义c2 >>> c2 slice(2, 5, None) >>> c3 = slice(1,10,3) # 定义c3 >>> c3 slice(1, 10, 3) >>> a[c1] # 和a[:5:]结果相同 [0, 1, 2, 3, 4] >>> a[c2] # 和a[2:5:]结果相同 [2, 3, 4] >>> a[c3] # 和a[1:10:3]结果相同 [1, 4, 7]
super():根据传入的参数创建一个新的子类和父类关系的代理对象,调用父类的方法。
object():获取一个新的,无特性(geatureless)对象。Object是所有类的基类。它提供的方法将在所有的类型实例中共享。
功能相关:
eval() : 执行一个表达式,或字符串作为运算。 eval(\'1+1\') >>> 2
exec() : 执行python语句。 exec(\'print("Python")\') >>> Python
filter(func, iterable) : 通过判断函数fun,筛选符合条件的元素,如果func为None则返回iterable中为True的元素。 a=filter(lambda x: x%2, [1,2,3,4,5,6]) >>> list(a) >>> [1,3,5]
map(func, *iterable) : 将func用于每个iterable对象。 map(lambda a,b: a+b, [1,2,3,4], [5,6,7]) >>> [6,8,10]
>>> a = map(ord,\'abcd\') >>> a <map object at 0x03994E50> >>> list(a) [97, 98, 99, 100]
zip(*iterable) : 将iterable分组合并。返回一个zip对象。 list(zip([1,2,3],[4,5,6])) >>> [(1, 4), (2, 5), (3, 6)]
type():返回一个对象的类型。
id(): 返回对象的内存地址。
hash(object):返回一个对象的hash值,具有相同值的object具有相同的hash值。 hash(\'python\') >>> 7070808359261009780
help():传入参数调用函数时,将查找参数是否是模块名、类名、函数名,如果是将显示其使用说明。
isinstance(object, classinfo):判断一个对象是否为该类的一个实例。
当第二个参数是元组时,表示object是元组中任一个类的实例时返回True。
>>> isinstance(1,(int,str)) True
issubclass():判断一个类是否为另一个类的子类。
next(iterator[, default]) : 接收一个迭代器,返回迭代器中下一项的数值,如果设置了default,则当迭代器中的元素遍历后,输出default内容。
reversed(sequence) : 生成一个反转序列的迭代器。 reversed(\'abc\') >>> [\'c\',\'b\',\'a\']
all():接受一个迭代器,如果迭代器的所有元素都为真,那么返回True,否则返回False
any():接受一个迭代器,如果迭代器里有一个元素为真,那么返回True,否则返回False
format():格式化输出字符串,format(value, format_spec)实质上是调用了value的__format__(format_spec)方法
>>> "I am {0}, I like {1}!".format("wang", "moon") \'I am wang, I like moon!\'
print
(*objects, sep=\' \', end=\'\\n\', file=sys.stdout, flush=False),用于对象打印输出,sep是分隔符,默认是空格,end是输出的结尾,默认是\'\\n\'。
>>> print(1,2,3,sep = \'+\',end = \'=?\') 1+2+3=?
input():读取用户输入值。
open(filename [, mode [, bufsize]]):
打开一个文件,返回一个file对象。 如果文件无法打开,将处罚IOError异常。 应该使用open()来代替直接使用file类型的构造函数打开文件。 参数filename表示将要被打开的文件的路径字符串; 参数mode表示打开的模式,最常用的模式有:\'r\'表示读文本,\'w\'表示写文本文件,\'a\'表示在文件中追加。 Mode的默认值是\'r\'。 当操作的是二进制文件时,只要在模式值上添加\'b\'。这样提高了程序的可移植性。 可选参数bufsize定义了文件缓冲区的大小。0表示不缓冲;1表示行缓冲;任何其他正数表示使用该大小的缓冲区;负数表示使用系统默认缓冲区大小。
其他
__import__():
globals() : 返回当前作用域内的全局变量和其值组成的字典。
locals():返回当前作用域内的局部变量和其值组成的字典。
dir():不带参数时返回当前范围内的变量,方法和定义的类型列表,带参数时返回参数的属性,方法列表
>>> dir() [\'__builtins__\', \'__doc__\', \'__loader__\', \'__name__\', \'__package__\', \'__spec__\', \'li\', \'li1\', \'li2\', \'li_1\'] >>> dir(list) [\'__add__\', \'__class__\', \'__contains__\', \'__delattr__\', \'__delitem__\', \'__dir__\', \'__doc__\', \'__eq__\', \'__format__\', \'__ge__\', \'__getattribute__\', \'__getitem__\', \'__gt__\', \'__hash__\', \'__iadd__\', \'__imul__\', \'__init__\', \'__iter__\', \'__le__\', \'__len__\', \'__lt__\', \'__mul__\', \'__ne__\', \'__new__\', \'__reduce__\', \'__reduce_ex__\', \'__repr__\', \'__reversed__\', \'__rmul__\', \'__setattr__\', \'__setitem__\', \'__sizeof__\', \'__str__\', \'__subclasshook__\', \'append\', \'clear\', \'copy\', \'count\', \'extend\', \'index\', \'insert\', \'pop\', \'remove\', \'reverse\', \'sort\']
vars():返回对象object的属性和属性值的字典对象,如果没有参数,就打印当前调用位置的属性和属性值 类似 locals()。
hasattr(object, name):函数功能用来检测对象object中是否含有名为name的属性,如果有则返回True,如果没有返回False
getattr():获取对象的属性值
setattr():设置对象的属性值
delattr():删除对象的属性
callable():方法用来检测对象是否可被调用,可被调用指的是对象能否使用()括号的方法调用。 类对象都是可被调用对象,类的实例对象是否可调用对象,取决于类是否定义了__call__方法。
>>> class B: #定义类B def __call__(self): print(\'instances are callable now.\') >>> callable(B) #类B是可调用对象 True >>> b = B() #调用类B >>> callable(b) #实例b是可调用对象 True >>> b() #调用实例b成功 instances are callable now.
compile(source):将source编译为代码或者AST对象。代码对象能够通过exec语句来执行或者eval()进行求值。
>>> #流程语句使用exec
>>> code1 = \'for i in range(0,10): print (i)\' >>> compile1 = compile(code1,\'\',\'exec\') >>> exec (compile1)
>>> #简单求值表达式用eval >>> code2 = \'1 + 2 + 3 + 4\' >>> compile2 = compile(code2,\'\',\'eval\') >>> eval(compile2) 10
repr(object):函数功能返回一个对象的字符串表现形式。repr函数的结果一般能通过eval()求值的方法获取到原对象。
>>> a = \'some text\' >>> str(a) \'some text\' >>> repr(a) "\'some text\'"
>>> eval(repr(a)) \'some text\'
装饰器:
property
(fget=None, fset=None, fdel=None, doc=None)
1. property是一个类,其作用是用来包装类的属性,这个属性可以根据实际需要,控制是否可读(设置fget参数)、可写(设置fset参数)、可删除(设置fdel参数),doc是属性的说明。
class C: def __init__(self): self._x = \'_x in C\' def getx(self): return self._x def setx(self, value): self._x = value def delx(self): del self._x x = property(getx, setx, delx, "I\'m the \'x\' property.")
>>> c = C() >>> c.x # 调用 getx \'_x in C\' >>> c.x = \'x had changed\' # 调用 setx >>> c.x # 调用 getx \'x had changed\' >>> del c.x # 调用 delx >>> c.x # 调用 getx Traceback (most recent call last): File "<pyshell#34>", line 1, in <module> c.x File "<pyshell#28>", line 6, in getx return self._x AttributeError: \'C\' object has no attribute \'_x\'
2. property更优雅的做法是用作装饰器,装饰过的方法就可以以属性方式调用。同时将生成.setter和.deleter装饰器,用于指定可入方法,删除方法。
>>> class C: def __init__(self): self._x = \'_x in C\' @property def x(self): """I\'m the \'x\' property.""" return self._x @x.setter def x(self, value): self._x = value @x.deleter def x(self): del self._x
>>> c = C() >>> c.x # 调用 getx \'_x in C\' >>> c.x = \'x had changed\' # 调用 setx >>> c.x # 调用 getx \'x had changed\' >>> del c.x # 调用 delx >>> c.x # 调用 getx Traceback (most recent call last): File "<pyshell#34>", line 1, in <module> c.x File "<pyshell#28>", line 6, in getx return self._x AttributeError: \'C\' object has no attribute \'_x\'
classmethod():用来指定一个方法为类的方法,由类直接调用执行,只有一个cls参数,执行类的方法时,自动将调用该方法的类赋值给cls.没有此参数指定的类的方法为实例方法
class Province: country = "中国" def __init__(self, name): self.name = name @classmethod def show(cls): # 类方法,由类调用,最少要有一个参数cls,调用的时候这个参数不用传值,自动将类名赋值给cls print(cls) # 调用方法 Province.show()
staticmethod():标识方法为静态方法的装饰器。
一般类中的方法必须要至少有一个参数,类直接调用的时候必须传进去一个类对象的参数:
class A():
def f1(self):
print(11)
A.f1(A())
而加了@staticmethod装饰器的方法,不需要有参数,而且可以被类直接调用:
class A():
@staticmethod
def f1():
print(11)
A.f1()
参考:https://blog.csdn.net/yangxiaoyan12/article/details/87566833
https://www.cnblogs.com/sesshoumaru/p/6140987.html#p2
https://www.cnblogs.com/xiao1/p/5856890.html
以上是关于python内置函数的主要内容,如果未能解决你的问题,请参考以下文章