函数语法格式
def function_name( parameters ): # 关键字 函数名 (参数) 冒号结尾
"function_docstring" # 可选语句 ,docstring的文档字符串,生成有关程序中函数的文档;
function_suite # 代码行;
return [expression] # 返回值,可选语句,将表达式传递给调用者,不带参数的return语句与return none相同;
function_name( ) # 调用函数
形参:函数完成其工作所需的一项信息
实参:调用函数时传递给函数的信息
形参可以有多个
函数调用中每个实参都必须关联到函数定义中的一个形参。
传递实参
-
位置实参
按顺序将函数调用中的实参关联到函数定义中相应的形参(实参与形参的顺序要求一致)
def personnel_info(name,age):
'''Display personnel information'''
print('我的名字是' + name.title(), '年龄' + age)
# 函数的多次调用
personnel_info('xiaoming','18') # 正确的顺序传递实参
personnel_info('xiaogang','20')
personnel_info('11','xiaohua') # 错误的顺序传递实参,此为位置实参的缺陷。
-
关键字实参
传递给函数key-value,关键字实参无需考虑函数调用中的实参顺序,还清楚地指出了函数调用中各个值的用途。
def personnel_info(name,age):
'''Display personnel information'''
print('我的名字是' + name.title(), '年龄' + age)
personnel_info(name='xiaoming',age='18')
personnel_info(age='20',name='xiaohua') # 无需考虑实参与形参的顺序
-
形参的默认值
给形参指定默认值,在函数调用时可以不指定相应的实参,也可以指定相应的实参来覆盖默认值;
形参在没有指定实参时,形参将使用默认值;
使用默认值可简化函数调用,执行过程是按照位置实参来的。
使用默认值时, 在形参列表中必须先列出没有默认值的形参, 再列出有默认值的实参。 这让Python依然能够正确地解读位置实参。
def personnel_info(name,age = '20'): # 设置age的形参默认值
'''Display personnel information'''
print('我的名字是' + name.title(), '年龄' + age)
personnel_info(name='xiaoming') # 设置age的形参默认值,在函数调用时无需再设置age的实参。
personnel_info(name='xiaoming',age='10') # 指定相应的实参来覆盖默认值
-
等效的函数调用
位置实参、 关键字实参和默认值可以混合使用
返回值
函数并非总是直接显示输出,相反,它可以处理一些数据, 并返回一个或一组值。在函数中,可使用 return 语句将值返回到调用函数的代码行。
返回值让你能够将程序的大部分繁重工作移到函数中去完成, 从而简化主程序。
def personnel_info(name,age): # 1.读取形参;3.实参赋值形参
'''Display personnel information'''
table = '名字:' + name + '\t年龄:' + age # 4.代码行,调用函数
return table # 5.返回调用函数的结果
human = personnel_info(name='xiaoming',age='18') # 2.读取实参
print(human) # 6.打印调用函数的结果
函数可返回任何类型的值, 包括列表和字典等较复杂的数据结构。