`
linvar
  • 浏览: 254221 次
  • 性别: Icon_minigender_1
  • 来自: 未定
社区版块
存档分类
最新评论

python2.x学习笔记(13) -- 函数和函数式编程

阅读更多
1.  关键字参数的概念仅仅针对函数的调用。这种理念是让调用者通过函数调用中的参数名字来区分参数。这样规范允许参数缺失或者不按顺序,因为解释器能通过给出的关键字来匹配参数的值。
>>>net_conn(port=8080, host='chino')

2. 默认参数就是声明了默认值的参数。因为给参数赋予了默认值,所以, 在函数调用时,不向该
参数传入值也是允许的。

3. Python 同样允许程序员执行一个没有显式定义参数的函数,相应的方法是通过一个把元组(非关键字参数)或字典(关键字参数)作为参数组传递给函数。
基本上,你可以将所有参数放进一个元组或者字典中,仅仅用这些装有参数的容器来调用一个函数,而不必显式地将它们放在函数调用中:
  func(*tuple_grp_nonkw_args, **dict_grp_kw_args)

4. 实际上,你也可以给出形参!这些参数包括标准的位置参数和关键字参数,所以在 python 中允许的函数调用的完整语法为:
  func(positional_args, keyword_args,
  *tuple_grp_nonkw_args, **dict_grp_kw_args)
  该语法中的所有的参数都是可选的---从参数传递到函数的过程来看,在单独的函数调用时,每个参数都是独立的。

5. 函数是用 def 语句来创建的,语法如下:
def function_name(arguments):
"function_documentation_string"
function_body_suite

6. 内部/内嵌函数
最明显的创造内部函数的方法是在外部函数的定义体内定义函数(用 def 关键字)
内部函数一个有趣的方面在于整个函数体都在外部函数的作用域(即是你可以访问一个对象的
区域;稍后会有更多关于作用域的介绍)之内。如果没有任何对 bar()的外部引用,那么除了在函数体内,任何地方都不能对其进行调用.

7. *函数(与方法)装饰器
@decorator(dec_opt_args)
def func2Bdecorated(func_opt_args):

@deco1(deco_arg)
@deco2
def func(): pass
This is equivalent to:这等价于:
func = deco1(deco_arg)(deco2(func))

8.现在我们知道装饰器实际就是函数。我们也知道他们接受函数对象。
从本质上看,这些特征引入了 java 开发者称呼之为 AOP                      (Aspect Oriented Programming,面向方面编程)的概念。
你可以考虑在装饰器中置入通用功能的代码来降低程序复杂度。例如,可以用装饰器来:
        引入日志
        增加计时逻辑来检测性能
        给函数加入事务的能力

9. 可变长度的参数
  可变长的参数元组必须在位置和默认参数之后,带元组(或者非关键字可变长参数)的函数普
遍的语法如下:
  def function_name([formal_args,] *vargs_tuple):
  "function_documentation_string"
  function_body_suite

这给出使用了变量参数字典来应对额外关键字参数的函数定义的语法:
def function_name([formal_args,][*vargst,] **vargsd):
function_documentation_string function_body_suite

10. 匿名函数与 lambda
一个完整的 lambda“语句”代表了一个表达式,这个表达式的定义体
必须和声明放在同一行。我们现在来演示下匿名函数的语法:
  lambda [arg1[, arg2, ... argN]]: expression
   参数是可选的,如果使用的参数话,参数通常也是表达式的一部分。
lambda 表达式返回可调用的函数对象。

11. 函数式编程的内建函数     
apply(func[, nkw][, kw])   
用可选的参数来调用 func,nkw 为非关键字参数,kw关                            键字参数;返回值是函数调用的返回值。
filter(func, seq)        
调用一个布尔函数 func 来迭代遍历每个 seq 中的元素;
返回一个使 func 返回值为 ture 的元素的序列。
map(func, seq1[,seq2...])
将函数 func 作用于给定序列(s)的每个元素,
并用一个列表来提供返回值;如果 func 为 None,
func 表现为一个身份函数,返回一个含有每个序列中元素集合的 n 个元组的列表。
reduce(func, seq[, init])
将二元函数作用于 seq 序列的元素,每次携带一对(先前的结果以及下一个序列元素),连续的将现有的结果和下雨给值作用在获得的随后的结果上,最后减少我们的序列为一个单一的返回值;如果初始值 init 给定,第一个比较会是 init 和第一个序列元素而不是序列的头两个元素。













分享到:
评论

相关推荐

    python学习笔记-函数式编程-20200310

    文章目录函数式编程高阶函数(Higher-order function)map/reducefilter用filter求素数exercisesorted-排序算法exercise返回函数函数作为返回值闭包exercise匿名函数erercise小结装饰器定义使用示例exercise小结偏...

    全国计算机等级考试二级python的学习笔记

    全国计算机等级考试二级Python学习笔记可以从以下几个方面进行总结: 1. Python基础知识 - Python语法基础:变量、数据类型、运算符、流程控制语句等。 - Python常用内置数据结构:列表、元组、字典、集合的定义、...

    (完整版)Python基础学习笔记.docx

    (完整版)Python基础学习笔记 (完整版)Python基础学习笔记全文共69页,当前为第1页。(完整版)Python基础学习笔记全文共69页,当前为第1页。Python 基础学习笔记 (完整版)Python基础学习笔记全文共69页,当前为第1页。...

    python学习笔记-王纯业

    以下是一个Python学习笔记的大纲,涵盖了从基础到进阶的内容。你可以根据自己的学习进度和理解情况,逐步填充和完善这个大纲。 Python学习笔记大纲 一、Python基础 Python简介 Python的历史 Python的特点和应用...

    Python自学笔记 Python核心编程第二版学习笔记 很详细的学习笔记 建议收藏 共148页.pdf

    十、 函数和函数式编程(chapter11) 68 十一、 模块(chapter12) 77 十二、 面向对象编程(chapter13) 83 十三、 执行环境(chapter14) 106 十四、 正则表达式(chapter15) 119 十五、 网络编程(chapter16) 124 十六、 ...

    Python 难点重点学习笔记

    Python学习过程中,遇到的python难点、重点问题的学习笔记,以及一些有助于理解的好的内容。包括:list、tupe、dict、set区别、特点,用法;高级特性,包括切片、列表生成式,生成器、迭代器,函数式编程,包括高级...

    python个人学习笔记

    3. 可扩展性好:Python支持多种编程范式,包括面向对象、函数式、过程式等,同时也支持C/C++扩展,可以方便地与其他语言进行交互。 4. 库丰富:Python拥有丰富的标准库和第三方库,可以满足各种需求,如数据处理、...

    【D.SUN的笔记】Python编程基础——快速学习

    本文是学习笔记,针对学习思路快速检索。 Python3.7.2 下载 链接 window系统(64位) https://www.python.org/ftp/python/3.7.2/python-3.7.2-amd64.exe window系统(32位) ...

    Python小白到大牛-视频笔记

    函数式编程;面向对象编程;异常处理;常用模块;正则表达式;文件操作与管理;数据交换格式;数据库编程;网络编程;wxPython图形用户界面编程;Python多线程编程; 项目实战1:网络爬 虫与抓取股票数据; 项目实战...

    python爬虫笔记.zip

    高级特性:Python支持面向对象编程、函数式编程等高级特性,使得代码更加模块化和可重用。 广泛的库和框架:Python拥有丰富的第三方库和框架,可以快速开发各种应用。 跨平台性:Python可以在多个操作系统上运行,...

    Python自学笔记-1

    如果你从未有过编程经验,无论你是想将编程作为业余爱好,还是只想体验编程思维,或者是想以此为开端今后从事软件开发工作,从 Python 入手学习编程都是个不错的选择。 对于新手而言 Python 的优势有: 上手容易 第...

    《Python从小白到大牛》思维导图.html

    函数式编程;面向对象编程;异常处理;常用模块;正则表达式;文件操作与管理;数据交换格式;数据库编程;网络编程;wxPython图形用户界面编程;Python多线程编程; 项目实战1:网络爬 虫与抓取股票数据; 项目实战...

    欧拉公式求圆周率的matlab代码-Python-Study:Python,robotframework,docker笔记和练习

    欧拉公式求圆周率的matlab代码 Python Study 摘要:此项目包括 Python, robotframework,docker,自动化测试,的学习笔记和demo。大部分代码代用py3.6+...学习map、reduce、filter等函数,函数式编程 装饰器 设计模式

    leetcode中国-Pandora.Wiki:Pandora.wiki基于机器学习,以及神经网络和深度学习,在计算机视觉自然语言处理以及AI

    C1.1python核心编程 第一部分 基础知识 - Chapter1 算法入门 - Chapter2 函数的增长 - Chapter3 递归式 Chapter4 概率分析和随机算法 概率分析 第二部分 排序和顺序统计学 第三部分 数据结构 第四部分 高级设计和...

    Python学习笔记 day5 常用模块

    类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 ....

    各种数据科学脚本:各种编码脚本和注释,涉及以下方面:数据类型,面向对象的编程(OOP),功能编程,内置函数,算法和数据结构,单元测试,虚拟环境和数学Python机器学习

    展示了使用Python进行函数式编程的几个概念,例如:* args和** kwargs,迭代器,生成器,修饰器,列表推导和内置函数。通过单元测试解决问题。 大多数问题任务都来自,其中一些任务也来自 。如何设置虚拟环境并生成...

    谷歌师兄的leetcode刷题笔记-learn-coding:通过交互式编码练习学习Python编码!在JupyterNotebooks中制造

    本课程从数据类型和变量的基础知识到更复杂的主题,如函数式与面向对象编程。 本课程的大部分内容将使用 Python 3.8 作为示例。 章末还有习题尝试,下一章末有习题答案 以下是笔记本的 Google Colab 的快速链接 章节...

    Python 错误和异常小结

    事先说明哦,这不是一篇关于Python异常的全面介绍的文章,这只是在学习Python异常后的一篇笔记式的记录和小结性质的文章。什么?你还不知道什么是异常,额… 1.Python异常类 Python是面向对象语言,所以程序抛出的...

    python教程(1) (基础篇)

    零基础带大家学习python编程语言采用windows+pycharm教学,python解释器版本为python3.7,macos和linux提供环境搭建文档课程所有笔记都在语雀笔记上内容涉及python变量,编码,数据类型,分支语句,循环语句高级数据类型,...

Global site tag (gtag.js) - Google Analytics