python20-常用包介绍下

    xiaoxiao2022-07-07  178

    1 函数式编程(FunctionalProgramming)

    基于lambda演算的一种编程方式 程序中只有函数函数可以作为参数,同样可以作为返回值纯函数式编程语言: LISP, Haskell Python函数式编程只是借鉴函数式编程的一些特点,可以理解成一半函数式一半Python需要讲述 高阶函数返回函数匿名函数装饰器偏函数

    1.1 lambda表达式

    函数: 最大程度复用代码 存在问题: 如果函数很小,很短,则会造成啰嗦如果函数被调用次数少,则会造成浪费对于阅读者来说,造成阅读流程的被迫中断 lambda表达式(匿名函数): 一个表达式,函数体相对简单不是一个代码块,仅仅是一个表达式可以有参数,有多个参数也可以,用逗号隔开 # lambda表达式的用法 # 1. 以lambda开头 # 2. 紧跟一定的参数(如果有的话) # 3. 参数后用冒号和表达式主题隔开 # 4. 只是一个表达式,所以,没有return # 计算一个数字的100倍数 # 因为就是一个表达式,所以没有return stm = lambda x: 100 * x print(stm(89)) # 使用上跟函数调用一样 stm2 = lambda x,y,z: x + y*10 + z*100 print(stm2(4,5,6)) ------------------ 8900 654

    1.2 高阶函数

    把函数作为参数使用的函数

    # 函数名称就是一个变量值 a = 100 print(a) # 打印变量值 def funA(): print("funA") print(funA) # 打印变量值 funB = funA # 变量赋值 funB() # 调用函数 --------------- 100 <function funA at 0x00000254D19511E0> funA

    1.3 以上代码得出的结论:

    函数名称是变量funA和funB指向同一片内存,只是名称不一样而已函数名当变量,可被作为参数传入另一个函数(高阶函数)

    1.4 高阶函数

    # 高阶函数举例 # funA是普通函数,返回一个传入数字的100倍数字 def funA(n): return n * 100 # 再写一函数,将传入参数乘以300倍,利用高阶函数 def funB(n): return funA(n) * 3 print(funB(9)) # 写个高阶函数 def funC(n,f): # 此函数是将n扩大3倍 return f(n) * 3 print(funC(9,funA)) # 传入funA为100倍,funC为3倍,相乘为300倍。 # 比较funC和funB,显然funC的写法优于funB def funD(n): return n * 10 # 需求变更,将n放大30倍,此时funB无法实现 print(funC(7,funD)) # 传入funD为10倍,funC为3倍,相乘为30倍。 ---------------------------- 2700 2700 210

    1.4.1 系统高阶-map

    原意是映射,把原集合或列表中,每个元素按一定规则进行操作,结果生成一个新集合或列表map函数系统提供具有映射功能的函数,返回值是一个迭代对象 # map举例 # 需求:原列表,每个元素乘10,并生成新列表 s1 = [i for i in range(10)] print(s1) s2 = [] for i in s1: s2.append(i * 10) print(s2) # 利用map实现 def mulTen(n): return n * 10 s3 = map(mulTen, s1) print(type(s3)) print("-" * 37) print(s3) # map类型是可迭代结构,所以可以使用for遍历 for i in s3: print(i) # 以下列表生成式结果为空,为什么? s4 = [i for i in s3] print(s4)
    最新回复(0)