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 03 Python
python使用marshal模块序列化实例
Sep 25 Python
Python 错误和异常代码详解
Jan 29 Python
pytorch构建网络模型的4种方法
Apr 13 Python
利用Python进行数据可视化常见的9种方法!超实用!
Jul 11 Python
如何使用python3获取当前路径及os.path.dirname的使用
Dec 13 Python
基于tensorflow指定GPU运行及GPU资源分配的几种方式小结
Feb 03 Python
详解python内置常用高阶函数(列出了5个常用的)
Feb 21 Python
Python正则表达式学习小例子
Mar 03 Python
Python捕获异常堆栈信息的几种方法(小结)
May 18 Python
Python浮点型(float)运算结果不正确的解决方案
Sep 22 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
Dec 01 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关联数组实现根据元素值删除元素的方法
2015/06/26 PHP
Zend Framework动作助手Url用法详解
2016/03/05 PHP
PHP7 参数处理机制修改
2021/03/09 PHP
限制复选框的最大可选数
2006/07/01 Javascript
jquery maxlength使用说明
2011/09/09 Javascript
jquery移除button的inline onclick事件(已测试及兼容浏览器)
2013/01/25 Javascript
PHP中CURL的几个经典应用实例
2015/01/23 Javascript
javascript每日必学之条件分支
2016/02/17 Javascript
jquery仿QQ登录账号选择下拉框效果
2016/03/22 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
javascript数据类型详解
2017/02/07 Javascript
js中变量的连续赋值(实例讲解)
2017/07/08 Javascript
Vue组件通信入门之Provide和Inject机制
2019/12/29 Javascript
详解JavaScript中的Object.is()与"==="运算符总结
2020/06/17 Javascript
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
python 链接和操作 memcache方法
2017/03/04 Python
Python 函数返回值的示例代码
2019/03/11 Python
简单了解python的一些位运算技巧
2019/07/13 Python
Django 项目通过加载不同env文件来区分不同环境
2020/02/17 Python
python logging 日志的级别调整方式
2020/02/21 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
2020/05/23 Python
CSS3 3D制作实战案例分析
2016/09/18 HTML / CSS
挪威太阳镜和眼镜网上商城:SmartBuyGlasses挪威
2016/08/20 全球购物
德国W家官网,可直邮中国的母婴商城:Windeln.de
2021/03/03 全球购物
大学生学业生涯规划
2014/01/05 职场文书
2015年行政执法工作总结
2015/05/23 职场文书
成绩单家长意见
2015/06/03 职场文书
办公室卫生管理制度
2015/08/04 职场文书
小学班级管理心得体会
2016/01/07 职场文书
外出听课学习心得体会
2016/01/15 职场文书
《月光曲》教学反思
2016/02/16 职场文书
干货!开幕词的写作方法
2019/04/02 职场文书
浅谈Python项目的服务器部署
2021/04/25 Python
Java获取e.printStackTrace()打印的信息方式
2021/08/07 Java/Android
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
2022/04/30 Vue.js