python匿名函数调用_(Python) 函数、匿名函数
本节将学习如何用Python定义函数,调用函数,以及学习匿名函数的使用
1.定义函数
Python中定义函数用关键字def,如下例所示,testFun为函数名
def testFun():
print "hello world"
2.函数参数
一个函数可以有0个或多个形式参数:
def testAdd(x,y):
print x+y
函数的形式参数值可以初始化,使用了初始值的参数,在调用的时候可以不需要指定该参数。
def testSum(z,x=1,y=0):
print x+y+z
调用函数:
testSum(3) # 将打印出:4
testSum(10,y=1) # 将打印出:12
testSum(y=1,x=2,z=10) #将打印出:13
注意:定义函数时,没有初始化的形式参数必须放在初始化形式参数的前面,否则会报错
调用函数时,必须指定未初始化的参数,且参数的顺序要与函数定义的参数顺序一致(除非调用时指定了参数名)
3.函数返回值
Python函数可以通过return语句返回函数值,如果没有return语句或者return语句后什么都没有,函数将返回:None
def testSub(x,y):
return x-y
调用函数:
x=testSub(10,2)
print x #将打印出:8
4.字典和元组形式的函数参数
Python函数的形式参数个数有时候不确定,这时候,我们可以使用*args或**args的形式参数。*args以元组的形式接收参数,而**args以字典的形式接收参数,当两者都存在时,定义函数时,*args必须定义在**args前面
字典形参(**args)例子:
def testDict(a,**b):
print 'a is:',a
print 'b is:',b
调用函数方法一:
tict={'x':1,'y':2,'z':3}
testDict(10,**tict)
调用函数方法二:
testDict(10,x=1,y=2,z=3)
输出结果:
>>>
a is: 10
b is: {'y': 2, 'x': 1, 'z': 3}
元组形参(*args)例子:
def testTuple(a,*b):
print 'a is :' ,a
print b
调用函数方法一:
tup=('a',1,2,'b')
testTuple(1,*tup)
调用函数方法二:
testTuple(1,'a',1,2,'b')
输出结果:
>>>
a is : 1
('a', 1, 2, 'b')
5.匿名函数
Python可以用关键字lambda定义一个匿名函数,当需要一个函数类型的对象时,可以创建一个匿名函数来实现
def testLambda(x):
return lambda x:x+y #这里将返回一个函数对象
函数调用:
f=testLambda(10) #创建了一个函数对象:f
print f(5) #将会打印出:15
6.要点记录
当多次调用一个具有初始化参数的函数时,该参数只会在第一次调用时被初始化一次。 这使得当形式参数为可变对象,如:列表、字典或者类的实例时,其结果可能和我们预期的不一样:
def testParam(x=[]):
x.append(10)
print x
多次调用函数(可能我们希望调用函数的结果是:都打印出列表[10]):
testParam()
testParam()
testParam()
testParam()
实际输出结果:
>>>
[10]
[10, 10]
[10, 10, 10]
[10, 10, 10, 10]
当形式参数为不可变对象时,又是怎样的情况呢?我们再观察另一个例子:
def testParam(x=2):
x=x+2
print x
调用函数:
testParam()
testParam()
testParam()
testParam()
实际输出结果:
>>>
4
4
4
4
备注:
python中,万物皆对象。
python中不存在所谓的传值调用,一切传递的都是对象的引用,也可以认为是传址。
不可变对象(immutable):int、字符串(string)、float、(数值型number)、元组(tuple)
可变对象(mutable):字典型(dictionary)、列表型(list)、类的实例
python匿名函数调用_(Python) 函数、匿名函数相关推荐
- python命名规则数字开头的成语_浅谈Python中带_的变量或函数命名
搜索热词 Python 的代码风格由 PEP 8 描述.这个文档描述了 Python 编程风格的方方面面.在遵守这个文档的条件下,不同程序员编写的 Python 代码可以保持最大程度的相似风格.这样就 ...
- python globals() 动态函数调用_[Python] 动态函数调用(通过函数名)
2018-04-09 update 利用python中的内置函数 eval() ,函数说明: def eval(*args, **kwargs): #real signature unknown &q ...
- python 病毒 基因_#Python#提取基因对应的蛋白质名
提取基因对应的蛋白质官方名 最开始,是需要将基因跟其编码的蛋白质对应起来,找遍了各种数据库都没发现有相关的注释文件,Uniprot作为处理蛋白质的大佬,结果里都有,肯定有办法能够满足需求. 搜索TP5 ...
- python keyboard模块_[python] PyMouse、PyKeyboard用python操作鼠标和键盘
1.PyUserInput 简介 PyUserInput是一个使用python的跨平台的操作鼠标和键盘的模块,非常方便使用.支持的平台及依赖如下: Linux - Xlib Mac - Quartz, ...
- python的函数调用_三个案例带你了解python回调函数
回调函数: 把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用 ...
- python画图标题_使用pyplot.matshow()函数添加绘图标题
仅供参考 import matplotlib.pyplot as plt import numpy as np def samplemat(dims): """Make ...
- python调用窗口_如何调用一个函数并在另一个窗口中打开?
我用的是IDLE,但这应该足够让球滚动了.IDLE是在Windows上下载Python时随Python一起安装的IDE.您可以通过按Windows键并搜索空闲来打开它.在 这段代码很简单,但是它应该能 ...
- matlab 匿名函数调用,如何在MATLAB匿名函数中执行多个语句?
慕姐8265434 这是一种保证执行顺序的方法,并且(在最后提到了修改)允许将不同的参数传递给不同的函数.call1 = @(a,b) a();call12 = @(a,b) call1(b,call ...
- python 运算符重载_一锅类似函数重载的小杂烩
优质文章,第一时间送达! 上周末的时候发了篇文章,希望更多的读者可以一起参与到技术分享中.很高兴当天就收到了几位朋友的积极响应,今天试着原创发表其中一位的文章.希望大家多留言给作者一些意见和建议. 作 ...
最新文章
- android加载时二级联动点击二级联动,Android实现联动下拉框二级地市联动下拉框功能...
- python中函数的参数:必传参数(位置参数)、默认值参数、参数组传参、关键字传参...
- 远程服务器概念,远程服务
- Java 使用 zip4j 进行基本的压缩、解压、设置密码操作(version zip4j-2.6.4)
- 在 Microsoft word中插入代码
- liunx trac 插件使用之GanttCalendarPlugin
- ReactNative字体大小不随系统字体大小变化而变化
- array_filter移除空数组
- vc2013 调用大漠插件例子
- Linux网络的网络配置(超详细,百分百成功)
- excel查找空值快捷键_Excel之定位和查找(一)
- oracle 范鑫_自己写得一个类似AUL的工具,附源代码(C 语言)
- 国内考勤管理系统做的比较好的几款软件?
- 每日十道面试题(五)
- 半乳糖-人血清白蛋白 Gal-HSA,Gal-PEG-HSA 半乳糖修饰人血清白蛋白
- 设置Word文档密码的两种方式
- 计算机缺少什么无法正常启动,应用无法正常启动是什么意思
- 物联网打破传统行业的枷锁,加速传统行业智能化!
- 判断两个单向链表是否相交
- 苏州文正学院计算机张晓青,北流市地图(广西政区图地图)
热门文章
- 三维视频融合 开放源代码 混合模式 内嵌web容器 c++ js 混合开发 时空克隆引擎 数字孪生 点卯 系列 魔镜系列
- 实战技法 - 短线操盘 (1)
- [Canvas系列]Canvas简单线条绘制_02
- 5款实用又有趣的微信小程序,每一款都是大家公认的好用!
- Ubuntu 18.04 服务器版安装桌面及软件
- 干货:机器学习模型训练全流程!
- hive面试题总结(2020最新版)
- 颜值为王 美图M8成京东618新机好评榜最大黑马
- linux的veth导致网络不通,使用veth-pair和bridge搭建的本地网络环境网络不通
- QT之qss教程- QScrollBar