python函数式编程

Posted 嘉禾世兴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python函数式编程相关的知识,希望对你有一定的参考价值。

No1:

函数式编程:即函数可以作为参数传递,也可以作为返回值

 No2:

map()函数接收两个参数,一个是函数,一个是Iterablemap将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回

No3:

reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

No4:

排序

No5:

函数作为返回值,每个返回值函数式不一样的(应该是对象地址不一样)

No6:

返回闭包时牢记一点:返回函数不要引用任何循环变量,或者后续会发生变化的变量

原因就在于返回的函数引用了循环变量,但它并非立刻执行,所以循环变量都是最后一个值

解决方案

这样f(i)就会立即执行

No7:

匿名函数

 No8:

decorator在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。

@log放到now()函数的定义处,相当于执行了语句:

now = log(now)

3层嵌套的效果是这样的:

now = log(\'execute\')(now)

No9:

偏函数:functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单

 No10:

一个.py文件就称之为一个模块(Module)

每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是它所在的包名

系统自带了sys模块,自己的模块就不可命名为sys.py,否则将无法导入系统自带的sys模块

No11:

模块调用

 

 

#!/usr/bin/env python3
#可以让这个hello.py文件直接在Unix/Linux/Mac上运行
# -*- coding:utf-8 -*-

\' a test module \'
#任何模块代码的第一个字符串都被视为模块的文档注释

__author__ = \'Wang Lei\'

import sys
import greet

def test():
    args = sys.argv
    if len(args)==1:
        print(\'Hello,world\')
    elif len(args)==2:
        print(\'Hello,%s!\' % args[1])
    else:
        print(\'Too many arguments!\')
        
if __name__==\'__main__\':
    #test()
    print(greet.greeting(\'wa\'))

 

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

\' a test module \'

__author__ = \'Wang Lei\'

def _private_1(name):
    return \'Hello,%s\' % name

def _private_2(name):
    return \'Hi,%s\' % name

def greeting(name):
    if len(name)>3:
        return _private_1(name)
    else:
        return _private_2(name)

 运行结果

PS D:\\wanglei\\python> python hello.py
Hi,wa

No12:

安装常用模块

anaclnda地址:https://www.anaconda.com/download/#windows

安装好以后要把anaclnda的路径和其下的scripts路径添加到环境变量即可通过import 引入任何第三方模块

以上是关于python函数式编程的主要内容,如果未能解决你的问题,请参考以下文章

写 Python 代码不可不知的函数式编程技术

函数式编程/命令式编程

python_函数式编程

《On Java 8》中文版 第十三章 函数式编程

python之函数式编程

Python进阶学习——函数式编程