Python中函数的多种格式和使用实例及小技巧


Posted in Python onApril 13, 2015

这里先解释一下几个概念
- 位置参数:按位置设置的参数,隐式用元组保存对应形参.平时我们用的大多数是按位置传参.比如有函数def func(a,b,c),调用func(1,2,3).即a=1,b=2,c=3
- 关键字参数:可以通过关键字设置参数,不用关心参数位置,隐式用字典保存形参.比如有函数def func(a,b,c),调用func(b=1,c=2,a=3),即a=3,b=1,c=2

普通格式

def func(opt_args):

    ...

    return value

带收集位置参数的函数

格式如下

def func(*params):

    ...

    return value

用法

使用函数时,不用限制传参的个数,*params会自动收集传入的参数作为一个元组.

实例

def  func(*params):

    print params
a = [1,2,3,4]

b = 'hello'

c = 3

func(a, b, c)

输出

([1, 2, 3, 4], ‘hello', 3)

带收集关键字参数的函数

格式如下

def func(**params):

    ...

    return value

用法
按关键字传参时,**params会自动收集传入的参数作为一个字典.

实例

def  func(**params):

    print params

func(a=1, b=2, c=3)

输出
{‘a': 1, ‘c': 3, ‘b': 2}

函数特殊用法

默认参数

格式

def func(a = 1, b = 2)

等号(=)号是默认值,调用函数时可以不用传参给默认参数.
实例
def  func(a = 1, b = 2):

    print a, b  

func(a=3)

输出
3 2

函数可以返回多个值

格式

return a, b, c

实例
def  func(a = 1, b = 2):

    return a, b
print func(a=3)

输出
(3, 2)

内嵌函数和闭包

格式

def foo()    #外部函数

    def bar()    #内嵌函数

        ....

    ....

如果内嵌函数引用了外部函数的变量(包括外部函数参数),这个引用的变量称为自由变量, 那么称这个内嵌函数是闭包.再来看看专业的解释:闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。

实例

def foo(a, b):

    x = 4

    def bar():

        return x * a + b;

    return bar
f1= foo(1, 2)

f2= foo(2, 3)
print f1(), f2()

输出
6 11

传递函数

Python一切皆对象,函数这一语法结构也是一个对象, 可以将函数名作为参数传递
格式

def bar(*param1, **param2):

    ....
def foo(bar, *param1, **param2):

    bar(*param1, **param2)

实例
def bar(*param1, **param2):

    print param1

    print param2
def foo(bar, *param1, **param2):

    bar(*param1, **param2)
foo(bar,  1, 2, 3,  a = 111, b = 222, c = 333)

输出
(1, 2, 3) 

{‘a': 111, ‘c': 333, ‘b': 222}

匿名函数与lambda

lambda语法可以创建一个匿名的函数,主要作用是简化书写,是一种语法糖.
- 格式

lambda [arg1[, arg2, … argN]] : expression

实例
def foo(x, y):

    return x + y

print  "call foo function, result is: ", foo(3, 4)
bar = lambda x = 2, y = 3 : x + y

print  "call lambda fucntion, result is:", bar(3,4)

输出
call foo function, result is: 7 

call lambda fucntion, result is: 7
Python 相关文章推荐
Python 时间处理datetime实例
Sep 06 Python
Django中URLconf和include()的协同工作方法
Jul 20 Python
Python实现将数据库一键导出为Excel表格的实例
Dec 30 Python
对python 各种删除文件失败的处理方式分享
Apr 24 Python
Python+selenium实现自动循环扔QQ邮箱漂流瓶
May 29 Python
详解Django中间件的5种自定义方法
Jul 26 Python
判断python对象是否可调用的三种方式及其区别详解
Jan 31 Python
python开头的coding设置方法
Aug 08 Python
Pyinstaller加密打包应用的示例代码
Jun 11 Python
keras load model时出现Missing Layer错误的解决方式
Jun 11 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
Jan 27 Python
python实现黄金分割法的示例代码
Apr 28 Python
在Python中使用SimpleParse模块进行解析的教程
Apr 11 #Python
Python的动态重新封装的教程
Apr 11 #Python
简单的Python的curses库使用教程
Apr 11 #Python
详解Python中的文本处理
Apr 11 #Python
状态机的概念和在Python下使用状态机的教程
Apr 11 #Python
在Python下使用Txt2Html实现网页过滤代理的教程
Apr 11 #Python
详解Python中DOM方法的动态性
Apr 11 #Python
You might like
剧场版动画《PSYCHO-PASS 3 FIRST INSPECTOR》3月27日日本上映!
2020/03/06 日漫
win7计划任务定时执行PHP脚本设置图解
2014/05/09 PHP
laravel 根据不同组织加载不同视图的实现
2019/10/14 PHP
JSON+JavaScript处理JSON的简单例子
2013/03/20 Javascript
javascript重写alert方法的实例代码
2013/03/29 Javascript
让低版本浏览器支持input的placeholder属性(js方法)
2013/04/03 Javascript
jquery获取自定义属性(attr和prop)实例介绍
2013/04/21 Javascript
HTML5使用DeviceOrientation实现摇一摇功能
2015/06/05 Javascript
深入理解AngularJS中的ng-bind-html指令和$sce服务
2016/09/08 Javascript
JS制作类似选项卡切换的年历
2016/12/03 Javascript
Node.js Express 框架 POST方法详解
2017/01/23 Javascript
NodeJS学习笔记之Module的简介
2017/03/24 NodeJs
浅谈vuex之mutation和action的基本使用
2017/08/29 Javascript
jquery tmpl模板(实例讲解)
2017/09/02 jQuery
JavaScript编程设计模式之构造器模式实例分析
2017/10/25 Javascript
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
2018/07/23 Javascript
js实现搜索栏效果
2018/11/16 Javascript
vue 解决数组赋值无法渲染在页面的问题
2019/10/28 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
2020/04/20 Javascript
Javascript中的奇葩知识,你知道吗?
2021/01/25 Javascript
python 读写txt文件 json文件的实现方法
2016/10/22 Python
python实现斐波那契数列的方法示例
2017/01/12 Python
python中count函数简单的实例讲解
2020/02/06 Python
Python xpath表达式如何实现数据处理
2020/06/13 Python
利用Opencv实现图片的油画特效实例
2021/02/28 Python
土木工程专业大学毕业生求职信
2013/10/13 职场文书
配件采购员岗位职责
2013/12/03 职场文书
《苏珊的帽子》教学反思
2014/04/07 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
2014年新农村建设工作总结
2014/12/01 职场文书
学习保证书100字
2015/02/26 职场文书
催款函范本大全
2015/06/24 职场文书
小学校本教研总结
2015/08/13 职场文书
2019年市场部个人述职报告(三篇)
2019/10/23 职场文书
MySQL中的全表扫描和索引树扫描
2022/05/15 MySQL