(一)函数与参数
用户自己创建的函数称为用户自定义函数,语法格式如下。
def <函数名>([<形参列表>]):
[<函数体>]
说明:
. 函数使用关键字def(define的缩写)声明,函数名为有效的标识符和圆括号()。
. 任何传入参数和自变量必须放在圆括号中间,圆括号之间用于定义参数。
. 函数内容以冒号起始,并且缩进。
. 函数名下的每条语句前都要用Tab键缩进,没有缩进的第一行则被视为在函数体之外的语句,与函数同级的程序语句。
.return[表达式]结束函数,选择性地返回一个值给调用方。不带表达式的return 相当于返回None。
在Python中,函数调用的语法格式为: 函数名([实际参数])
函数调用时传递的参数是实参,实参可以是变量、常量或表达式。当实参个数超过一个函数时,用逗号分隔,实参和形参应在个数、类型和顺序上一一对应。对于无参函数,调用时实参为空,但( )不能省略。
【例】 求两个数中的较大值。
def max(a,b):
if a>b:
return a
else:
return b
t=max(3,4)
print(t)
(二)实参与形参
实参(实际参数)是指传递给函数的值,即在调用函数时,由调用语句传给函数的常量、
变量或表达式。形参(形式参数)是在定义函数时,函数名后面括号中的变量,用逗号分隔。
作为函数与主调程序交互的接口,用来接收调用该函数时传递的实参,从主调程序获得初
值,或将计算结果返回给主调程序。
形参和实参具有以下特点。
(1)函数在被调用前,形参只是代表了执行该函数所需要参数的个数、类型和位置,并
没有具体的数值,形参只能是变量,不能是常量、表达式。只有当调用时,主调函数将实参的
值传递给形参,形参才具有值。
(2)形参只有在被调用时才分配内存单元,调用结束后释放内存单元,因此形参只在函
数内部有效,函数调用结束返回主调用函数后则不能再使用该形参变量。
(3)实参可以是常量、变量、表达式、函数等,无论实参是何种数据类型的变量,函数调
用时必须是确定的值,以便把这些值传给形参。
(4)实参和形参在数量、类型、顺序方面应严格一致,否则会发生类型不匹配错误。
(三)传对象引用
Python的参数传递与C语言不同,既不是传值(pass-by-value),也不是传引用(passby-
reference),而是传对象引用(pass-by-object-reference),传递的是一个对象的内存地址。
这种方式相当于传值和传址的一种综合。当函数收到的是可变对象(如字典或者列表)的引
用,就能修改对象的原始值———相当于“传引用”。当函数收到的是不可变对象(如数字、字
符或者元组)的引用,就不能直接修改原始对象———相当于“传值”。
常用内置函数
Python内置函数是python系统内部创建的,在Python的程序中,可以随时调用这些函数,不需要另外定义。
例如,最常见的print()是内置函数,在程序中直接使用:
print("Hello World!")
而平方根函数sqrt()不是内置函数,使用该函数时需要引用math模块:
import math
y = math.sqrt(25)

匿名函数lambda
在Python中可以使用匿名函数。匿名函数即没有函数名的函数。
通常用lambda声明匿名函数。
例如,计算二个数的和,可以写成:
add = lambda x, y : x+y
print(add(1,2))
输出的结果为3。
从上面示例可以看到,lambda表达式的计算结果相当于函数的返回值。
【例】用lambda表达式,求三个数的和。



