zoukankan      html  css  js  c++  java
  • python随笔10(返回值)

    函数并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值。函数返回的值被称为返回值。在函数中,可以使用return语句将值返回到调用函数的代码行。返回值让你能够将程序的大部分繁重工作转移到函数中完成,从而简化主程序。

    返回简单值

    下面看一个函数,它接受名和姓并返回整洁的姓名:

    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)

    函数get_formatted_name()的定义通过形参接受名和姓。它将姓和名合二为一,在它们中间加上一个空格,并将结果存储在变量full_name中。然后,将full_name的值转换为首字母大写,并将结果返回到函数调用行。

    调用返回值的函数时,需要提供一个变量,用于存储返回的值。在这里,将返回值存储在了变量musician中。

    Jimi Hendrix

    让实参变成可选的

    有时候,需要让实参变成可选的,这样使用函数的人就只需在必要时才提供额外的信息。对使用默认值来让实参变成可选的。

    例如,假设我们要扩展函数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指定一个默认值——空字符串,并在用户没有提供中间名时不使用这个实参。为让get_formatted_name()在没有提供中间名时依然可行,可给实参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('jimi' ,'hendrix','lee')
    print(musician)

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

    Jimi Hendrix
    Jimi Lee Hendrix

    返回字典

    函数可返回任何类型的值,包括列表和字典等较复杂的数据结构。

    例如,下面的函数接受姓名的组成部分,并返回一个表示人的字典。

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

    函数build_person()接受名和姓,并将这些值封装到字典中。存储first_name的值时,使用的键为’first’,而存储last_name()的值时,使用的键为’last’。最后,返回表示人的整个字典。

    {'first': 'jimi', 'last': 'hendrix'}

    结合使用函数和while循环

    可将函数同前面写的任何python结构结合起来使用。

    例如,下面将结合使用函数get_formatted_name()和while循环,以更正规的方式问候用户。

    def get_formatted_name(first_name,last_name):
        full_name = first_name + ' ' + last_name
        return full_name.title()
    
    #这是一个无限循环
    while True:
        print("
    Please tell me your name:")
        f_name = input("First name: ")
        l_name = input("Last name: ")
        
        formatted_name = get_formatted_name(f_name,l_name)
        print("
    Hello, " + formatted_name +'!')

    这个while循环存在着一个问题:没有定义退出条件。我们要让用户能够尽可能容易退出,因此每次提示用户输入时,都应提供退出途径。每次用户输入时,都使用break语句提供了退出循环的简单途径:

    def get_formatted_name(first_name,last_name):
        full_name = first_name + ' ' + last_name
        return full_name.title()
    
    while True:
        print("
    Please 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("
    Hello, " + 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
  • 相关阅读:
    BZOJ3790 : 神奇项链
    BZOJ3630 : [JLOI2014]镜面通道
    BZOJ3738 : [Ontak2013]Kapitał
    个人总结
    mac 下的 top 命令
    去掉Xcode源码末尾的空格
    让UILabel的文字顶部对齐
    使用RBTool自动提交code review请求
    不要在init和dealloc函数中使用accessor
    将textField编辑完内容作为参数发送请求
  • 原文地址:https://www.cnblogs.com/wf1017/p/9425302.html
Copyright © 2011-2022 走看看