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实现多线程下载文件的代码实例
Jun 01 Python
Python聊天室实例程序分享
Jan 05 Python
python处理Excel xlrd的简单使用
Sep 12 Python
python3大文件解压和基本操作
Dec 15 Python
python OpenCV学习笔记直方图反向投影的实现
Feb 07 Python
Python中pow()和math.pow()函数用法示例
Feb 11 Python
Python统计单词出现的次数
Apr 04 Python
简单了解python 邮件模块的使用方法
Jul 24 Python
如何教少儿学习Python编程
Jul 10 Python
python 批量下载bilibili视频的gui程序
Nov 20 Python
用python爬虫批量下载pdf的实现
Dec 01 Python
Python可视化学习之seaborn绘制矩阵图详解
Feb 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新手上路(五)
2006/10/09 PHP
使用PHP实现密保卡功能实现代码<打包下载直接运行>
2011/10/09 PHP
php实现邮件发送并带有附件
2014/01/24 PHP
php实现以只读方式打开文件的方法
2015/03/16 PHP
wordpress网站转移到本地运行测试的方法
2017/03/15 PHP
关于jquery中全局函数each使用介绍
2013/12/10 Javascript
JavaScript中的pow()方法使用详解
2015/06/15 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
常用javascript表单验证汇总
2020/07/20 Javascript
jQuery+json实现的简易Ajax调用实例
2015/12/14 Javascript
简述jQuery ajax的执行顺序
2016/01/05 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
2016/05/11 Javascript
手机软键盘弹出时影响布局的解决方法
2016/12/15 Javascript
微信小程序 详解Page中data数据操作和函数调用
2017/01/12 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
微信小程序 出现47001 data format error原因解决办法
2017/03/10 Javascript
JS检测是否可以访问公网服务器功能代码
2017/06/19 Javascript
详解利用 Vue.js 实现前后端分离的RBAC角色权限管理
2017/09/15 Javascript
一文让你彻底搞清楚javascript中的require、import与export
2017/09/24 Javascript
Vue源码学习之初始化模块init.js解析
2017/11/02 Javascript
详解ES6通过WeakMap解决内存泄漏问题
2018/03/09 Javascript
javascript实现图片轮换动作方法
2020/08/07 Javascript
Python Web框架Tornado运行和部署
2020/10/19 Python
Python使用修饰器执行函数的参数检查功能示例
2017/09/26 Python
python 对key为时间的dict排序方法
2018/10/17 Python
Python3+Appium安装使用教程
2019/07/05 Python
python把ipynb文件转换成pdf文件过程详解
2019/07/09 Python
python 在sql语句中使用%s,%d,%f说明
2020/06/06 Python
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
Foot Locker英国官网:美国知名运动产品零售商
2019/02/21 全球购物
澳大利亚巧克力花束和礼品网站:Tastebuds
2019/03/15 全球购物
校园十佳歌手策划书
2014/01/22 职场文书
成事在人观后感
2015/06/16 职场文书
XX部保密工作制度范本
2019/08/27 职场文书
JS数组的常用方法整理
2021/03/31 Javascript
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
2021/05/31 Python