在函数中,return语句能将值返回到调用函数的代码行。
1、返回简单值
def get_formatted_name(first_name,last_name):
"""返回整洁的姓名"""
full_name=first_name+' '+last_name
return full_name.title()
musician=get_formatted_name('jimi','hendrix')
print(musician)
这个函数接受名和姓,返回姓名
Jimi Hendrix
2、让实参变成可选的
有时候需要让实参变成可选的,这样使用函数的人就只需在必要的时候才提供额外的信息。可使用默认值来让实参变成可选的
def get_formatted_name(first_name,middle_name,last_name):
"""返回整洁的姓名"""
full_name=first_name+' '+middle_name+' '+last_name
return full_name.title()
musician=get_formatted_name('john','lee','hooker')
print(musician)
扩展上面的函数,让它可以处理中间名
John Lee Hooker
然而并非所有人都有中间名
def get_formatted_name(first_name,last_name,middle_name=''):
"""返回整洁的姓名"""
if middle_name:
full_name=first_name+' '+middle_name+' '+last_name
else:
full_name=first_name+' '+last_name
return full_name.title()
musician=get_formatted_name('jimi','hendrix')
print(musician)
musician=get_formatted_name('john','hooker','lee')
print(musician)
可给实参middle_name指定一个默认值——空字符串,并将其移到形参列表的末尾
Jimi Hendrix
John Lee Hooker
3、返回字典
函数可返回任何类型的值,包括列表和字典等较复杂的数据结构。
def build_person(first_name,last_name):
"""返回一个字典,其中包含有关一个人的信息"""
person={'first':first_name,'last':last_name}
return person
musician=build_person('jimi','hendrix')
print(musician)
结果
{'first': 'jimi', 'last': 'hendrix'}
还可以继续添加信息
def build_person(first_name,last_name,age=''):
"""返回一个字典,其中包含有关一个人的信息"""
person={'first':first_name,'last':last_name}
if age:
person['age']=age
return person
musician=build_person('jimi','hendrix',age=27)
print(musician)
结果
{'first': 'jimi', 'last': 'hendrix', 'age': 27}
4、结合使用函数和while循环
def get_formatted_name(first_name, last_name):
"""返回整洁的姓名"""
full_name = first_name + ' ' + last_name
return full_name.title()
while True:
print("\nPlease tell me your name:")
print("(enter 'q' at any time to quit)")
f_name = input("First name: ")
if f_name=='q':
break
l_name = input("Last name: ")
if l_name=='q':
break
formatted_name = get_formatted_name(f_name, l_name)
print("\nHello, " + formatted_name + "!")
结果
Please tell me your name:
(enter 'q' at any time to quit)
First name: eric
Last name: matthes
Hello, Eric Matthes!
Please tell me your name:
(enter 'q' at any time to quit)
First name: q
Process finished with exit code 0