`
linvar
  • 浏览: 257583 次
  • 性别: 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学习笔记--皮大庆.pdf.zip

    10. **函数式编程**:Python也支持函数式编程特性,如高阶函数、闭包、装饰器、生成器等,这些可以帮助编写简洁高效的代码。 11. **Python标准库**:Python的标准库非常丰富,包括操作系统接口、网络通信、XML处理...

    Anaconda3-2024.02-1-Windows-x86-64.exe.rar

    Anaconda是一款广泛应用于数据科学和机器学习领域的开源平台,它为Python编程语言提供了一个全面的环境管理工具。Anaconda3-2024.02-1-Windows-x86_64.exe是Anaconda针对64位Windows操作系统的一个特定版本,发布于...

    Python 学习笔记.pdf

    这份学习笔记涵盖了Python的基本概念、数据类型、控制结构、函数、模块与包、面向对象编程等重要内容。下面将对这些知识点进行详细的解读。 ### 1. Python简介 - **Python** 是一种高级编程语言,因其简洁易读的...

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

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

    02-python-判断语句-循环-列表推导式-函数

    在这个"02-python-判断语句-循环-列表推导式-函数"的学习笔记中,我们将深入探讨Python中的四个核心概念:判断语句、循环、列表推导式以及函数。 **1. 判断语句** 在Python中,我们使用`if`、`elif`(else if)和`...

    Anaconda3-2020.11-Windows-x86_64.exe.zip

    Anaconda是广受欢迎的数据科学平台,它包含了Python编程语言以及一系列用于数据分析、机器学习和科学计算的库。这个"Anaconda3-2020.11-Windows-x86_64.exe.zip"文件是Anaconda针对64位Windows系统的2020.11版本的...

    python高阶函数心得笔记,python高阶函数知识.doc

    在 Python 中,我们可以使用函数式编程来编写更加简洁和高效的代码。 10. 高阶函数的应用 高阶函数的应用场景非常广泛,例如,在数据处理、算法实现、Web 开发等领域都可以使用高阶函数来简化代码和提高效率。 高...

    Python 学习笔记 - v1.0.pdf

    4. **函数**:详细阐述了函数的定义、调用,参数传递,以及函数式编程的概念,如高阶函数和闭包。 5. **迭代器**:讲解了Python中的迭代原理,包括for循环、生成器和迭代器协议。 6. **模块**:介绍了如何组织代码,...

    Python学习笔记.pdf

    【Python学习笔记】 Python是一种高级编程语言,以其简洁明了的语法和强大的功能著称。它的设计理念强调代码的可读性和简洁性,如"Beautiful is better than ugly"、"Explicit is better than implicit"等原则。...

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

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

    python基础教程-学习笔记充电时刻-模块共13页.p

    Python支持函数式编程特性,如高阶函数(接受函数作为参数或返回函数的函数)和闭包。 6. **类与对象(Classes and Objects)**:Python是面向对象的语言,类是创建对象的模板,而对象是类的实例。类定义了对象的...

    Python-基础学习笔记.docx

    Python自1990年由Guido创建,发展至今分为Python 2.x和Python 3.x两个主要版本。尽管Python 2.x已不再更新,但Python 3.x已成为主流,具有简洁的语法、跨平台的特性,广泛应用在科学计算、Web开发、数据分析等领域。...

    《强烈推荐》Python学习笔记--皮大庆

    在这一段文字中,我们看到了Python学习笔记的概览和一些关于Python语言的基本信息。首先,皮大庆作为作者,他的学习笔记是基于《How to think like a computer scientist》这本书编写的,非常适合初学者入门,也是...

    Python笔记.zip

    8. **函数式编程**: - 高阶函数:map()、filter()、reduce()等。 - lambda表达式和匿名函数。 - 列表推导式和生成器表达式。 9. **正则表达式**: - 正则表达式的语法和常见用法,用于文本匹配和处理。 10. *...

    王纯业版《Python学习笔记》.pdf

    从给定的文件信息来看,这是一份关于Python编程语言的学习笔记,由王纯业编著,主要覆盖了Python的基础语法、数据类型、控制结构、函数、模块与包、类和对象、异常处理以及正则表达式等内容。下面将根据笔记的目录...

    Python笔记 ,python笔记全,Python源码.zip

    6. **函数式编程**:Python支持函数式编程特性,如高阶函数、闭包、装饰器等。 7. **网络编程**:Python可以用于构建网络应用,如HTTP服务器、客户端,套接字编程等。 8. **正则表达式**:在Python中,re模块提供...

    python基础教程(第三版)学习笔记.pdf

    Python 2.x和3.x是两个独立的版本,有着显著的区别,例如3.x版本不再支持print作为语句而是函数,同时增加了许多新特性。 `__future__`模块是Python 2.x中的一个特殊模块,允许开发者在2.x版本中使用部分3.x的新...

Global site tag (gtag.js) - Google Analytics