1. 函数参数-默认参数

  python函数也可以跟C语言一样,在函数的形参中设定默认值。

  >>> def test(flag, port = 8080)

  ... print port,flag

  默认参数可以节省比较多的时间,一般设定都是比较合适的值。

2.函数参数-可变长参数

  有时候可能需要传入的参数是不确定的,这时候可以使用可变长度的参数列表,类似C语言中的varargs参数,python的可变长度参数有2种形式:非关键字的可变长度参数和关键字的可变长度参数。

  非关键字可变长度参数:指参数是元组类型(tuple)。一般参数前面使用*表示。

  

def test(flag, *testtuple):

  print flag

  print testtuple

test(1)

输出:

>>>
1
()

test(1,4,5,6,7)

输出:

>>>
1
(4, 5, 6, 7)

  关键字可变长度参数:指参数是字典类型,一般参数前面使用**表示,具有键-值对。

def test(flag, **testdict):     print flag     print testtuple

test(1)

输出:

>>>
1
{}

3. 函数式编程

  lambda表达式:是一个快速的函数表达方式,必须是在一行,不是代码块。

  >>> f=lambda a,b,c:a+b+c
  >>> f(2,3,5)
  10

  filter函数:对给定的序列进行筛选,如果结果为真,将被添加到一个新的序列中。

  

  >>> def f1(x):

    if x>5:

       return True

    else:   return False

  >>> ls=[1,3,0,-2,5,8,2,56,6,2,9]

  >>> filter(f1,ls)

  [8, 56, 6, 9]

  map函数:对给定的序列调用对应函数,将结果对应到序列的每个位置上,得到一个具有所有返回值的序列。map(func,seq1,seq2...),如果func为空,则相当于zip的功能。

  >>> l1=[0,1,2,3,4,5]
  >>> l2=[2,3,4,5,6,7]
  >>> map(f2,l1,l2)
  [2, 4, 6, 8, 10, 12]

  reduce函数:reduce(func,seq1,seq2...), 即为化简,将上一次迭代的结果与下一个seq序列执行二元func函数。最终获得一个值,化繁为简。

  >>> from functools import reduce

   >>> def f3(x,y):  return x+y

  >>> sum = reduce(f3,(12,3,4))

  >>> print sum

  19

python 基础学习3-函数的更多相关文章

  1. python基础学习2 函数变量与赋值

    学习的第一步,就是通常的输出函数:print() 1.基础主要学习了变量的赋值,变量名可以疑字母.数字.下划线(_)进行命名,但是不能以数字开头 变量的赋值:变量名 = 变量值 2.模块的导入,和调用 ...

  2. python基础学习Day10 函数形参的动态参数、*args **kwargs 命名空间 global 与 nonlocal

    一.函数形参的动态参数 原因:为了拓展,对于实参数量不固定,故需要万能参数,即动态参数, *args   **kwargs # def sum1(*args): # 在函数定义时,在*位置参数,聚合. ...

  3. Python基础学习四 函数

    1.内置函数 Python内置了很多有用的函数,是可以直接调用的. 参考链接:https://docs.python.org/3/library/functions.html 调用函数的时候,如果传入 ...

  4. python基础学习Day11 函数名的应用、闭包、迭代器

    一.函数名的应用 1.函数名就是函数的内存地址 def func(): print(666) func() print(func) #函数的内存地址 2.函数名可以作为变量 def func1(): ...

  5. python基础学习Day9 函数的初识,实参、形参、

    1.函数 def my_len(): l = [,,,,,,] count = for i in l: count += print(count) my_len() 定义的my_len()方法时,其结 ...

  6. Python基础学习之 函数

    阅读目录 第一篇:  函数初识 第二篇:  函数命名空间 作用域 闭包 第三篇:  装饰器 第四篇:  装饰器 面试题错误点 第五篇:  迭代器生成器 第六篇:  生成器进阶 第七篇:  递归 第八篇 ...

  7. python基础学习之函数进阶【匿名函数、作用域关系、闭包、递归】

    匿名函数 lambda的用法: lambda x:x+1 解释,同等于以下函数 def test(x): return x+1 因为没有函数名,所以称为匿名函数 只适用于简易的逻辑,复杂逻辑无法实现 ...

  8. python基础学习之函数基础和部分内置函数

    在函数调用的时候,必备参数必须要传入 函数定义: def  函数名: 代码块pass return  返回值 函数名命名规则: 字母.数字和下划线组成,和变量命名规则一致 pass在这里表示什么都没有 ...

  9. python学习第五讲,python基础语法之函数语法,与Import导入模块.

    目录 python学习第五讲,python基础语法之函数语法,与Import导入模块. 一丶函数简介 1.函数语法定义 2.函数的调用 3.函数的文档注释 4.函数的参数 5.函数的形参跟实参 6.函 ...

  10. Python 基础学习 总结篇

    Python 基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结 ...

