• Python3学习之路~3.3 内置函数


    Python内置函数表:

    内置参数详解:https://docs.python.org/3/library/functions.html?highlight=built#ascii 

    用法:

    #Author:Zheng Na
    
    # abs() 取绝对值
    print(abs(-10)) #10
    
    # all() 如果可迭代对象iterabla中的所有元素都为真(或者iterable为空),返回True
    print(all([])) # True
    print(all([1,-5])) # True
    print(all([0])) # False
    
    # any() 如果可迭代对象iterable中任意一个元素为真,返回真;如果iterable为空,返回False
    print(any([])) # False
    print(any([1])) # True
    print(any([-5])) # True
    print(any([0])) # False
    print(any([1,-5,0])) # True
    
    # ascii() 把一个数据对象变成一个可打印的字符串的形式,不常用
    print(ascii("你好")) # 'u4f60u597d'
    a=ascii([1,2,3])
    print(type(a),[a]) # <class 'str'> ['[1, 2, 3]']
    
    # bin() 把一个整数转成二进制
    print(bin(1)) # 0b1
    print(bin(5)) # 0b101
    print(bin(255)) # 0b11111111
    
    # bool() 返回一个布尔值
    print(bool(1)) # True
    print(bool(-1)) # True
    print(bool(0)) # False
    print(bool([])) # False
    print(bool([0])) # True
    print(bool([1,2])) # True
    
    # bitearray() and bytes()
    #前面讲过,字符串不可修改,字符串的二进制字节格式更不可以修改
    # 要修改必须生成一个新的覆盖旧的,如果没覆盖,其实旧的a根本没改,如下
    a= bytes("abcde",encoding="UTF-8")
    print(a.capitalize(),a) # b'Abcde' b'abcde
    # 但是,bitearray()是可修改的二进制字节格式
    b=bytearray("abcde",encoding="UTF-8")
    print(b[0]) # 97 打印了a的ASCII码
    print(b[1]) # 98 打印了b的ASCII码
    print(b[2]) # 99 打印了c的ASCII码
    #b[1] = 'B' # 报错:TypeError: an integer is required
    b[1] = 66
    print(b) # bytearray(b'aBcde')
    #如上,可以把字符串变成bytearray形式,然后就可以对字符串进行修改了
    
    # callables() 判断是否可调用,即是否后面可加括号
    print(callable([])) # False 列表不可调用
    def sayhi():pass
    print(callable(sayhi)) # True 函数、类可调用
    
    # chr() 返回ASCII码的对应表,参数必须是数字,与ord()对应相反
    print(chr(97)) # a
    print(ord('a')) #97
    
    # classmethod() 类方法
    
    # compile() 用于底层的把代码进行编译的过程,我们基本用不到
    code = "for i in range(10):print(i)"
    c=compile(code,'','exec') # <code object <module> at 0x0000000002444A50, file "", line 1>
    exec(c) #输出0到9,但其实直接exec(code)就可以执行,哈哈
    
    code2 = "1+3/2*6"
    c2=compile(code2,'','eval')
    print(eval(c2) ) # 10.0
    
    code3='''
    def fib(max):
        n,a,b=0,0,1
        while n<max:
            #print(b)
            yield b
            a,b = b,a+b
            n=n+1
        return 'done'
    
    g = fib(6)
    while True:
       try:
           x = next(g)
           print('g:', x)
       except StopIteration as e:
           print('Generator return value:', e.value)
           break
    '''
    py_obj=compile(code3,'err.log','exec') #err.log打印错误日志实际上不好使
    exec(py_obj)
    # 输出:
    # g: 1
    # g: 1
    # g: 2
    # g: 3
    # g: 5
    # g: 8
    # Generator return value: done
    
    # complex() 复数,不常用
    
    # delattr() 非常有用
    
    # dict() 生成一个字典
    print(dict()) # {}
    
    # 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)
    
    # enumerate()
    name=['Amy','Bob','Cendy']
    print(list(enumerate(name))) # [(0, 'Amy'), (1, 'Bob'), (2, 'Cendy')]
    print(list(enumerate(name,start=1))) # [(1, 'Amy'), (2, 'Bob'), (3, 'Cendy')]
    for index,item in enumerate(name):
        print(index,item)
    # 输出:
    # 0 Amy
    # 1 Bob
    # 2 Cendy
    
    # eval() 将字符串string对象转化为有效的表达式参与求值运算返回计算结果
    x = 1
    print(eval('x+1')) # 2
    
    # exec() 执行以string类型存储的Python代码
    x,y=2,3
    exec("ans = x+y")
    print("Answer is:",ans) # Answer is: 5
    
    # filter() 过滤器,类似于map()
    #把range(10)中符合lambda n:n>5规则的打印出来
    res = filter(lambda n:n>5,range(10))
    for i in res:
        print(i) #打印6 7 8 9
    
    # map() 类似于filter()
    # 把后面的集合中的每一个值传入前面的lambda n:n*n进行处理,然后覆盖原来的列表
    res = map(lambda n:n*n,range(10))
    for i in res:
        print(i) #打印0 1 4 9 16 25 36 49 64 81
    
    # reduce() 在python2.7中有,在python3.0已经将其从内置函数移到标准库中了
    import functools
    res = functools.reduce( lambda x,y:x+y,range(10) ) #0+1+2+3+4+5+6+7+8+9=45
    print(res) # 45
    
    # float() 浮点
    # format() 类似于字符串的format
    
    # frozenset() 冻结的、不可变的集合
    #集合默认是可修改的但是将集合变成frozenset之后就不可修改了,像元组一样
    a = set([1,2,4,7])
    print(dir(a)) #打印方法
    b = frozenset([1,2,4,7])
    print(dir(b))
    #如上,可以看出b比a少了很多方法,比如['add', 'clear', 'pop', 'remove', 'update', 'difference_update', 'discard',  'intersection_update', 'symmetric_difference_update']
    
    # getattr()
    
    # globals() 返回一个字典,将当前程序的所有全局变量以key-value的形式打印出来
    print(globals())
    
    # locals() 返回一个字典,将当前程序的局部变量以key-value的形式打印出来
    def test():
        local_var = 333
        print(locals()) # {'local_var': 333}
        print(globals().get('local_val')) # None
    test()
    print(globals().get('local_var')) # None
    
    # hasattr()
    # hash() 哈希
    # help() 查看帮助
    
    # hex() 把一个整数转成16进制
    print(hex(255)) # 0xff
    
    # id 返回内存地址
    
    # input() 交互输入
    # user= input("Username:")
    
    # int() 取整
    
    # isinstance(object,classinfo) 判断object是否是classinfo类型
    print(isinstance([1,2,3],list)) # True
    
    # issubclass() 判断是否是子类
    
    # iter() 把一个可迭代对象变成一个迭代器
    names=iter([1,2,3,4,5,6])
    print(type(names)) # <class 'list_iterator'>
    
    #len() 长度
    print(len([1,2,3])) # 3
    
    # max() 最大值
    # min() 最小值
    
    #memoryview()
    #usage:
    #>>> memoryview(b'abcd')
    #<memory at 0x104069648>
    #在进行切片并赋值数据时,不需要重新copy原列表数据,可以直接映射原数据内存,
    import time
    for n in (100000, 200000, 300000, 400000):
        data = b'x'*n
        start = time.time()
        b = data
        while b:
            b = b[1:]
        print('bytes', n, time.time()-start)
    
    for n in (100000, 200000, 300000, 400000):
        data = b'x'*n
        start = time.time()
        b = memoryview(data)
        while b:
            b = b[1:]
        print('memoryview', n, time.time()-start)
    # 输出:
    # bytes 100000 0.4980285167694092
    # bytes 200000 3.0671753883361816
    # bytes 300000 2.7071547508239746
    # bytes 400000 5.042288541793823
    # memoryview 100000 0.021001338958740234
    # memoryview 200000 0.04300260543823242
    # memoryview 300000 0.06600356101989746
    # memoryview 400000 0.09100532531738281
    
    # next() 相当于迭代器中的_next_()
    
    # oct() 把一个整数转成八进制
    print(oct(13)) # 0o15
    
    # open() 打开一个文件
    with open('text.txt','w',encoding='UTF-8') as f:
        pass
    
    # ord() 返回ASCII码的对应表,参数必须是字符,与chr()对应相反
    print(chr(97)) # a
    print(ord('a')) #97
    
    # pow(x,y) 返回x的y次方
    print(pow(2,8)) # 256
    
    # print() 打印
    msg = "又回到最初的起点"
    f = open("tofile.txt","w",encoding='UTF-8')
    print(msg,"记忆中你青涩的脸",sep="|",end="",file=f)
    
    # property()
    
    # range()
    for i in range(5):
        print(i) #输出0到4
    for i in range(1,6):
        print(i) #输出1到5
    
    # repr() 把一个对象变成字符串
    a=repr([1,2,3])
    print(type(a),[a]) # <class 'str'> ['[1, 2, 3]']
    
    # reversed(seq) 跟列表中的reverse一样
    
    # round()
    print(round(1.3334)) # 1
    print(round(1.3334,2)) # 1.33
    
    # slice() 切片,没什么用处
    d = range(20)
    print(d[slice(2,5)]) #range(2,5) 相当于d[2:5]
    print(d[2:5])
    
    # sorted() 排序
    a={6:2,8:0,1:4,-5:6,99:11,4:22}
    #将字典变成列表,并按照key排序
    print(sorted(a.items())) # [(-5, 6), (1, 4), (4, 22), (6, 2), (8, 0), (99, 11)]
    #将字典变成列表,并按照value排序
    print(sorted(a.items(),key=lambda x:x[1])) # [(8, 0), (6, 2), (1, 4), (-5, 6), (99, 11), (4, 22)]
    
    # starticmethod()
    # str()
    # super()
    
    # tuple() 元组
    a = tuple([1,2,3])
    print(a) # (1, 2, 3)
    
    # type() 查看对象的数据类型,并且他也是所有对象的根
    print(type([])) # <class 'list'>
    
    # vars() 返回一个对象的所有属性名,不常用
    
    # zip()
    # zip(a,b)将a和b拼在一起,一一对应,像拉链(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')
    
    # 如果a多b少,按照最少的来
    a=[1,2,3,4,5,6]
    b=['a','b','c','d']
    for i in zip(a,b):
        print(i)
    # 输出:
    # (1, 'a')
    # (2, 'b')
    # (3, 'c')
    # (4, 'd')
    
    # __import__()
    # import aaa可以引入一个模块名,但是__import__()可以引入一个字符串格式的
    # __import__('aaa')
    View Code
  • 相关阅读:
    Macaca初体验-Android端(Python)
    Macaca初体验-Android端(Python)
    Macaca初体验-Android端(Python)
    什么是流媒体技术
    什么是流媒体技术
    什么是流媒体技术
    什么是流媒体技术
    设备可以和人说话了 就问你怕不怕?
    设备可以和人说话了 就问你怕不怕?
    你都有什么副业?
  • 原文地址:https://www.cnblogs.com/zhengna/p/9213977.html
Copyright © 2020-2023  润新知