• python学习第12天----内置函数


    1.内置函数

             python解释器提供的,直接可以使用的函数,如print,input等

    1)作业域相关

    ①globals() 以字典的类型返回全部局部变量

    ②locals()   以字典的类型返回当前位置的全部局部变量

    2)迭代器/生成器相关

    ①range 

    ②next()  内部执行的是__next__()

    ③iter()    获取一个迭代器,就相当于__iter__()

    lst = ["九尾妖狐","阿狸","灵魂突袭"]
    it = iter(lst)
    print(it.__next__())
    print(next(it))
    输出:
    九尾妖狐
    阿狸
    View Code

    3)输入输出

    ①input 输入

    ②print 输出

    def print(self, *args, sep=' ', end='
    ', file=None): # known special case of print

    #输出是添加分隔符,默认为空格

    print("九尾妖狐","阿狸","灵魂突袭",sep = "_")     #seperator  
    输出:
    九尾妖狐_阿狸_灵魂突袭
    View Code

    #结束时以什么结束,默认为回车

    print("九尾妖狐","阿狸","灵魂突袭",sep = "_",end = "LOL")
    输出:
    九尾妖狐_阿狸_灵魂突袭LOL
    View Code

    4)内存相关

    ①hash 哈希,通过hash算法对“对象”算出一个唯一编号;当下次需要对象时,直接通过hash值对于的位置获取

    print(hash(101))      #数字本身是唯一的
    print(hash("阿狸"))
    输出:
    101
    7129766306689511966
    View Code

    注:字典的查找效率非常高的原因就是在于字典的可hash的,hash是用空间换取时间,比较耗费内存;列表是不可hash的,元组是可hash的

    ②id 查看对象的内存值

    5)文件操作相关

    ①open

    6)模块相关

    ①__import__()  动态的导入一个模块

    name = input("请输入你要导入的模块:")
    __import__(name)  #可以动态导入模块,name为模块名
    View Code

    7)帮助

    ①help

    print(help(str))

    8)调用相关

    ①callable  判断一个对象,是否是可调用的

    #变量是不可被调用的

    a = 10
    print(callable(a))
    输出:
    False
    View Code

    #函数是可以被调用的

    def func():
        print("Hello World")
    
    print(callable(func))
    输出:
    True
    View Code

    9)查看内置属性

    ①dir

    print(dir(str))
    10)字符串类型代码的执行
    ①eval  执行字符串类型的代码,并返回最终结果(可动态的执行一些代码);代码必须有返回值,如果没有返回值,一般不用eval
    s = input("请输入a+b:")
    print(eval(s))
    输入输出:
    请输入a+b:10+5+8+20
    43
    View Code

    #可通过eval进行一些简单的计算,复杂的运算无法计算

    s = "100/2"
    print(eval(s))
    输出:
    50.0
    View Code

    #eval无法进行复杂运算(如下代码报错)

    s = "for i in range(10): print(i)"
    print(eval(s))
    View Code
    ②exec 执行字符串类型代码;和eval的区别是,exec没有返回值;但是可以进行复杂运算(让用户编码时,可用到;用于执行用户的代码)
    #exec没有返回值
    s = "100/2"
    a = exec(s)
    print(a)
    输出:
    None
    View Code
    #exec可进行复杂运算
    s = "for i in range(10): print(i)"
    print(exec(s))
    输出:
    0
    19
    View Code

    #还可通过exec去执行一个函数

    exec("""
    def func():
        print("阿狸")
    func()
    """)
    输出:
    阿狸
    View Code
    ③complie 将一个字符串编译为字节代码(程序最终实际运行的就是字节码),然后通过exec语句来执行或者eval()进行使用
    #comlpe参数说明
    参数说明: 
    1. resource 要执⾏的代码, 动态代码⽚段 
    2. ⽂件名, 代码存放的⽂件名, 当传⼊了第⼀个参数的时候, 这个参数给空就可以了 
    3. 模式, 取值有3个, 
    ①exec: ⼀般放⼀些流程语句的时候 
    ②eval: resource只存放⼀个求值表达式. 
    ③single: resource存放的代码有交互的时候. mode应为single 
    

     #不需要返回值的代码,参数为exec 

    code1 = "for i in range(10): print(i)"
    c1 = compile(code1, "", mode="exec")  #compile并不会执行代码,只是编译代码
    exec(c1)      #编译完成后,通过exec执行代码
    输出:
    0
    1
    .
    9
    View Code

    注:当代码不想被别人看到时,可以先通过compile编译出来;编译完成之后的程序执行非常块

    #需要返回值的代码,返回值为eval

    code2 = "1+2+3"
    c2 = compile(code2, "", mode="eval")
    a = eval(c2)
    print(a)
    
    输出:
    
    6
    View Code

    #对于代码中有用户交互的代码,模式使用single

    code3 = "name = input('请输入名字:')"
    c3 = compile(code3, "", mode="single")
    exec(c3)
    print(name)
    输出:
    请输入名字:阿狸
    阿狸
    View Code

    11)基础数据类型相关

    #数据类型

    ①bool 布尔

    ②int  整数

    ③float 浮点数

    ④complex 复数

    #进制转换

    ①bin  把一个十进制数转换为二进制数

    ②hex 把一个十进制数转换为十六进制数

    ③oct把一个十进制数转换为八进制数

    #数学运算

    ①abs()  求绝对值

    ②divmode() 返回商和余数

    print(divmod(20,3))
    输出:
    (6, 2)
    View Code

    ③round()  四舍五入

    ④pow(a,b) 求a的b次幂,如果有三个参数。则求完幂后对第三个数取余

    print(pow(2,3))
    print(pow(2,3,3))
    输出:
    8
    2
    View Code

    ⑤sum()    求和

    print(sum([1,2,3,4,5]))
    输出:
    15
    View Code

    ⑥min() 求最小值

    ⑦max()   求最大值

    12)和数据结构相关

    #序列:列表和元组

    ①list  将其他数据类型转化为列表;把生成器转换为列表

    ②tuple…. 元组

    #序列:相关内置函数

    ①reversed() 将一个序列翻转,返回翻转序列的迭代器;不会改变原列表,而是返回一个迭代器

    lst = ["九尾妖狐","阿狸","灵魂突袭"]
    lst_new = reversed(lst)
    print(lst_new)
    print(list(lst_new))
    输出:
    <list_reverseiterator object at 0x000001E1856C5EB8>
    ['灵魂突袭', '阿狸', '九尾妖狐']
    View Code

    ②slice  列表的切片

    lst = [1,2,3,4,5,6,7]
    print(lst[1:3:1])
    s = slice(1,3,1)
    print(lst[s])
    输出:
    [2, 3]
    [2, 3]
    View Code

    #字符串

    ①str

    ②format 与具体数据相关,用于计算各种小数,精度数等

    # 字符串
    print(format('test', '<20')) # 左对⻬
    print(format('test', '>20')) # 右对⻬
    print(format('test', '^20')) # 居中
    # 数值
    print(format(3, 'b')) # ⼆进制
    print(format(97, 'c')) # 转换成unicode字符
    print(format(11, 'd')) # ⼗进制
    print(format(11, 'o')) # ⼋进制
    print(format(11, 'x')) # ⼗六进制(⼩写字⺟)
    print(format(11, 'X')) # ⼗六进制(⼤写字⺟)
    print(format(11, 'n')) # 和d⼀样
    print(format(11)) # 和d⼀样
    # 浮点数
    print(format(123456789, 'e')) # 科学计数法. 默认保留6位⼩数
    print(format(123456789, '0.2e')) # 科学计数法. 保留2位⼩数(⼩写)
    print(format(123456789, '0.2E')) # 科学计数法. 保留2位⼩数(⼤写)
    print(format(1.23456789, 'f')) # ⼩数点计数法. 保留6位⼩数
    print(format(1.23456789, '0.2f')) # ⼩数点计数法. 保留2位⼩数
    print(format(1.23456789, '0.10f')) # ⼩数点计数法. 保留10位⼩数
    print(format(1.23456789e+10000, 'F')) # ⼩数点计数法.,无穷大显示INF
    输出:
    test                
                    test
            test        
    11
    a
    11
    13
    b
    B
    11
    11
    1.234568e+08
    1.23e+08
    1.23E+08
    1.234568
    1.23
    1.2345678900
    INF
    View Code

    ③bytes    把字符串直接转化为bytes类型

    #字符编码的转化

    s = "史迪仔很可爱"
    a = s.encode("utf-8")
    print(a)
    print(a.decode("utf-8"))
    输出:
    b'xe5x8fxb2xe8xbfxaaxe4xbbx94xe5xbex88xe5x8fxafxe7x88xb1'
    史迪仔很可爱
    View Code

    #bytes可直接完成转化,结果是一样的

    bs = bytes("史迪仔很可爱",encoding="utf-8")   #把字符串编码成utf-8
    print(bs)
    输出:
    b'xe5x8fxb2xe8xbfxaaxe4xbbx94xe5xbex88xe5x8fxafxe7x88xb1'
    View Code

    ④bytearry       返回一个字节数组,并且这个数字中的元素是可变的,并且每个元素的值的范围是[0,256)

    ret = bytearray("Lop",encoding="utf-8")
    print(ret[0])
    print(ret)
    输出:
    76
    bytearray(b'Lop')
    View Code

    ⑤memoryview  查看内存

    ⑥ord        返回字符在编码表中的位置(只能是单个字符)

    print(ord("a"))
    print(ord(""))  #中字在编码表中的位置
    输出:
    97
    20013
    View Code

    ⑦chr        通过字符编码,返回是哪个字符

    print(chr(65))
    print(chr(20013))  
    输出:
    A
    中
    View Code

    ⑧ascii      可字符是否在ascii表中,若在表中,直接返回本身

    print(ascii("a"))
    print(ascii(""))
    输出:
    'a'
    'u4e2d'
    View Code

    ⑨repr 原因输出,过滤掉转义字符( ),但是不管%

    name = "%s就是
    LOL " % "英雄联盟"
    print(name)
    print(repr(name))
    输出:
    英雄联盟就是
    LOL 
    '英雄联盟就是
    LOL '
    View Code

    #数据集合:字典

    ①dict 

    #数据集合:集合

    ①set        set集合

    ②frozenset  不可变的集合

    #相关内置函数

    ①len

    ②sorted

    ③enumerate  把列表中 的索引和元素一起获取

    lst = ["英雄联盟","地下城","CF","QQ飞车"]
    for index,values in enumerate(lst):
        print(index,values)
    输出:
    0 英雄联盟
    1 地下城
    2 CF
    3 QQ飞车
    View Code

    #索引默认是从0开始,可以进行修改

    lst = ["英雄联盟","地下城","CF","QQ飞车"]
    for index,values in enumerate(lst,1):
        print(index,values)
    输出:
    1 英雄联盟
    2 地下城
    3 CF
    4 QQ飞车
    View Code

    ④all  可迭代对象中全部都是True,则返回True(相当于and)

    print(all([1,2,True,0]))
    print(any([1,'',0]))
    输出:
    False
    True
    View Code

    ⑤any  可迭代对象中有一个是True,则返回True(相当于or)

    ⑥zip

    hero = ["九尾妖狐","远古巫灵","惩戒之箭","无双剑姬"]
    name = ["阿狸","泽拉斯","维鲁斯","菲奥娜"]
    skill = ["灵魂突袭","奥数仪式","腐败锁链"]  #该列表少一个,所以最终输出也少一个
    for i in zip(hero,name,skill):
        print(i)
    输出:
    ('九尾妖狐', '阿狸', '灵魂突袭')
    ('远古巫灵', '泽拉斯', '奥数仪式')
    ('惩戒之箭', '维鲁斯', '腐败锁链')
    View Code

    ⑦fiter  过滤

    ⑧map  会根据提供的函数对指定序列做映射(lamda)

  • 相关阅读:
    【Linux】项目部署
    【架构师之路】【MQ】消息队列
    【数据库】【Python】mysql
    【算法】【Python】找出字符串中重复出现的字符 并求出重复次数 且根据重复次数从大到小排列
    【Python】排序 按照list中的字典的某key排序
    Kettle Post请求webservice
    python+pytest+allure接口自动化测试框架
    Python+unittest+requests+htmlTestRunner+excel完整的接口自动化框架
    python实现栈的基本操作
    展示博客园顶部的随笔、文章、评论、阅读量统计数据
  • 原文地址:https://www.cnblogs.com/piaolaipiaoqu/p/13853323.html
Copyright © 2020-2023  润新知