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(startstop[, 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(startstop[, 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内置函数的主要内容,如果未能解决你的问题,请参考以下文章

python有多少内置函数

VBS 环境下如何调用EXCEL内置函数

查找内置 Python 函数的源代码?

python 内置函数

熟练掌握Python的内置函数,加快编程速度

python--内置函数, 匿名函数