欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

python的函数式编程玩法+年末小感

发布时间:2025/6/15 python 38 豆豆
生活随笔 收集整理的这篇文章主要介绍了 python的函数式编程玩法+年末小感 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

从小老师教编程语言就告诉分两种:面向过程和面向对象,正如同小学电脑课面对的是win95,仿佛世界上windows就是操作系统的别名,如今还是这样,高校的计算机中心都是windows,所以linux是要自己搞起,函数式编程也是要自己搞起的~不为学分不为奖学金不为工资只是追随着自己的兴趣,这才是最开心的哈~

        python有一大优点,就是既可以面向对象也可以面向过程还可以函数式搞起,因此想体验函数式编程的乐趣不用换erlangh或scheme。函数式编程的特点:

1. 变量不可变;

2. 闭包性;


        按照函数式编程的特点,一个函数只接受输入并产生输出,不会改变外部变量的值也不会用到外部变量的值。也正因为这样,函数式编程一个函数只做一件事儿,方便模块化,而且代码量要少一些。


1.lambda

lambda是匿名函数,没有函数名,在闭包里和map reduce中很好用。下面是求两数乘积的函数:

[python] view plaincopy
  • >>>func=lambda x,y:x*y  
  • >>>func(3,4)  
  • 12  

  • 2.map

    map函数是对一个序列的每个项依次执行函数,下面是对一个序列每个项都乘以2:

    [python] view plaincopy
  • >>> a=map(lambda x:x*2,[1,2,3])  
  • >>> list(a)  
  • [246]  

  • 3.reduce

    reduce函数是对一个序列的每个项迭代调用函数,下面是求3的阶乘:

    [python] view plaincopy
  • >>> functools.reduce(lambda x,y:x*y,range(1,4))  
  • 6  

  •         好了,这就是python函数式编程常用的几个函数,现在用一个求n的阶乘的例子对比一下函数式编程和面向过程的编程的区别:

    [python] view plaincopy
  • >>> def func(n):  
  • ...     if n==1:  
  • ...             return 1  
  • ...     return n*func(n-1)  
  • ...   
  • >>> func(4)  
  • 24  
  •   
  • >>> g=lambda n:functools.reduce(lambda x,y:x*y,range(1,n+1))  
  • >>> g(4)  
  • 24  

  •         非常简洁干净~然后再看一下函数式编程的闭包:

    [python] view plaincopy
  • >>> def funA():  
  • ...     x=0  
  • ...     def funB():  
  • ...             nonlocal x  
  • ...             x+=1  
  • ...             print(x)  
  • ...     return funB  
  • ...   
  • >>> a=funA()  
  • >>> a()  
  • 1  
  • >>> a()  
  • 2  
  • >>> a()  
  • 3  

  •         闭包就是函数中又定义函数,里面的函数可以使用外部作用域内的变量,但不是全局变量,所以一次创建外部函数,则多次调用内部函数时外部作用域内的变量还是有效的;多次运行外部函数,则会重新创建闭包,原来外部变量的值也不会受到影响,如上例可以实现每次调用内部函数是的外部变量+1操作。这里说一下作用域的事儿,原来的python2只有全局作用域和局部作用域,python3新增的nonlocal作用域就是专门针对闭包的,nonlocal声明的变量只能访问外部作用域的变量,不能访问全局作用域的变量,这样就不用全局变量搞来搞去错都不知道哪里出的了。

            这篇文章写完了,在2013的最后祝自己和大家新年愉快,为兴趣而活~哈哈

    《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

    总结

    以上是生活随笔为你收集整理的python的函数式编程玩法+年末小感的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。