python函数之返回值

返回值

函数它老人家并非总是直接显示输出,它啊,还可以处理一些数据,并返回一个或一组值。函数返回的值称为返回值。在函数中,可使用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

在需要分别存储大量名和姓的大型程序中,像get_formatted_name()这样的函数非常有用。分别存储名和姓,每当需要显示姓名时都调用这个函数。

2.让实参变成可选的

有时候,需要让实参变成可选的,这样使用函数的人就只需在必要时才提供额外的信息。可使用默认值来让实参变成可选的。
例如,假设要扩展函数get_formatted_name(),使其还处理中间名。为此,可将其修改成类似于下面这样:

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('jimi', 'lee' , 'hendrix')
print(musician)
Jimi Lee Hendrix

只要保证三个参数完全正确,函数就可以正确的运行,但是,参数中有可能会有不需要的
,当传递参数不完全时,函数就无法运行。因此为了让参数变成可选的,可以给函数的参数指定一个默认值,比如中间名,不一定每个人都有,所以呢,而已给middle_name一个默认值------空字符串,并在用户没有中间名时不使用这个形参,并将其移到形参列表的末尾:

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('join' , 'hooker' , 'lee')
print(musician)
Jimi Hendrix
Join Lee Hooker

在函数体中,检查是否提供了中间名。python将非空字符串解读为True,因此如果函数调用中提供了中间名,if middle_name将为True。如果函数调用中没有提供中间名,if middle_name将为False。

3.返回字典

函数可返回任何类型的值,包括列表和字典等较为复杂的数据结构。
比如,下面的函数接受姓名的组成部分,并返回一个表示人的字典:

def build_person(first_name, last_name):
	person = {'first': first_name, 'last':last_name}
	return person
	
musician = build_person('jimi' , 'hendrix')
print(musician)
{'last': 'hendrix', 'first': 'jimi'}

函数build_person()接受名和姓,并将这些值封装到字典中,存储first_name的值时,使用的键为’first’,而存储last_name的值时,使用的键为’last’。最后,返回表示人的整个字典,然后打印这个返回值,此时原来的两项文本信息存储在一个字典中。
这个函数接受简单的文本信息,将其放在一个更合适的数据结构中,不仅能打印这些信息,还能以其他方式处理他们,还可以扩展这个函数,使其接受可选值,如中间名、年龄、职业、或你要存储的其他任何信息。
比如,存储年龄:

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)
{'age': 27, 'last': 'hendrix', 'first': 'jimi'}

4.结合使用函数和while循环

可将函数同前面介绍的任何python结构结合起来使用。
例如:

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()

while True:
	print("\nPlease tell me your name:")
	print("(enter 'q' at any time to quit)")
	f_name = input("First name: ")
	l_name = input("Last name: ")
	
	if f_name == 'q':
		break
	if l_name == 'q':
		break
	
	formatted_name = get_formatted_name(f_name, l_name)
	print("\nHello, " + formatted_name + "!")
Please tell me your name:
First name: Bob
Last name: bob

Hello, Bob Bob!

Please tell me your name:
First name: q
Last name: q
------------------
(program exited with code: 0)
Press return to continue

练习:

def city_country(city,country):
		count = city + " , " + country
		return count.title()

city = city_country('beijing' , 'zhongguo')
print(city)
city = city_country('daming' , 'handan')
print(city)
city = city_country('shanghai' , 'zhongguo')
print(city)
Beijing , Zhongguo
Daming , Handan
Shanghai , Zhongguo

练习:

def make_album(name,album,total = ''):
	totalcount = {'name' : name, 'album' :album}
	if total:
		totalcount['total'] = total
	return totalcount
	
count = make_album('xuwei','jia')
print(count)
count = make_album('zhaolei','minyao',total = 50)
print(count)
{'name': 'xuwei', 'album': 'jia'}
{'name': 'zhaolei', 'album': 'minyao', 'total': 50}
发布了53 篇原创文章 · 获赞 19 · 访问量 2374

猜你喜欢

转载自blog.csdn.net/m0_37757533/article/details/105619743