函数(二)
函数的返回值:
函数并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值。函数返回的值被称为返回值,在函数中
通过return语句将值返回到屌用函数的代码行。
#返回值让你能够将程序的大部分繁重工作移到函数中去完成,从而简化主程序#
def get_formatted_name(first_name,last_name):
""" 获取全名"""
full_name = first_name + ' ' + last_name
return full_name.tile()
这个函数可以用来反悔用户的全名,效果:
>>> get_formatted_name('xue','lingming')
'Xuelingming'
让实参变得可选:
通过对形参定义一个空格符号,就可以实现可选,例如:
def physical_examination(name,height,weight,measurements):
"""获取体检报告"""
report = name + '=' + height + ',' + weight + ',' + measurements
return report.title()
>>> physical_examination('kardashian','175','150','"91/64/93"')
'Kardashian=175,150,"91/64/93"'
这个函数用于进行体检输出,包括:身高,体重,三围!
但是三围只适用于女性,但是这个函数是男女通用的,所以需要对形参三围指定一个默认值,让实参可选。
修改:
def physical_examination(name,height,weight,measurements=' '):
"""获取体检报告"""
report = name + '=' + height + ',' + weight + ',' + measurements
return report.title()
用alben进行测试:
>>> physical_examination('alben','165','125')
'Alben=165,125, '
让函数返回字典:
函数可以返回任何类型的值,包括字典和列表等较复杂的数据结构,例如:
def register(username,mail_addr):
"""user register"""
userinfo = {'user-id' : username , 'mail' : mail_addr }
print(userinfo)
传递列表:
将列表传递给函数后,函数可以直接访问其内容,提高列表的处理能力~
例如——
给列表中所有人问好
>>> friends = ['alben','nichole','tom']
>>> def hi(lists):
for name in lists:
msg = 'hello, ' + name.title() + '!'
print(msg)
>>> hi(friends)
hello, Alben!
hello, Nichole!
hello, Tom!
#首先,定义了一个列表,叫做‘friends’ 其中包含三个元素“alben、nichole、tom”
#其次,定义了一个函数,叫做hi(lists):
在函数中for循环传入的列表,每次循环都创建遍历msg,并且print
在函数中修改列表:
将列表传递给函数后,函数就可以对其进行修改,在函数中对列表修改时永久性的!
通过使用函数修改列表可以高效的处理大量的数据
使用函数完成下列工作:
有两个列表:
1,names
2,contacts
如果names中的人名在contacts中,则问好(提示已知联系人),
如果names中的人名不在contacts中,则添加,并且问好
最后,输出更新后的contact
脚本:
#!/usr/bin/env python
#filename:update_contact.py
# -*- coding: UTF-8 -*-
contacts = ['nichole','tom','curry','harden','kobe','faker','uzi','cool']
names = ['tom','thompson','johnson']
def update(known,unknow):
for somebody in unknow:
if somebody in known:
print(somebody.title() + ',' + '已经在通讯录中。')
else:
known.append(somebody)
print(somebody.title() + ',' + '添加到通讯录中。')
new_contacts = str(known)
print('更新后的通讯录\n' + new_contacts)
update(contacts,names)
解释:
该脚本中核心部分就是 if ... in ...:语句,
把给定的names进for遍历,去判断每一个元素是否在已知通讯录中。
效果:
[root@Python-Test Day4]# ./update_contact.py
Tom,已经在通讯录中。
Thompson,添加到通讯录中。
Johnson,添加到通讯录中。
更新后的通讯录
['nichole', 'tom', 'curry', 'harden', 'kobe', 'faker', 'uzi', 'cool', 'thompson', 'johnson']