《Python编程:从入门到实践(第二版)》自学笔记(十四)

返回值

返回值是函数执行结束后返回的一个或一组值,可使用return语句将值返回到调用函数的代码行,返回值能够将程序的大部分繁重工作移到函数中去完成,从而简化主程序

首先,来一看一下函数返回一个简单值

1
2
3
4
5
6
7
def get_formatted_name(first_name, last_name): 
"""返回整洁的姓名。"""
full_name = f"{first_name} {last_name}"
return full_name.title()
musician = get_formatted_name('jimi', 'hendrix')
print(musician)
输出:Jimi Hendrix

但有时name不只是只有first_name, last_name,也许还会有middle_name……或者更多,所以此时就会涉及到让实参变成可选,我们可以把可能用不到的实参进行默认初始化,且放于函数括号的最后

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def get_formatted_name(first_name, last_name, middle_name=''):
"""返回整洁的姓名。"""
if middle_name:
full_name = f"{first_name} {middle_name} {last_name}"
else:
full_name = f"{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)
输出:
Jimi Hendrix
John Lee Hooker

当然,函数在进行返回时,返回的类型是多样化的,可能是:字符串、数值、列表甚至字典等比较复杂的数据结构

1
2
3
4
5
6
7
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'}

倘若对上面的代码块进行如下的优化,那么函数的代码逻辑又将变得更为复杂

1
2
3
4
5
6
7
8
9
def build_person(first_name, last_name, age=None):
"""返回一个字典,其中包含有关一个人的信息。"""
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'}

与此同时,上面的示例是结合if语句来进行条件测试,因为此时age有数值,所以布尔类型是True,将27赋予变量元素age,最终通过函数返回一个字典,字典中包含年龄的键值对。但往往也会跟while循环相结合

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def get_formatted_name(first_name, last_name):
"""返回整洁的姓名。"""
full_name = f"{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(f"\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
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2019-2024 Carrol Chen
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信