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
  • 相关阅读:
    C#利用反射动态调用类及方法
    系统程序监控软件
    SQL server 2008 安装和远程访问的问题
    sql server 创建临时表
    IIS 时间问题
    windows 2008 安装 sql server 2008
    sql server xml nodes 的使用
    Window 7sp1 安装vs2010 sp1 打开xaml文件崩溃
    CSS资源网址
    Could not load type 'System.ServiceModel.Activation.HttpModule' from assembly 'System.ServiceModel, Version=3.0.0.0
  • 原文地址:https://www.cnblogs.com/btschang/p/9645440.html
Copyright © 2011-2022 走看看