函数返回值:
函数并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值。函数返回的值被称为返回值。在函数中,可使用return语句将值返回到调用函数的代码行。
返回值让你能够将程序的大部分繁重工作移到函数中去完成,从而简化主程序。
- 返回简单值:
下面来看一个函数,它接受名和姓并返回简洁的姓名:
def formatted_name(first_name,last_name): full_name = first_name + " " + last_name return full_name.title()message = formatted_name("zi","li")print(message)#输出结果:Li Zi
我们原本只需编写下面的代码就可输出整洁的姓名,相比于此,上面的代码好像太多了:
print("Li Zi")
但在需要分别存储大量名和姓时的大型程序中,像formatted_name()这样的函数非常有用。你分别存储名和姓,每当需要显示姓名时都调用这个函数。
- 返回字典:
函数可返回任何类型的值,包括列表和字典等较复杂的数据结构。例如,下面的函数接受姓名的组成部分,并返回一表示人的字典:
def build_person(first_name,last_name): """返回一个字典,其中包含有关一个人的信息""" person = { "first":first_name,"last":last_name} return personmessage = build_person("zi","li")print(message)#输出结果:{'first':'zi','last':'li'}
函数build_person()接受名和姓,并将这些值封装到字典中。这个函数接受简单的文本信息,将其放在一个更适合的数据结构中,让你不仅能打印这些信息,还能以其他方式处理它们。也可扩展这个函数,使其接受可选值,如年龄、职业或用户要求的其他信息。例如,下面的修改让你还能存储年龄:
def build_person(first_name,last_name,age=' '): """返回一个字典,其中包含有关一个人的信息""" person = { "first":first_name,"last":last_name} if age: person['age'] = age """在字典中添加age的键值对""" return personmessage = build_person("zi","li",age=18)print(message)#输出结果:{'first':'zi','last':'li','age':18}
传递列表:
将列表传递给函数后,函数就能直接访问其内容。下面使用函数来提高处理列表的效率。假设有一个用户列表,我们要问候其中的每位用户。下面示例将一个名字列表传递给一个名为greet_users()的函数,这个函数中问候列表中的每个人:
def greet_users(names): """向列表中的每位用户都发出简单的问候""" for name in names: msg = "Hello," + name.title() + "!" print(msg)username = ['lizi','qianqian','qiqi']greet_users(usernames)#输出结果:Hello,Lizi!#输出结果:Hello,Qianqian!#输出结果:Hello,Qiqi!
输出完全符合预期,每位用户都看到了一个个性化的问候语。每当你要问候一组用户时,都可调用这个函数。
函数编写指南:
- 指定描述性名称,且只在其中使用小写字母和下划线
- 每个函数都应包含简要地阐述其功能的注释
- 建议每行代码不超过79字符,若超过时,可在函数定义中输入左括号后按回车键,并在下一行按两次Tab键,从而将形参列表和只缩进一层的函数体区别开。
- 如果程序包含多个函数,可使用两个空行将相邻的函数分开。