zoukankan      html  css  js  c++  java
  • python内置函数与匿名函数

    内置函数就是Python个解释器里自带的函数,不用定义可以直接拿来调用。截止到python版本3.6.2,现在python一共为我们提供了68个内置函数。



    上面的68个函数是按首字母顺序排列的,我们这里按照函数的用途来分为6大类。这里分类介绍他们中重点的几个。

    作用域相关的2个。

    基于字典的形式获取局部变量和全局变量

    globals()——获取全局变量的字典

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

    其他类有12个。

    input() 用户交互函数,输入的内容返回值是str

    print() 输出

    eval() 将字符串类型的代码执行并返回结果,一般用于计算

    exec()将自字符串类型的代码执行,一般用于执行流程语句

    type(o) 返回变量o的数据类型

    hash(o) o是参数,返回一个可hash变量的哈希值,不可hash的变量被hash之后会报错。

    open()  打开一个文件,返回一个文件操作符(文件句柄)

    操作文件的模式有r,w,a,r+,w+,a+ 共6种,每一种方式都可以用二进制的形式操作(rb,wb,ab,rb+,wb+,ab+)

    可以用encoding指定编码.

    dir() 默认查看全局空间内的属性,也接受一个参数,查看这个参数内的方法或变量。

    迭代器生成器相关的有3个。

    range()函数可以生成一个可迭代对象,但不是迭代器,可以通脱for循环来遍历内部元素。

    基础数据类型有38个。

     其中和数字相关的14个

    数字——数据类型相关:bool,int,float,complex

    数字——进制转换相关:bin,oct,hex

    数字——数学运算:abs,divmod,min,max,sum,round,pow

    和数据相关的有24个。

    重点讲zip()、filter()、map()、sorted()

    zip()是拉链函数,依次把两个可迭代对象对应的元素拿出来组成一个元组,它的返回值是个迭代器。

    filter()过滤可迭代对象的,使其符合函数要求。

    map()使可迭代对象经过函数处理后的结果

    sorted()排序,可以指定排序的方式。

    匿名函数的定义方法:

    函数名 = lambda 参数 :返回值
    
    #参数可以有多个,用逗号隔开
    #匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值
    #返回值和正常的函数一样可以是任意数据类型

    我们可以看出,匿名函数并不是真的不能有名字。

    匿名函数的调用和正常的调用也没有什么分别。 就是 函数名(参数) 就可以了~~~

    举3个例子

    #1.下面程序的输出结果是:
    d = lambda p:p*2
    t = lambda p:p*3
    x = 2
    x = d(x)
    x = t(x)
    x = d(x)
    print (x)#24
    #2.现有两元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]
    
    #答案一
    test = lambda t1,t2 :[{i:j} for i,j in zip(t1,t2)]
    print(test(t1,t2))
    #答案二
    print(list(map(lambda t:{t[0]:t[1]},zip(t1,t2))))
    #还可以这样写
    print([{i:j} for i,j in zip(t1,t2)])
    #3.以下代码的输出是什么?请给出答案并解释。
    def multipliers():
        return [lambda x:i*x for i in range(4)]
    print([m(2) for m in multipliers()])  #[6,6,6,6]
    #请修改multipliers的定义来产生期望的结果。
    #修改后的代码:
    def multipliers():
        return (lambda x:i*x for i in range(4))
    print([m(2) for m in multipliers()]) #[1,2,4,6]
  • 相关阅读:
    就这样吧
    搞了个1.0版本,名字和预定的一样改成OIFaQ了
    算了,总结一下教训
    我刚经历了人生中第一次版本回滚,目前感觉良好,请党和人民放心
    这有点爽的
    我决定出1.0的时候改名叫OIFaQ
    换个SSD把D盘弄飞了
    算是交代一下这三天的空白
    构建之法读书笔记03
    构建之法读书笔记02
  • 原文地址:https://www.cnblogs.com/RyanJin/p/8213809.html
Copyright © 2011-2022 走看看