python 内置函数

发布时间:2018-02-28 14:52:48编辑:admin阅读(3796)

    python内置了一系列的常用函数,以便于我们使用python。

    基本的数据操作基本都是一些数学运算(当然除了加减乘除)、逻辑操作、集合操作、基本IO操作,然后就是对于语言自身的反射操作,还有就是字符串操作。


    官方文档:

    https://docs.python.org/3/library/functions.html?highlight=built#ascii

    截图如下:

    blob.png

    简单做一下分类,参考文章

    https://www.cnblogs.com/pyyu/p/6702896.html


    一、数学运算类
    abs(x)

    求绝对值

    1、参数可以是整型,也可以是复数

    2、若参数是复数,则返回复数的模

    complex([real[, imag]])创建一个复数
    divmod(a, b)

    分别取商和余数

    注意:整型、浮点型都可以

    float([x])将一个字符串或数转换为浮点数。如果无参数将返回0.0
    int([x[, base]])将一个字符转换为int类型,base表示进制
    long([x[, base]])将一个字符转换为long类型
    pow(x, y[, z])返回x的y次幂
    range([start], stop[, step])产生一个序列,默认从0开始
    round(x[, n])四舍五入
    sum(iterable[, start])对集合求和
    oct(x)将一个数字转化为8进制
    hex(x)将整数x转换为16进制字符串
    chr(i)返回整数i对应的ASCII字符
    bin(x)将整数x转换为二进制字符串
    bool([x])将x转换为Boolean类型
    二、集合类操作
    basestring()

    str和unicode的超类

    不能直接调用,可以用作isinstance判断

    format(value [, format_spec])

    格式化输出字符串

    格式化的参数顺序从0开始,如"I am {0},I like {1}"

    unichr(i)返回给定int类型的unicode
    enumerate(sequence [, start = 0])返回一个可枚举的对象,该对象的next()方法将返回一个tuple
    iter(o[, sentinel])生成一个对象的迭代器,第二个参数表示分隔符
    max(iterable[, args...][key])返回集合中的最大值
    min(iterable[, args...][key])返回集合中的最小值
    dict([arg])创建数据字典
    list([iterable])将一个集合类转换为另外一个集合类
    set()创建一个无序不重复元素集(集合)
    frozenset([iterable])产生一个不可变的set
    str([object])转换为string类型
    sorted(iterable[, cmp[, key[, reverse]]])队集合排序
    tuple([iterable])生成一个tuple类型
    xrange([start], stop[, step]) xrange()函数与range()类似,但xrnage()并不创建列表,而是返回一个xrange对象,它的行为与列表相似,但是只在需要时才计算列表值,当列表很大时,这个特性能为我们节省内存
    三、逻辑判断
    all(iterable)

    1、集合中的元素都为真的时候为真

    2、特别的,若为空串返回为True

    (非0为真,负数也是真,0为假)

    any(iterable)

    1、集合中的元素有一个为真的时候为真

    2、特别的,若为空串返回为False

    cmp(x, y)如果x < y ,返回负数;x == y, 返回0;x > y,返回正数
    四、反射
    callable(object)

    检查对象object是否可调用

    1、类是可以被调用的

    2、实例是不可以被调用的,除非类中声明了__call__方法

    classmethod()

    1、注解,用来说明这个方式是个类方法

    2、类方法即可被类调用,也可以被实例调用

    3、类方法类似于Java中的static方法

    4、类方法中不需要有self参数

    compile(source, filename,

    mode[, flags[, dont_inherit]])

    将source编译为代码或者AST对象。代码对象能够通过exec语句来执行或者eval()进行求值。

    1、参数source:字符串或者AST(Abstract Syntax Trees)对象。

    2、参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。

    3、参数model:指定编译代码的种类。可以指定为 ‘exec’,’eval’,’single’。

    4、参数flag和dont_inherit:这两个参数暂不介绍

    dir([object])

    1、不带参数时,返回当前范围内的变量、方法和定义的类型列表;

    2、带参数时,返回参数的属性、方法列表。

    3、如果参数包含方法__dir__(),该方法将被调用。当参数为实例时。

    4、如果参数不包含__dir__(),该方法将最大限度地收集参数信息

    delattr(object, name)删除object对象名为name的属性
    eval(expression [, globals [, locals]])将字符串str当成有效的表达式来求值并返回计算结果
    execfile(filename [, globals [, locals]])用法类似exec(),不同的是execfile的参数filename为文件名,而exec的参数为字符串。
    filter(function, iterable)

    构造一个序列,等价于[ item for item in iterable if function(item)]

    1、参数function:返回值为True或False的函数,可以为None

    2、参数iterable:序列或可迭代对象

    getattr(object, name [, defalut])获取一个类的属性
    globals()返回一个描述当前全局符号表的字典
    hasattr(object, name)判断对象object是否包含名为name的特性
    hash(object)如果对象object为哈希表类型,返回对象object的哈希值
    id(object)返回对象的唯一标识
    isinstance(object, classinfo)判断object是否是class的实例
    issubclass(class, classinfo)判断是否是子类
    len(s)返回集合长度
    locals()返回当前的变量列表
    map(function, iterable, ...)遍历每个元素,执行function操作
    memoryview(obj)返回一个内存镜像类型的对象
    next(iterator[, default])类似于iterator.next()
    object()基类
    property([fget[, fset[, fdel[, doc]]]])属性访问的包装类,设置后可以通过c.x=value等来访问setter和getter
    reduce(function, iterable[, initializer])合并操作,从第一个开始是前两个参数,然后是前两个的结果与第三个合并进行处理,以此类推
    reload(module)重新加载模块
    setattr(object, name, value)设置属性值
    repr(object)将一个对象变幻为可打印的格式
    slice()
    staticmethod声明静态方法,是个注解
    super(type[, object-or-type])引用父类
    type(object)返回该object的类型
    vars([object])返回对象的变量,若无参数与dict()方法类似
    bytearray([source [, encoding [, errors]]])

    返回一个byte数组

    1、如果source为整数,则返回一个长度为source的初始化数组;

    2、如果source为字符串,则按照指定的encoding将字符串转换为字节序列;

    3、如果source为可迭代类型,则元素必须为[0 ,255]中的整数;

    4、如果source为与buffer接口一致的对象,则此对象也可以被用于初始化bytearray

    zip([iterable, ...])实在是没有看懂,只是看到了矩阵的变幻方面
    五、IO操作
    file(filename [, mode [, bufsize]])

    file类型的构造函数,作用为打开一个文件,如果文件不存在且mode为写或追加时,文件将被创建。添加‘b’到mode参数中,将对文件以二进制形式操作。添加‘+’到mode参数中,将允许对文件同时进行读写操作

    1、参数filename:文件名称。

    2、参数mode:'r'(读)、'w'(写)、'a'(追加)。

    3、参数bufsize:如果为0表示不进行缓冲,如果为1表示进行行缓冲,如果是一个大于1的数表示缓冲区的大小

    input([prompt])

    获取用户输入

    推荐使用raw_input,因为该函数不会捕获用户输入错误

    open(name[, mode[, buffering]])

    打开文件

    与file有什么不同?推荐使用open

    print()打印函数
    raw_input([prompt])设置输入,输入都是作为字符串处理
    六、其他
    help()帮助信息


    各个函数的使用,参考

    http://blog.csdn.net/oaa608868/article/details/53506188

    或者以下这篇文章,每个函数都可以点击。

    http://www.runoob.com/python3/python3-built-in-functions.html


    all()

    判断可迭代对象的每个元素是否都为True值

    print(all([0,-5,3]))

    执行输出 False


    any()

    判断可迭代对象的元素是否有为True值的元素

    print(any([1,0,3]))

    执行输出 True


    bin()

    将整数转换成二进制字符串

    print(bin(8))

    执行输出 0b1000 结果是一个二进制


    bool()

    根据传入的参数的逻辑值创建一个新的布尔值

    print(bool(3))

    执行输出 True


    bytes()

    根据传入的参数创建一个新的不可变字节数组

    a = bytes("上海",encoding="utf-8")
    print(a)

    执行输出 b'\xe4\xb8\x8a\xe6\xb5\xb7'


    bytearray(),很少用

    根据传入的参数创建一个新的字节数组

    b = bytearray("abcd",encoding="utf-8")
    print(b)

    执行输出 bytearray(b'abcd')


    callable()

    检测对象是否可被调用

    def sayhi():pass
    print(callable(sayhi))

    执行输出 True


    chr()

    返回整数所对应的Unicode字符

    print(chr(97))

    执行输出 a


    ord()

    返回Unicode字符对应的整数

    print(ord("b"))

    执行输出 b


    compile()

    将字符串编译为代码或者AST对象,使之能够通过exec语句来执行或者eval进行求值

    #流程语句使用exec
    code1 = 'for i in range(0,3): print (i)'
    compile1 = compile(code1,'','exec')
    exec(compile1)

    执行输出

    0

    1

    2


    #简单求值表达式用eval
    code2 = '1 + 2 + 3 + 4'
    compile2 = compile(code2,'','eval')
    print(eval(compile2))

    执行输出 10


    dict()

    根据传入的参数创建一个新的字典

    #不传入任何参数时,返回空字典。
    print(dict())

    执行输出 {}

    #可以传入键值对创建字典。
    print(dict(a = 1,b = 2))

    执行输出 {'a': 1, 'b': 2}


    dir()

    返回对象或者当前作用域内的属性列表

    a = {}
    print(dir(a))

    执行输出

    ['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']


    divmod()

    返回两个数值的商和余数

    print(divmod(5,2))

    执行输出 (2, 1)


    eval()

    将字符串str当成有效的表达式来求值并返回计算结果

    print(eval('1+2+3'))

    执行输出 6


    exec()

    执行动态语句块,用来计算复杂的

    exec("""for i in range(5):print("iter time: %d" % i)""")

    执行输出

    iter time: 0

    iter time: 1

    iter time: 2

    iter time: 3

    iter time: 4


    filter()

    使用指定方法过滤可 迭代对象的元素

    res = filter(lambda n:n>5,range(10))
    for i in res:
        print(i)

    执行输出

    6

    7

    8

    9


    map()

    使用指定方法去作用传入的每个可迭代对象的元素,生成新的可迭代对象

    res = map(lambda n:n*2,range(5)) #相当于 [i*2 for i in range(5)]
    for i in res:
        print(i)

    执行输出

    0

    2

    4

    6

    8


    frozenset()

    根据传入的参数创建一个新的不可变集合

    a = frozenset([1,2,5,7,4,6,2,8])
    print(a)

    执行输出

    frozenset({1, 2, 4, 5, 6, 7, 8})

    注意,这个集合,是无法修改的。


    globals()

    返回当前作用域内的全局变量和其值组成的字典

    print(globals())

    执行输出

    {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__':


    hash()

    获取对象的哈希值

    print(hash("abc"))

    执行输出

    8374159640907510668


    hex()

    将整数转换成16进制字符串

    print(hex(255))

    执行输出 0xff


    locals()

    返回当前作用域内的局部变量和其值组成的字典

    def test():
        local_var = 333
        print(local_var)
    
    test()

    执行输出 333


    oct()

    将整数转化成8进制数字符串

    print(oct(8))

    执行输出 0o10


    pow()

    返回两个数值的幂运算值或其与指定整数的模值

    print(pow(3,3))

    执行输出 27


    round()

    对浮点数进行四舍五入求值

    print(round(3.5))

    执行输出 4


    sorted()

    对可迭代对象进行排序,返回一个新的列表

    a = {6:2,8:0,1:4}
    #按照key排序
    print(sorted(a.items()))
    #按照value排序
    print(sorted(a.items(),key=lambda x:x[1]))

    执行输出

    [(1, 4), (6, 2), (8, 0)]

    [(8, 0), (6, 2), (1, 4)]


    zip()

    聚合传入的每个迭代器中相同位置的元素,返回一个新的元组类型迭代器

    a = [1,2,3,4]
    b = ['a','b','c','d']
    for i in zip(a,b):
        print(i)

    执行输出

    (1, 'a')

    (2, 'b')

    (3, 'c')

    (4, 'd')


关键字