本节将学习如何用Python定义函数,调用函数,以及学习匿名函数的使用

1.定义函数

Python中定义函数用关键字def,如下例所示,func为函数名

def func():

print( "hello world")

2.函数参数

一个函数可以有0个或多个形式参数:

def test_add(x, y):

print (x + y)

函数的形式参数值可以初始化,使用了初始值的参数,在调用的时候可以不需要指定该参数。

def test_sum(z, x = 1, y = 0):

print(x + y + z)

调用函数:

test_sum(3) #   将打印出:4

test_sum(10, y = 1) # 将打印出:12

test_sum(y = 1, x = 2, z = 10) #将打印出:13

注意:定义函数时,没有初始化的形式参数必须放在初始化形式参数的前面,否则会报错

调用函数时,必须指定未初始化的参数,且参数的顺序要与函数定义的参数顺序一致(除非调用时指定了参数名)

3.函数返回值

Python函数可以通过return语句返回函数值,如果没有return语句或者return语句后什么都没有,函数将返回:None

字典形参(**args)例子:

def test_dict(a,**b):

print('a is:',a)

print( 'b is:',b)

调用函数方法一:

tict={'x':1, 'y':2,'z':3}
test_dict(10, **tict)

调用函数方法二:

test_dict(10,x=1,y=2,z=3)

输出结果:

>>>
a is: 10
b is: {'y': 2, 'x': 1, 'z': 3}

元组形参(*args)例子:

def test_tuple(a,*b):

print( 'a is :' ,a)

print( b)

调用函数方法一:

tup = ('a', 1, 2, 'b')
test_tuple(1, *tup)

调用函数方法二:

test_tuple(1, 'a', 1, 2, 'b')

输出结果:

>>>

a is : 1

('a', 1, 2, 'b')

5.匿名函数

Python可以用关键字lambda定义一个匿名函数,当需要一个函数类型的对象时,可以创建一个匿名函数来实现

def test_lambda(x):

return lambda x:x+y     #这里将返回一个函数对象

函数调用:

f=test_lambda(10)  #创建了一个函数对象:f
print( f(5) )       #将会打印出:15

6.要点记录

当多次调用一个具有初始化参数的函数时,该参数只会在第一次调用时被初始化一次。 这使得当形式参数为可变对象,如:列表、字典或者类的实例时,其结果可能和我们预期的不一样:

def test_param(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)、类的实例

python3----函数、匿名函数的更多相关文章

  1. 【Python3之匿名函数及递归】

    一.匿名函数及内置函数补充 1.语法 Python使用lambda关键字创造匿名函数.所谓匿名,意即不再使用def语句这样标准的形式定义一个函数. 语法: lambda [arg1[, arg2, . ...

  2. python笔记4 内置函数,匿名函数.递归函数 面向对象(基础, 组合,继承)

    内置函数 eval和exec eval :执行字符串中的代码并将结果返回给执行者,有返回值 exec:执行字符串中的代码,往往用于执行流程语句,没有返回值. s1 = '1+2' s2 = 'prin ...

  3. 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数

    [源码下载] 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函 ...

  4. python基础学习Day14 内置函数 匿名函数

    一.内置函数里几个高频重要函数 (1)min\max函数的用法 以min函数的为例: min:返回可迭代对象的最小值(可加key,key为函数名,通过函数的规则,返回最小值). l1 =[(,),(, ...

  5. Learning Python 012 函数式编程 2 返回函数 匿名函数 装饰器 偏函数

    Python 函数式编程 2 返回函数 返回函数的意思就是:函数作为返回值.(高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回.) 举个例子:实现一个可变参数的求和. 正常的函数: de ...

  6. ~~函数基础(三):嵌套函数&匿名函数~~

    进击のpython 嵌套函数&匿名函数 讲完作用域之后 对变量的作用范围有大致的了解了吗? 讲个稍微小进阶的东西吧 能够帮助你更加的理解全局和局部变量 嵌套函数 玩过俄罗斯套娃不? 没玩过听过 ...

  7. JavaScript---js语法,数据类型及方法, 数组及方法,JSON对象及方法,日期Date及方法,正则及方法,数据类型转换,运算符, 控制流程(三元运算),函数(匿名函数,自调用函数)

    day46 一丶javascript介绍 JavaScript的基础分为三个       1.ECMAScript:JavaScript的语法标准.包括变量,表达式,运算符,函数,if语句,for语句 ...

  8. python学习三十三天函数匿名函数lambda用法

    python函数匿名函数lambda用法,是在多行语句转换一行语句,有点像三元运算符,只可以表示一些简单运算的,lambda做一些复杂的运算不太可能.分别对比普通函数和匿名函数的区别 1,普通的函数用 ...

  9. Golang函数-匿名函数与闭包函数

    Golang函数-匿名函数与闭包函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  10. day12:闭包函数&匿名函数

    闭包函数 闭包函数的定义: 如果内函数使用了外函数的局部变量并且外函数把内函数返回出来的过程 叫做闭包里面的内函数是闭包函数 一个简单的闭包函数示例: def songyunjie_family(): ...

随机推荐

  1. 嵌入web字体

    @font-face模块         可以帮助我们轻松解决Web页面中使用优雅字体的方式,而且我们可以根据需要自定义多种字体,但是每个@font-face只能定义一种,若需要多个字体就启用多个@f ...

  2. 织梦dedecms dede plus文件作用介绍及安全设置

    一.安装设置 1.默认的后台模块中心有很多模块. 这里除了"友情链接"模块其他都可以删掉.在后台可以先卸载再删除. 2.如果是一开始就不想要的话,安装版plus目录下进行如下操作. ...

  3. 关于nodejs中npm命令没有反应的解决方法

    最近在学习angularJS,正在做一个单页面应用,在安装nodejs之后,发现命令行传了输入npm -v能输出结果外,其余npm的任何操作都没有反应,一开始我以为是下载的比较慢,等了半小时还是没动静 ...

  4. JBOSS整套开发组件整合和配置方法

    http://blog.csdn.net/laigood/article/details/5743712主要是集成jboss,jboss esb,jboss portal,jboss seam,jbo ...

  5. java类的初始化和构造函数

    本人小白一枚,看java类的初始化的时候好晕的说,我觉着书上尽管说的对.但总认为有些信息没说出来,没说清楚,看了好多文章博客的,如今有些感悟,来小写下总结,也算是为以后再次复习种个好果子. 先摘一下书 ...

  6. PHP 抽象类的使用

    //抽象类就是一个模版 abstract class db{ /* 参数:sql语句 返回值:索引的数组 */ abstract public function test($str); //没有方法体 ...

  7. intellij中常用的快捷键

    intellij快捷键

  8. Excel 출력

    NativeExcel 참조 사이트 http://www.nika-soft.com/dwnld.htm IWorkbook book = Factory.CreateWorkbook(); lWo ...

  9. Atiti. Php Laravel 5.1 环境搭建以及  error 排除

    Atiti. Php Laravel 5.1 环境搭建以及  error 排除 1. php_5.6.11_apache2.41 1.1. Httpd.Conf增加以下配置,添加php支持1 1.2. ...

  10. poj 1475 Pushing Boxes 推箱子(双bfs)

    题目链接:http://poj.org/problem?id=1475 一组测试数据: 7 3 ### .T. .S. #B# ... ... ... 结果: //解题思路:先判断盒子的四周是不是有空 ...