zoukankan      html  css  js  c++  java
  • python内置函数一

    ⼀. 本节主要内容:
    1. 内置函数
    什么是内置函数? 就是python给你提供的. 拿来直接⽤的函数, 比如print., input等等. 截⽌
    到python版本3.6.2 python⼀共提供了68个内置函数. 他们就是python直接提供给我们的.

    作用域相关:

      locals()返回当前作用域中的名字

      globas()返回全局作用域中的名字

    迭代器相关:

      range()生成数据

      next()迭代器向下执行一次,内部实际使用了__next__()方法返回迭代器的下一个项目

      iter()获取迭代器,内部实际使用的是__iter_()方法来获取迭代器

    字符串类型代码的执行

      eval()执行字符串类型的代码。并返回最终结果

    print(eval("2+2")) # 4
    n = 8
    print(eval("2+n")) # 10
    def func():
         print(666)
    eval("func()") # 666
    

      exec()执行字符串类型的代码

    exec("""
    for i in range(10):
         print(i)
    """)
    exec("""
    def func():
         print("我是周杰伦")
    func()
    """)
    

      compile()将字符串类型的代码编译。代码对象能够通过exec语句来执行或者 eval()进行

      求值

      参数说明:

        1.resource 要执行的代码,动态代码片段

        2.文件名,代码存放的文件名,当传入了第一个参数的时候,这个参数给空就可以了

        3.模式,取值有三个:

          1.exec:一般放一些流程语句的时候使用

          2.eval:resource之存放一个求值表达式。

          3.single:resource存放的代码有交互的时候,使用

    code1 = "for i in range(10): print(i)"
    c1 = compile(code1, "", mode="exec")
    exec(c1)
    
    code2 = "1+2+3"
    c2 = compile(code2, "", mode="eval")
    a = eval(c2)
    print(a)
    
    code3 = "name = input('请输⼊你的名字:')"
    c3 = compile(code3, "", mode="single")
    exec(c3)
    print(name)
    

      有返回值的字符串形式的代码用eval(),没有返回值的字符串形式的代码用exec(),一般很少

      用到compile()

      输入和输出相关:
        input()获取用户输入的内容

        print()打印输出

      内存相关:

        hash()获取对象的哈希值(int,str,bool,tuple)

        id()获取到对象的内存地址

      文件操作相关:
        open()用于打开一个文件,创建一个文件句柄

      模块相关:

        __import__()用于动态加载类和函数

      帮助:

        help()函数用于查看函数或模块用途的详细说明

      调用相关:

        callable()用于检查一个对象是否是可调用。如果返回True,object有可能调用失败,但如果

      返回False,那调用绝对不会成功。

      查看内置属性:
        敌人()查看对象的内置属性,方法。访问的是对象中的__dir__()方法

      基础数据类型相关:

        数字相关:

          bool()将给定的数据转换成bool值。如果不给值。返回False

          int()    将给定的数据转换成int值,如果不给值,返回0

          float()  将给定的数据转换成float值。也就是小数

          complex()创建一个复数,第一个参数为实部,第二个参数为虚部。或者第一个参数直

          接用字符串来描述复数

      进制转换:

        bin()将给的参数转换成二进制

        otc()将给的参数转换成八进制

        hex()将给的参数转换成十六进制

      数学运算:
        abs()返回绝对值

        divmode()返回商和余数

        round()四舍五入

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

        sum()求和

        min()求最小值

        max()求最大值

      和数据结构相关:

        列表和元组:

          list() 将一个可迭代对象转换成列表

          tuple()将一个可迭代对象转换成元组

          reversed() 将一个序列翻转,返回翻转序列的迭代器

          slice()列表的切片

    st = "⼤家好, 我是麻花藤"
    s = slice(1, 5, 2)
    print(st[s])
    

      字符串相关:

        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')) # ⼩数点计数法.
    

      

      bytes()把字符串转化成bytes类型

    s = "你好"
    bs = s.encode("UTF-8")
    print(bs)
    s1 = bs.decode("UTF-8")
    print(s1)
    bs = bytes(s, encoding="utf-8") # 把字符串编码成UTF-8
    print(bs)
    

      

      bytearray()返回一个新字节数组。这个数字里的元素是可变的,并且每个元素的值的范围

      是 [0,256)

    ret = bytearray('alex',encoding='utf-8')
    print(ret[0])
    print(ret)
    

      

      memoryview()查看bytes在内存中的情况

    # 查看bytes字节在内存中的情况
    s = memoryview("麻花藤".encode("utf-8"))
    print(s)
    

      

      ord()输入字符找带字符编码的位置

      chr()输入位置数字找出对应的字符

      ascii()是ascii码中的返回值,不是就返回u..

    # 找到对应字符的编码位置
    print(ord('a'))
    print(ord('中'))
    
    # 找到对应编码位置的字符
    print(chr(97))
    print(chr(20013))
    
    # 在ascii中就返回这个值. 如果不在就返回u...
    print(ascii('a'))
    print(ascii('好'))
    

      

      rep()返回一个对象的string的形式

    # repr 就是原封不动的输出, 引号和转义字符都不起作⽤
    print(repr('⼤家好,
     	我叫周杰伦'))
    print('⼤家好我叫周杰伦')
    # %r 原封不动的写出来
    name = 'taibai'
    print('我叫%r' % name)
    

      数据集合:
        dict()创建一个字典

        set()创建一个集合

        frozenset()创建一个冻结的集合,冻结的集合不能进行添加和删除操作

      其他相关:

        len() 返回一个对象中的元素的个数

        sorted() 对可迭代对象进行排序操作,可以配合lamda()

        enumerate()获取集合的枚举对象

    lst = ["alex", "wusir", "taibai"]
    for index, el in enumerate(lst):
         print(str(index)+"==>"+el)
    

      all() 可迭代对象中全部是True,结果才是True

      any()可迭代对象中有一个是True,结果是True

    print(all([1,2,True,0]))
    print(any([1,'',0]))
    

      zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元祖组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。

    l1 = [1,2,3,]
    l2 = ['a','b','c',5]
    l3 = ('*','**',(1,2,3))
    for i in zip(l1,l2,l3):
         print(i)
    

      filter() 过滤,也可以配合lamda使用

      map()会根据提供的函数对指定序列做映射,也可以配合lamda使用

    二、lamda函数

      lamda匿名函数

      为了解决一些简单的需求而设计的一句话函数

    # 计算n的n次⽅
    def func(n):
         return n**n
    print(func(10))
    
    f = lambda n: n**n
    print(f(10))
    

      lambda表⽰的是匿名函数. 不需要⽤def来声明, ⼀句话就可以声明出⼀个函数

    语法:

      函数名 = lambda 参数: 返回值

    注意:

      1. 函数的参数可以有多个. 多个参数之间⽤逗号隔开
      2. 匿名函数不管多复杂. 只能写⼀⾏, 且逻辑结束后直接返回数据
      3. 返回值和正常的函数⼀样, 可以是任意数据类型

      匿名函数并不是说⼀定没有名字. 这⾥前⾯的变量就是⼀个函数名. 说他是匿名原因是我们通
      过__name__查看的时候是没有名字的. 统⼀都叫lambda. 在调⽤的时候没有什么特别之处.
      像正常的函数调⽤即可

    详细讲解sorted()

      排序函数:

      语法: sorted(Iterable, key=None, reverse=False)

          Iterable: 可迭代对象

          key: 排序规则(排序函数), 在sorted内部会将可迭代对象中的每⼀个元素传递给这个函
          数的参数. 根据函数运算的结果进⾏排序

          reverse: 是否是倒叙. True: 倒叙, False: 正序

    lst = [1,5,3,4,6]
    lst2 = sorted(lst)
    print(lst) # 原列表不会改变
    print(lst2) # 返回的新列表是经过排序的
    dic = {1:'A', 3:'C', 2:'B'}
    print(sorted(dic)) # 如果是字典. 则返回排序过后的key
    

      和函数组合使用

    # 根据字符串⻓度进⾏排序
    lst = ["麻花藤", "冈本次郎", "中央情报局", "狐仙"]
    # 计算字符串⻓度
    def func(s):
         return len(s)
    print(sorted(lst, key=func))
    

      和lambda组合使用

    # 根据字符串⻓度进⾏排序
    lst = ["麻花藤", "冈本次郎", "中央情报局", "狐仙"]
    # 计算字符串⻓度
    def func(s):
         return len(s)
    print(sorted(lst, key=lambda s: len(s)))
    lst = [{"id":1, "name":'alex', "age":18},
             {"id":2, "name":'wusir', "age":16},
             {"id":3, "name":'taibai', "age":17}]
    # 按照年龄对学⽣信息进⾏排序
    print(sorted(lst, key=lambda e: e['age']))    
    

    三、filter()详解

      筛选函数

      语法: filter(function. Iterable)

        function: ⽤来筛选的函数. 在filter中会⾃动的把iterable中的元素传递给function. 然后
            根据function返回的True或者False来判断是否保留此项数据

        Iterable: 可迭代对象

    lst = [1,2,3,4,5,6,7]
    ll = filter(lambda x: x%2==0, lst) # 筛选所有的偶数
    print(ll)
    print(list(ll))
    lst = [{"id":1, "name":'alex', "age":18},
             {"id":2, "name":'wusir', "age":16},
             {"id":3, "name":'taibai', "age":17}]
    fl = filter(lambda e: e['age'] > 16, lst) # 筛选年龄⼤于16的数据
    print(list(fl))
    

      

    四、map()详解

      映射函数 

      语法: map(function, iterable) 可以对可迭代对象中的每⼀个元素进⾏映射. 分别取执⾏
      function
      计算列表中每个元素的平⽅ ,返回新列表

    def func(e):
         return e*e
    mp = map(func, [1, 2, 3, 4, 5])
    print(mp)
    print(list(mp))
    

      改写lambda

    print(list(map(lambda x: x * x, [1, 2, 3, 4, 5])))
    

      计算两个列表中相同位置的数据的和

    # 计算两个列表相同位置的数据的和
    lst1 = [1, 2, 3, 4, 5]
    lst2 = [2, 4, 6, 8, 10]
    print(list(map(lambda x, y: x+y, lst1, lst2)))
    

      最后

      附上一个内置函数的思维导图:

      https://www.processon.com/view/link/5c10d5fde4b0fd4819959b0d

      密码:

      5bI2

  • 相关阅读:
    Sql Server 跨服务器连接
    ASCII码与16进制的互相转换(表)
    c#多线程 Invoke方法的使用
    登陆时验证码的制作(asp.net)
    jQ&js给label
    IT行业的一些专业术语
    html div 加边框样式
    分布式技术 memcached
    分布式技术 webservice
    MVC 绑定 下拉框数据
  • 原文地址:https://www.cnblogs.com/guchenxu/p/10110652.html
Copyright © 2011-2022 走看看