本节将学习如何用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) 函数、匿名函数相关推荐

  1. python命名规则数字开头的成语_浅谈Python中带_的变量或函数命名

    搜索热词 Python 的代码风格由 PEP 8 描述.这个文档描述了 Python 编程风格的方方面面.在遵守这个文档的条件下,不同程序员编写的 Python 代码可以保持最大程度的相似风格.这样就 ...

  2. python globals() 动态函数调用_[Python] 动态函数调用(通过函数名)

    2018-04-09 update 利用python中的内置函数 eval() ,函数说明: def eval(*args, **kwargs): #real signature unknown &q ...

  3. python 病毒 基因_#Python#提取基因对应的蛋白质名

    提取基因对应的蛋白质官方名 最开始,是需要将基因跟其编码的蛋白质对应起来,找遍了各种数据库都没发现有相关的注释文件,Uniprot作为处理蛋白质的大佬,结果里都有,肯定有办法能够满足需求. 搜索TP5 ...

  4. python keyboard模块_[python] PyMouse、PyKeyboard用python操作鼠标和键盘

    1.PyUserInput 简介 PyUserInput是一个使用python的跨平台的操作鼠标和键盘的模块,非常方便使用.支持的平台及依赖如下: Linux - Xlib Mac - Quartz, ...

  5. python的函数调用_三个案例带你了解python回调函数

    回调函数: 把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用 ...

  6. python画图标题_使用pyplot.matshow()函数添加绘图标题

    仅供参考 import matplotlib.pyplot as plt import numpy as np def samplemat(dims): """Make ...

  7. python调用窗口_如何调用一个函数并在另一个窗口中打开?

    我用的是IDLE,但这应该足够让球滚动了.IDLE是在Windows上下载Python时随Python一起安装的IDE.您可以通过按Windows键并搜索空闲来打开它.在 这段代码很简单,但是它应该能 ...

  8. matlab 匿名函数调用,如何在MATLAB匿名函数中执行多个语句?

    慕姐8265434 这是一种保证执行顺序的方法,并且(在最后提到了修改)允许将不同的参数传递给不同的函数.call1 = @(a,b) a();call12 = @(a,b) call1(b,call ...

  9. python 运算符重载_一锅类似函数重载的小杂烩

    优质文章,第一时间送达! 上周末的时候发了篇文章,希望更多的读者可以一起参与到技术分享中.很高兴当天就收到了几位朋友的积极响应,今天试着原创发表其中一位的文章.希望大家多留言给作者一些意见和建议. 作 ...

最新文章

  1. android加载时二级联动点击二级联动,Android实现联动下拉框二级地市联动下拉框功能...
  2. python中函数的参数:必传参数(位置参数)、默认值参数、参数组传参、关键字传参...
  3. 远程服务器概念,远程服务
  4. Java 使用 zip4j 进行基本的压缩、解压、设置密码操作(version zip4j-2.6.4)
  5. 在 Microsoft word中插入代码
  6. liunx trac 插件使用之GanttCalendarPlugin
  7. ReactNative字体大小不随系统字体大小变化而变化
  8. array_filter移除空数组
  9. vc2013 调用大漠插件例子
  10. Linux网络的网络配置(超详细,百分百成功)
  11. excel查找空值快捷键_Excel之定位和查找(一)
  12. oracle 范鑫_自己写得一个类似AUL的工具,附源代码(C 语言)
  13. 国内考勤管理系统做的比较好的几款软件?
  14. 每日十道面试题(五)
  15. 半乳糖-人血清白蛋白 Gal-HSA,Gal-PEG-HSA 半乳糖修饰人血清白蛋白
  16. 设置Word文档密码的两种方式
  17. 计算机缺少什么无法正常启动,应用无法正常启动是什么意思
  18. 物联网打破传统行业的枷锁,加速传统行业智能化!
  19. 判断两个单向链表是否相交
  20. 苏州文正学院计算机张晓青,北流市地图(广西政区图地图)

热门文章

  1. 三维视频融合 开放源代码 混合模式 内嵌web容器 c++ js 混合开发 时空克隆引擎 数字孪生 点卯 系列 魔镜系列
  2. 实战技法 - 短线操盘 (1)
  3. [Canvas系列]Canvas简单线条绘制_02
  4. 5款实用又有趣的微信小程序,每一款都是大家公认的好用!
  5. Ubuntu 18.04 服务器版安装桌面及软件
  6. 干货:机器学习模型训练全流程!
  7. hive面试题总结(2020最新版)
  8. 颜值为王 美图M8成京东618新机好评榜最大黑马
  9. linux的veth导致网络不通,使用veth-pair和bridge搭建的本地网络环境网络不通
  10. QT之qss教程- QScrollBar