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字符编码判断方法分析
Jul 01 Python
Python3学习urllib的使用方法示例
Nov 29 Python
Python实现的rsa加密算法详解
Jan 24 Python
django用户注册、登录、注销和用户扩展的示例
Mar 19 Python
python如何将图片转换为字符图片
Aug 19 Python
在python win系统下 打开TXT文件的实例
Apr 29 Python
一百行python代码将图片转成字符画
Feb 19 Python
Python+OpenCV图片局部区域像素值处理改进版详解
Jan 23 Python
python openpyxl使用方法详解
Jul 18 Python
opencv python图像梯度实例详解
Feb 04 Python
Python生成器generator原理及用法解析
Jul 20 Python
Matplotlib 绘制饼图解决文字重叠的方法
Jul 24 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
PHP中变量引用与变量销毁机制分析
2014/11/15 PHP
ZF框架实现发送邮件的方法
2015/12/03 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
zShowBox 图片放大展示jquery版 兼容性
2011/09/24 Javascript
利用NodeJS的子进程(child_process)调用系统命令的方法分享
2013/06/05 NodeJs
javascript实现多栏闭合展开式广告位菜单效果实例
2015/08/05 Javascript
jquery分隔Url的param方法(推荐)
2016/05/25 Javascript
Vue resource中的GET与POST请求的实例代码
2017/07/21 Javascript
基于jquery.page.js实现分页效果
2018/01/01 jQuery
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
2018/05/31 jQuery
vue elementUI tree树形控件获取父节点ID的实例
2018/09/12 Javascript
JS调用安卓手机摄像头扫描二维码
2018/10/16 Javascript
使用vue实现一个电子签名组件的示例代码
2020/01/06 Javascript
AutoJs实现刷宝短视频的思路详解
2020/05/22 Javascript
NodeJS模块Buffer原理及使用方法解析
2020/11/11 NodeJs
Python简单实现socket信息发送与监听功能示例
2018/01/03 Python
Python元组拆包和具名元组解析实例详解
2018/03/26 Python
Python中实现变量赋值传递时的引用和拷贝方法
2018/04/29 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
使用python模拟命令行终端的示例
2019/08/13 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
2019/08/27 Python
python集合删除多种方法详解
2020/02/10 Python
解决python便携版无法直接运行py文件的问题
2020/09/01 Python
python复合条件下的字典排序
2020/12/18 Python
使用CSS3来绘制一个月食图案
2015/07/18 HTML / CSS
利用html5 canvas破解简单验证码及getImageData接口应用
2013/01/25 HTML / CSS
美国眼镜网:GlassesUSA
2017/09/07 全球购物
英国健身仓库:Bodybuilding Warehouse
2019/03/06 全球购物
Mountain Warehouse德国官网:英国户外零售商
2019/08/11 全球购物
《小小雨点》教学反思
2014/02/18 职场文书
初二学习计划书范文
2014/04/27 职场文书
房产销售独家委托书范本
2014/10/01 职场文书
2016学习雷锋精神活动倡议书
2015/04/27 职场文书
MySQL常见优化方案汇总
2022/01/18 MySQL
JavaScript架构搭建前端监控如何采集异常数据
2022/06/25 Javascript
mysql通过group by分组取最大时间对应数据的两种有效方法
2022/09/23 MySQL