函数(二)

函数的返回值:

 函数并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值。函数返回的值被称为返回值,在函数中

通过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']

 

posted @ 2017-05-10 21:02  alben-xue  阅读(214)  评论(0编辑  收藏  举报