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中吸引人的一些特性
Apr 09 Python
python制作websocket服务器实例分享
Nov 20 Python
对python 矩阵转置transpose的实例讲解
Apr 17 Python
对Python 文件夹遍历和文件查找的实例讲解
Apr 26 Python
python中的二维列表实例详解
Jun 19 Python
python write无法写入文件的解决方法
Jan 23 Python
python中for循环把字符串或者字典添加到列表的方法
Jul 20 Python
django foreignkey(外键)的实现
Jul 29 Python
python2与python3爬虫中get与post对比解析
Sep 18 Python
Python日志:自定义输出字段 json格式输出方式
Apr 27 Python
新手常见Python错误及异常解决处理方案
Jun 18 Python
Python字典fromkeys()方法使用代码实例
Jul 20 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版)
2006/10/09 PHP
解析centos中Apache、php、mysql 默认安装路径
2013/06/25 PHP
PHP命名空间(namespace)的使用基础及示例
2014/08/18 PHP
php使用pdo连接并查询sql数据库的方法
2014/12/24 PHP
PHP编程之设置apache虚拟目录
2016/07/08 PHP
php获取当前月与上个月月初及月末时间戳的方法
2016/12/05 PHP
php中的依赖注入实例详解
2019/08/14 PHP
JQuery扩展插件Validate 5添加自定义验证方法
2011/09/05 Javascript
纯js和css实现渐变色包括静态渐变和动态渐变
2014/05/29 Javascript
JavaScript前端图片加载管理器imagepool使用详解
2014/12/29 Javascript
7个有用的jQuery代码片段分享
2015/05/19 Javascript
Javascript+CSS3实现进度条效果
2016/10/28 Javascript
vue+webpack实现异步组件加载的方法
2018/02/03 Javascript
vuex进阶知识点巩固
2018/05/20 Javascript
vue axios基于常见业务场景的二次封装的实现
2018/09/21 Javascript
js实现数字滚动特效
2019/12/16 Javascript
[48:37]EG vs OG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python实现简单的计时器功能函数
2015/03/14 Python
用Python进行基础的函数式编程的教程
2015/03/31 Python
在Linux命令行终端中使用python的简单方法(推荐)
2017/01/23 Python
python递归全排列实现方法
2018/08/18 Python
python消费kafka数据批量插入到es的方法
2018/12/27 Python
python如何获取apk的packagename和activity
2020/01/10 Python
python 串行执行和并行执行实例
2020/04/30 Python
python爬取招聘要求等信息实例
2020/11/20 Python
香港No.1得奖零食网:香港零食大王
2016/07/22 全球购物
MATCHESFASHION.COM美国官网:英国奢侈品零售商
2018/10/29 全球购物
Java如何支持I18N?
2016/10/31 面试题
迎接领导欢迎词
2014/01/11 职场文书
同事吵架检讨书
2014/02/05 职场文书
员工入职担保书范文
2014/04/01 职场文书
运动会入场口号
2014/06/07 职场文书
护理学院专科毕业生求职信
2014/06/28 职场文书
建筑管理专业求职信
2014/07/28 职场文书
会议新闻稿
2015/07/17 职场文书
Python初学者必备的文件读写指南
2021/06/23 Python