zoukankan      html  css  js  c++  java
  • 函数--内置函数、匿名函数、

    一.内置函数。

    二.匿名函数.

    三、本节部分函数详解.

    一.内置函数。

    作用域相关

     globals()——获取全局变量的字典
     locals()——获取执行本方法所在命名空间内的局部变量的字典

     迭代器相关:

    renge()  生成数据
    next()   迭代器向下执行一次
    iter()    获取迭代器,内部实际使用的是__iter__()方法来获取迭代器

     字符串类型相关:

    eval()  执⾏字符串类型的代码.有返回值
    exec()    执⾏字符串类型的代码,没有返回值
    compile()   将字符串类型的代码变异. 代码对象能够通过exec语句来执⾏或者eval()进⾏求
    值,很少用

     输入输出相关:

    input()  获取用户输入的内容
    print()  打印输出

     内存相关:

    hash()  获取到对象的哈希值(int,str,bool,tuple)
    id()    获取到对象的内存地址

     文件操作相关:

    open()  用于打开一个文件,创建一个文件句柄

     模拟相关:

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

     调用相关:

    callable()  用于检查一个对象是否是可调用的,如果返回True,object有可能调用失败,但如何返回False,那调用绝对不会成功

     查看内置属性:

    dir()    查看对象的内置属性,方法,访问的是对象中的__idr__()方法

    基础数据类型相关:

    数字相关:
            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()    列表的切片
    字符串相关:
            str()            将数据转化成字符串
            format()     与具体数据相关, ⽤于计算各种⼩数, 精算等
    bytes()  把字符串转化成bytes类型
    bytearray()    返回⼀个新字节数组. 这个数字⾥的元素是可变的, 并且每个元素的值得范围是[0,256)
    memoryview()  查看bytes在内存中的情况
    ord()    输入字符找带字符编码的位置
    chr()    输入位置数字找出对应的字符
    ascii()  是ascii码中的返回该值 不是就返回u...
    repr()    返回⼀个对象的string形式,就是原封不动的输出, 引号和转义字符都不起作⽤
    %r  原封不动的写出来   name = 'taibai'  print('我叫%r' % name)
    数据集合:
    dict()  创建一个字典
    set()   创建一个集合
    frozenset()    创建一个冻结的集合,冻结的集合不能进行添加和删除操作
    其他相关:
    len() 返回一个对象中的元素的个数
    sorted()    对可迭代对象进行排序操作
    enumerate()    获取集合的枚举对象
        lst = ["alex","wusir","taibai"]
        for index,el in enumerate(lst):
            print(str(index)+"==>"+el)
    all()  可迭代对象中全部都是True,结果才是True
    any()   可迭代对象中有一个是True,结果就是True
    zip()  函数用于将可迭代的对象作为参数,将对象总对应的元素打包成一个个元组,然后返回有这些元组组成的表,如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同.
    filter()   过滤
    map()   会根据提供的函数对指定序列做映射

    二.匿名函数.

     匿名函数统意的名字是:  lambda

    lambda 参数: 返回值(条件为真情况下返回此值) ,参数

    fn = lambda a,b :a+b  #定义一个很简单的函数,复杂的函数不要用lambda
    ret = fn(3,5)
    print(ret)
    print(func)
    print(fn)  
     
    #使用场景:配合着sorted,map,filter 一起使用

    三、本节部分函数详解。

    sorted(iterable, key=None, reverse=False)    排序函数,默认返回新列表,自己定义排序的规则,参数1为可迭代对象,参数2为比较元素,参数3为排序规则(reverse=True为降序 , reverse=False为升序默认)

    sort()  是应用在list上的方法,list的sort方法返回的是对已经存在的列表进行操作

    lst = [11,5,36,1,27,58]
    s = sorted(lst)  #默认从小到大排序
    print(s)
    
    lst = ["胡一菲", "张伟", "关谷神奇", "曾小贤吕小布", "诺澜"]
    #按照字符串长度排序
    def func(s):
        return len(s)  #返回长度
    执行流程:
    把可迭代对象中的每一项拿出来,作为参数传递给后面key函数.函数返回数字,根据数字进行排序
    s = sorted(lst,ky = func)
    print(s)
    print(sorted(lst,key=lambda s:len(s)))

     eval()  此函数可以把字符串类型的数据还原为执行代码,说白了,就是去掉双引号.

    注意:eval(),在给数据量很大的还原回原类型时,有可能回出现内存溢出现象,所以,特别是在网络传输时尽量用json格式编写和解除,防止溢出.

    用途:可以把读取出来的文件,用此方法还原为字典、列表、元组,方便进行修改,改完后,再用str()强转回字符串,就可以再写进去了,文件修改可以用到

    s = "18+2"
    ret = eval(s) # 执行字符串类型的代码
    print(ret)

    s = "{'name':'alex', 'age':18, 'isMan':False}" # 字符串
    # 把字符串类型的代码还原回字典, 列表, 元组
    ret = eval(s) # 侧重的有返回值
    print(ret)
    print(type(ret))

     exec()    执行字符串类型的代码,说白了,就是把注释或者交互模式的内容直接当作程序来运行,这个比较危险,一般不用

    code = input("请输入你要执行的代码")
    exec(code) # 没有返回值. 想要返回值用eval
    print(code)   # pycharm报错不一定准

     compile  函数编译,把你要执行的代码先预编译.通过exec和eval可以执行我们的代码

    code = '''
    for i in range(10):
        if i % 2 == 0:
            print(i)
    '''
    
    c = compile(code, "", "exec") # 预加载代码
    # exec
    exec(c) # 运行代码
    
    # 可以使用complie写一个编程大赛.

     map() 映射函数,返回一个新列表

    lst = ["篮球", "打打台球", "唱歌", "爬慌山", ""]
    m = map(lambda s: "爱好:"+s , lst)
    print(list(m))
    
    lst = [1,5,78,12,16] # 计算每个数字的平方
    print([i **2 for i in lst])
    m = map(lambda i: i ** 2, lst)
    print(list(m))

    filter 过滤

    lst = ["张无忌", "张翠山", "范冰冰", "金毛狮王", "李冰冰"]
    
    过滤掉姓张的人
    把可迭代对象打开. 把内部元素一个一个的传递给前面的函数. 由这个函数决定此项是否保留
    f = filter(lambda name : not name.startswith(""), lst)
    
    print("__iter__" in dir(f)) # 可迭代对象
    for el in f:
        print(el)
    #filter(function,object) #如果obj是个字典,则迭代这个字典,每次输出一个字典得key给function函数调用,
    filter得返回值是个可迭代的内存地址,用list()或者for才可查看.

    函数__内置函数、匿名函数(相关练习)

  • 相关阅读:
    1_Selenium环境搭建
    python functools
    python 参数注解inspect
    python 堆排序
    python functools
    python 装饰器
    python 柯里化
    python 高阶函数
    python 树
    python 函数销毁
  • 原文地址:https://www.cnblogs.com/lgw1171435560/p/10109701.html
Copyright © 2011-2022 走看看