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 错误和异常小结
Oct 09 Python
Python实现CET查分的方法
Mar 10 Python
python中os和sys模块的区别与常用方法总结
Nov 14 Python
python数据抓取分析的示例代码(python + mongodb)
Dec 25 Python
python如何将图片转换为字符图片
Aug 19 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
Jan 10 Python
tensorflow之变量初始化(tf.Variable)使用详解
Feb 06 Python
Python统计学一数据的概括性度量详解
Mar 03 Python
python利用Excel读取和存储测试数据完成接口自动化教程
Apr 30 Python
10行Python代码实现Web自动化管控的示例代码
Aug 14 Python
用python读取xlsx文件
Dec 17 Python
Python find()、rfind()方法及作用
Dec 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 ignore_user_abort与register_shutdown_function 使用方法
2009/06/14 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
2013/07/15 PHP
PHP异常处理Exception类
2015/12/11 PHP
Yii实现单用户博客系统文章详情页插入评论表单的方法
2015/12/28 PHP
CodeIgniter基于Email类发邮件的方法
2016/03/29 PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
2018/05/10 PHP
Laravel框架中缓存的使用方法分析
2019/09/06 PHP
js操作二级联动实现代码
2010/07/27 Javascript
深入理解javascript变量声明
2014/11/20 Javascript
JavaScript 学习笔记之变量及其作用域
2015/01/14 Javascript
Javascript刷新窗口方法小结
2015/10/21 Javascript
微信小程序实现带刻度尺滑块功能
2017/03/29 Javascript
vue.js引入外部CSS样式和外部JS文件的方法
2019/01/06 Javascript
快速了解Node中的Stream流是什么
2019/02/13 Javascript
微信小程序实现购物页面左右联动
2019/02/15 Javascript
浅谈小程序 setData学问多
2019/02/20 Javascript
前端天气插件tpwidget使用方法详解
2019/06/24 Javascript
vue 实现 rem 布局或vw 布局的方法
2019/11/13 Javascript
遍历python字典几种方法总结(推荐)
2016/09/11 Python
利用python画一颗心的方法示例
2017/01/31 Python
Python 中 Virtualenv 和 pip 的简单用法详解
2017/08/18 Python
python利用正则表达式排除集合中字符的功能示例
2017/10/10 Python
python构建深度神经网络(续)
2018/03/10 Python
Python判断变量名是否合法的方法示例
2019/01/28 Python
对python借助百度云API对评论进行观点抽取的方法详解
2019/02/21 Python
Python操作redis实例小结【String、Hash、List、Set等】
2019/05/16 Python
python实现坦克大战游戏 附详细注释
2020/03/27 Python
django中间键重定向实例方法
2019/11/10 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
初探CSS3中的calc()功能
2015/07/14 HTML / CSS
寒假实习自荐信
2014/01/26 职场文书
大专学生求职自荐信
2014/07/06 职场文书
社区三八妇女节活动总结
2015/02/06 职场文书
装配车间主任岗位职责
2015/04/08 职场文书
爱国影片观后感
2015/06/18 职场文书
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
2022/08/14 Servers