zoukankan      html  css  js  c++  java
  • Python3 函数式编程

    一 函数式编程

    函数式编程是种编程方式,它将电脑运算视为函数的计算;通俗来说就是先用数学逻辑定义一个表达式,然后使用函数来实现这个功能。

    实例(Python3.0+):

    y = 2*x+1  --> 先定义一个数学表达式
    def cal(x):
    	'''
    	说明:使用函数实现上述表达式的功能
    	'''
    	return 2*x+1
    
    # 上述过程就是函数式编程

    如何判断一个函数是否属于函数式编程?

    • 不用变量保存状态(不给变量赋值),不修改变量

    实例(Python3.0+):

    # 非函数式编程
    n = 1
    def cal():
        global n
        n+=1
        return n 
    cal()
    
    # 函数式编程
    n =1 
    def cal(n):
        return n+1
    cal(10)
    

    函数即变量

      在Python编程中,有一种说法:函数即变量,如何体现呢?

    实例(Python3.0+):

    def foo(n):
    	print(n)
    
    def bar(name):
        print('my name is sunwk')
        
    foo(bar) # 把函数bar(也就是bar函数的内存地址)当成变量(参数)传给了foo函数
    
    运行结果:
    >>> <function bar at 0x0000000000FA58C8>

    二 高阶函数

    随着知道的知识多了,接触面广了,也越来越糊涂了,刚开始接触高阶函数,那什么是高级函数啊,先搞几个例子看看吧

    实例(Python3.0+):

    def foo():
        print('from foo')
    
    def bar():
        print('from bar')
        return foo
    
    a = bar()
    print(a())
    
    # 运行结果:
    >>>from bar
    >>>from foo
    >>>None
    
    """
    为什么最后会输出一个None呢,因为print(a()),首先执行a()相对于执行foo(),但是print后,相当于输出foo()的return返回值,foo函数中未定义,所以返回None
    """ 

    高阶函数特性总结:

    1. 函数接收的参数是一个函数名
    2. 返回值中包含函数

    尾递归|尾调用

    • 函数的最后一行调用函数

    实例(Python3.0+):

    # 非尾递归:
    def foo(n):
        print('from foo')
        return foo() + 1
    
    '''
    上述函数可以写成如下形式:
    def foo(n):
        print('from foo')
        f = foo() +1 
        return f
    函数的最后一行调用的不是函数,所以不是尾调用
    '''
    
    # 尾递归
    def foo(n):
        print('from foo')
        return foo()
    

      

  • 相关阅读:
    HashCode的作用
    为什么重写equals一定要重写hashcode?
    java timer 定时器原理
    java内部类作用
    jeesite添加多数据源
    Eclipse之安装Jadclipse插件直接查看class文件
    NIO和IO的主要区别
    sql 语句
    HTTP Error 500.0
    基于.NetCore3.1系列 ——认证授权方案之Swagger加锁
  • 原文地址:https://www.cnblogs.com/lvcm/p/9259688.html
Copyright © 2011-2022 走看看