随机推荐

  1. Android屏幕相关设置

    锁屏设置: 1. 初始值 : <integer name="def_screen_off_timeout">60000</integer> 2. 数据库/d ...

  2. Linux负载均衡软件LVS之四(测试篇-完)

    一.启动LVS集群服务LVS负载均衡管理和使用有两种方式,一种是以ipvsadm命令行脚步与ldirectord监控方式,一种是以Piranha工具进行管理和使用.下面分别介绍. 1.利用ipvsad ...

  3. twemproxy接收流程探索——twemproxy代码分析正编

    在这篇文章开始前,大家要做好一个小小的心理准备,由于twemproxy代码是一份优秀的c语言,为此,在twemproxy的代码中会大篇幅使用c指针.但是不论是普通类型的指针还是函数指针,都可以让我们这 ...

  4. 【微信开发】【Asp.net MVC】-- 微信分享功能

    内嵌在微信中的网页,右上角都会有一个默认的分享功能.如下图所示,第一个为自定义的效果,第二个为默认的效果.实现了自定义的分享链接是不是更让人有点击的欲望?下面讲解下开发的过程. 一.准备,设置js接口 ...

  5. 利刃 MVVMLight 2:Model、View、ViewModel结构以及全局视图模型注入器的说明

         上一篇我们已经介绍了如何使用NuGet把MVVMLight应用到我们的WPF项目中.这篇我们来了解下一个基本的MVVMLight框架所必须的结构和运行模式. MVVMLight安装之后,我们 ...

  6. JMS(java消息服务)整合Spring项目案例

    转载自云栖社区 摘要: Sprng-jms消息服务小项目 所需的包: spring的基础包 spring-jms-xx包 spring-message–xx包 commons-collection-x ...

  7. sublime3下载安装及常用插件

    之前与学习前端有关的软件都安装在了实验室电脑上,最近由于要放寒假(也许我寒假回去会学习呢),于是得在笔记本电脑上重新安装一遍.几个软件各种出错,花了一下午才安装好,必须记录下来啊! 这篇文章主要介绍s ...

  8. IntelliJ IDEA中类似Eclipse自动补全变量名称和属性名称的快捷键

    IntelliJ IDEA 默认快捷键模式下 自动补全变量名称 : Ctrl + Alt + v 自动补全属性名称 : Ctrl + Alt + f

  9. Could not locate executable E:\SoftWave\Hadoop-2.2.0\bin\winutils.exe in the Hadoop binaries解决办法

    需要下载windows版本 bin目录下的文件,替换hadoop目录下原来的bin目录下的文件.下载网址是: https://github.com/srccodes/hadoop-common-2.2 ...

  10. glib实践篇:父类与子类

    前言: 众所周知,C语言是一门面向过程的语言,但是不代表就得跟面向对象完全绝缘,在C语言库glib中有gobject那么一套面向对象的机制,基于C语言的面向对象设计便是基于该实现机制. 今天所要实践的 ...