zoukankan      html  css  js  c++  java
  • Python学习(第七章)

    一、函数的参数赋值

    1. 函数的返回值是 元组,小括号可以省略

        return a, b

    2. 如果希望单独处理元组中的元素,可以使用多个变量一次接收函数的返回结果

        temp, wetness = measure()

    注意,变量的个数应和元组中元素的个数保持一致

    面试题 -- 交换两个数字

    要求:两个整数变量 a = 6, b = 100,不使用其他变量交换两个变量的值

    a,b = b,a # 等号右边是元组

    面试题 -- +=

    【重点】对于数字和字符串,+=相当于先相加再赋值 num = num + num

               对于列表, +=相当于调用.extend()函数 num_list = num_list.extend(num_list),调用方法不会修改引用,外部值被修改

    def demo(num, num_list):
        print("函数开始")
    
        num += num
        num_list += num_list
    
        print(num)
        print(num_list)
        print("函数结束")
    
    
    gl_num = 9
    gl_list = [1,2,3]
    demo(gl_num,gl_list)
    print(gl_num)
    print(gl_list)
    -------------------------------------------------------------------------------------------------
    函数开始
    200
    [1, 2, 3, 1, 2, 3]
    函数结束
    100
    [1, 2, 3, 1, 2, 3]

    二、 缺省参数

    将常见的值设置为参数的缺省值,简化函数的调用

    1. 缺省参数放在后面

    2. 具有多个缺省参数的情况,要指定缺省参数的参数名

    def print_info(name, age=18, gender=True):
        gender_text = "男生"
        if not gender:
            gender_text = "女生"
        print("%s是%s,%d岁" % (name, gender_text, age))
    
    
    print_info("小明", 22)
    print_info("小畅", gender=False)
    -------------------------------------------------------------------------------------------------------------

    小明是男生,22岁
    小畅是女生,18岁

    三、 多值参数

    1. 需求: 一个函数 能够处理的参数 个数 是不确定的,就可以使用 多值参数

    2. Python 中有 两种 多值参数

    > 参数名前增加一个 * 可以接收 元组

    > 参数名前增加两个 * 可以接收 字典

    3. 一般在给多值参数命名时,习惯使用以下两个名字

    > *args -- 存放 元组 参数,前面有一个 *

    > **kwargs -- 存放 字典 参数,前面有两个 *

    (args是arguments的缩写,有 变量 的含义,kw是keyword的缩写,kwargs可以记忆 键值对参数)

    def demo(num, *nums, **person):
        print(num)
        print(nums)
        print(person)
    
    
    # demo(1)
    demo(1, 2, 3, 4, 5, name="小明", age=18)
    -----------------------------------------------------------------------------------------------------
    1
    (2, 3, 4, 5)
    {'age': 18, 'name': '小明'}

    多值参数案例 --计算任意多个数字的和

    def sum_numbers(*args):
        result = 0
        for i in args:
            result += i
        return result
    
    
    print(sum_numbers(1,2,3,4))
    ------------------------------------------------------------------------------------------------------
    10

    4. 元组和字典的拆包

    在调用多值函数时,如果希望:

    将一个元组直接传递给 args

    将一个字典直接传递给 kwargs

    就可以使用 拆包 ,拆包的方式是:

    在元组变量前增加一个 *

    在字典变量前增加两个 **

    def demo(*args, **kwargs):
        print(args)
        print(kwargs)
    
    gl_nums = {1,2,3}
    gl_dict = {"name":"小明", "age":18}
    
    # 注意下面三种方法的区别
    demo(gl_nums,gl_dict)
    
    print('*'*20)
    
    demo(*gl_nums, **gl_dict)
    
    print('*'*20)
    
    demo(1,2,3,name="小明",age=18)
    -------------------------------------------------------------------------------------------------------------------
    ({1, 2, 3}, {'name': '小明', 'age': 18})
    {}
    ********************
    (1, 2, 3)
    {'name': '小明', 'age': 18}
    ********************
    (1, 2, 3)
    {'name': '小明', 'age': 18}

     

    四、 函数的递归

    注意】递归一定要有出口

    def sum_number(num):
        print(num)
        # 递归的出口,但参数满足某个条件时,不再执行函数
        if num ==1:
            return 
        sum_number(num-1)
    
    sum_number(3)
    ------------------------------------------------------------------------

    3
    2
    1

    递归案例

    # 定义一个函数 sum_numbers
    # 能够接收一个num的整数参数
    # 计算 1+2+...+num 的结果
    result = 0
    def sum_numbers(num):
        if num == 1:
            return 1
        num = num+ sum_numbers(num-1)
        return num
    print(sum_numbers(100))
    ------------------------------------------------------------------------------------------------------
    5050
  • 相关阅读:
    UML 类与类之间的关系
    HTTP协议基础
    LDAP介绍
    UML 类与类之间的关系
    我的桌面
    RoR的OO与敏捷[1][88250原创]
    Ubuntu7.10纯仿Leopard[00原创]
    37个我爱Ruby的理由
    在Ubuntu 7.10上安装Rails[00整理]
    RoR的OO与敏捷[1][88250原创]
  • 原文地址:https://www.cnblogs.com/btschang/p/9645440.html
Copyright © 2011-2022 走看看