zoukankan      html  css  js  c++  java
  • python函数2(返回值、传递列表...)

    python函数2(返回值、传递列表...)

     1、返回值

    1.1、返回简单的值

    1 #返回简单值
    2 def get_formatted_name(first_name,last_name):
    3     """返回整洁的名字"""
    4     full_name = first_name + ' ' + last_name
    5     return full_name.title() #将首字母大写
    6 
    7 musician = get_formatted_name('jim','harry')
    8 print(musician)

    执行结果:

    Jim Harry

    1.2、实参可选

    什么叫参数可选,就是在调用函数时,如果形参中定义的值在函数调用时并不存在,那么怎么要实参可选呢?就是把形参定义一个默认值,这个默认值为即可。

     1 #实参可选
     2 def get_formatted_name(first_name,last_name,middle_name = ''):
     3     """返回整洁的名字"""
     4     if middle_name:
     5         full_name = first_name + ' ' + middle_name + ' '+ last_name
     6     else:
     7         full_name = first_name + " " + last_name
     8     return full_name.title()
     9 
    10 musician = get_formatted_name('jim','harry')
    11 print(musician)
    12 musician = get_formatted_name('jim','harry','coo')
    13 print(musician)

    执行结果:

    Jim Harry
    Jim Py Harry

    1.3、返回字典

    函数可以返回任意值,包括列表、字典等复杂的数据结构

    1 #返回字典
    2 def get_formatted_name(first_name,last_name):
    3     """返回整洁的名字"""
    4     full_name = {'first':first_name,'last':last_name}
    5     return full_name
    6 
    7 musician = get_formatted_name('jim','harry')
    8 print(musician)

    执行结果:

    1 {'last': 'harry', 'first': 'jim'}

    还可以增加年纪等信息

    1 #拓展,增加年纪等信息
    2 def get_formatted_name(first_name,last_name,age = ''):
    3     """返回整洁的名字"""
    4     person = {'first':first_name,'last':last_name}
    5     if age:
    6         person['age'] = age
    7     return person
    8 musician = get_formatted_name('jim','harry',age = '27')
    9 print(musician)

    执行结果:

    1 {'age': '27', 'last': 'harry', 'first': 'jim'}

    1.4、结合使用函数和while循环

    函数可以结合之前学过的while循环进行使用,让人机交互成为可能。

    #结合使用函数和while循环
    def get_formatted_name(first_name,last_name):
        """返回整洁的名字"""
        full_name = first_name + ' ' + last_name
        return full_name
    
    while True:
        print("
    Please inter your name?")
        print("inter q to quit!")
    
        f_name = input('First name :')
        if f_name == 'q':
            break
    
        l_name = input('Last name:')
        if l_name == 'q':
            break
        musician = get_formatted_name(f_name,l_name)
        print(musician)

    2、传递列表(修改列表、禁止函数修改列表)

    使用背景:向函数传递列表很有用,这种列表包含的可能是名字、数字或者更复杂的对象(如字典),将列表传递给函数后,函数就可以直接访问其内容。

     示例:

    将打印出对每个人的问候语。

    1 #传递列表
    2 def greet_users(names):
    3     """向列表中的每位用户都发出简单的问候"""
    4     for name in names:
    5         msg = 'Hello,' + name.title() + "!"
    6         print(msg)
    7 
    8 usernames = ['harry','kobe','james']
    9 greet_users(usernames)

    执行结果:

    1 Hello,Harry!
    2 Hello,Kobe!
    3 Hello,James!

    2.1、在函数中修改列表

    将列表传递给函数后,函数可对其进行修改,在函数中对这个列表所做的任何修改都是永久性的。

     1 #禁止函数修改列表
     2 def print_models(unprinted_desgins,completed_models):
     3     """
     4     模拟打印每个设计,直到没有未打印的设计为止
     5     打印每个设计后,都将其移到列表completed_models中
     6     """
     7     while unprinted_desgins:
     8         current_design = unprinted_desgins.pop()
     9 
    10         #模拟根据设计制作3D打印模型的过程
    11         print('Printing model:' + current_design)
    12         completed_models.append(current_design)
    13 
    14 def show_completed_models(completed_models):
    15     """显式打印好的所有模型"""
    16     print("
    The following models have been printed:")
    17     for completed_model in completed_models:
    18         print(completed_model)
    19 
    20 unprinted_designs = ['iphone case','robot pendant','dodecahedron']
    21 completed_models = []
    22 
    23 print_models(unprinted_designs,completed_models)
    24 show_completed_models(completed_models)

    执行结果:

    1 Printing model:dodecahedron
    2 Printing model:robot pendant
    3 Printing model:iphone case
    4 
    5 The following models have been printed:
    6 dodecahedron
    7 robot pendant
    8 iphone case

    2.2、禁止函数修改列表

    #禁止函数修改列表
    print_models(unprinted_designs[:],completed_models)

    执行结果:

    Printing model:dodecahedron
    Printing model:robot pendant
    Printing model:iphone case

    3、传递任意数量的实参

    使用背景:不知道函数需要接受多少个实参,函数无法处理超出预定形参的实参数量,那么可以只用一个形参 *toppings;

    这样不管提供了多个实参,都可以收入。

    示例:

    1 #传递任意数量的实参
    2 def user_name(*toppings):
    3     print(toppings)
    4 
    5 user_name('Harry','james','kobe')

    执行结果:

    ('Harry', 'james', 'kobe')

    以上,将执行结果封装在一个元祖中。

    也可以对输入的实参进行遍历操作:

    1 def user_name(*toppings):
    2     print("
    点名情况如下:")
    3     for topping in toppings: #进行遍历操作
    4         print(topping)
    5 
    6 user_name('Harry','james','kobe')

    执行结果:

    1 点名情况如下:
    2 Harry
    3 james
    4 kobe

    3.1、结合使用位置实参和任意数量实参

    可以在函数名增加一些班级、性别等形参,这样就会使用位置实参

    1 #结合使用位置实参和任意数量实参
    2 
    3 def user_name(classes,*toppings):
    4     print(classes + "点名情况如下:")
    5     for topping in toppings:
    6         print(topping)
    7 
    8 user_name("高3(1)班",'Harry','james','kobe')

    执行结果:

    高3(1)班点名情况如下:
    Harry
    james
    kobe
  • 相关阅读:
    详解softmax函数以及相关求导过程 (转载自知乎)
    每日算法
    每日算法
    每日算法
    每日算法
    每日算法
    广度优先搜索算法
    java实现fp-growth算法
    频繁项集挖掘之Aprior和FPGrowth算法
    频繁项集挖掘之apriori和fp-growth
  • 原文地址:https://www.cnblogs.com/aszeno/p/10386149.html
Copyright © 2011-2022 走看看