• day10__回顾和作业


    一、昨天内容回顾

    ​ 1、函数的参数

    ​ 1)实参角度:位置参数、关键字参数、混合参数

    ​ 2)形参角度:位置参数、默认参数、仅限关键字参数,万能参数

    ​ 3)形参角度参数顺序:位置参数,*args,默认参数,仅限关键字参数,**kwargs

    ​ 2、*的魔性用法:

    ​ 1)函数的定义时:代表聚合

    ​ 2)函数的调用时:代表打散

    ​ 3、python中存在的三个空间:

    ​ 内置名称空间:存储的内置函数:print, input.....

    ​ 全局名称空间:py文件,存放的是py文件(除去函数,类内部的)的变量,函数名与函数的内存地址的关系

    ​ 局部名称空间:存放的函数内部的变量与值的对应关系

    ​ 4、加载顺序:内置名称空间------->全局名称空间------>局部名称空间(执行函数时候)

    ​ 5、调取顺序:就近原则。 局部名称空间------>全局名称空间----->内置名称空间

    ​ 1) 局部作用域只能引用全局变量,不能修改。

    ​ 6、作用域:

    ​ 1)全局作用域 :内置名称空间+全局名称空间

    ​ 2)局部作用域:局部名称空间

    二、作业:

    1、看代码写结果

    def func():
        return 1, 2, 3
    
    val = func()
    print(val)
    print(type(val) == tuple)
    print(type(val) == list)
    
    
    # 输出结果:True   False
    

    2、看代码写结果

    def func(*args, **kwargs):
        print(args)
        print(kwargs)
    # a. 请将执行函数,并实现让args的值为 (1,2,3,4)
    func(1, 2, 3, 4)
    func(*[1,2,3,4])
    # b. 请将执行函数,并实现让args的值为 ([1,2,3,4],[11,22,33])
    func([1,2,3,4],[11,22,33])
    # c. 请将执行函数,并实现让args的值为 ([11,22],33) 且 kwargs的值为{'k1':'v1','k2':'v2'}
    func([11,22],33,k1='v1',k2='v2')
    # d. 如执行 func(*{'武沛齐','金鑫','女神'}),请问 args和kwargs的值分别是?
    func(*{'武沛齐','金鑫','女神'})
    # e. 如执行 func({'武沛齐','金鑫','女神'},[11,22,33]),请问 args和kwargs的值分别是?
    func({'武沛齐','金鑫','女神'},[11,22,33])
    # f. 如执行 func('武沛齐','金鑫','女神',[11,22,33],**{'k1':'栈'}),请问 args和kwargs的值分别是?
    func('武沛齐','金鑫','女神',[11,22,33],**{'k1':'栈'})
    

    3、看代码写结果

    def func(name,age=19,email='123.qq.com'):
        print(name,age,email)
    #a执行func('mrxiong'),判断是否可执行,请可以访问name、age、email的值分别是什么?
    func('mrxiong')
    #b执行func('mrxiong',20),判断是否可执行,请可以访问name、age、email的值分别是什么?
    func('mrxiong',20)
    #c执行func('mrxiong',20,30),判断是否可执行,请可以访问name、age、email的值分别是什么?
    func('mrxiong',20,50)
    #d执行func('mrxiong,email='x@qq.com'),断是否可执行,请可以访问name、age、email的值分别是什么?
    func('mrxiong',email='x@qq.com')
    #e执行func('mrxiong,email='x@qq.com',age=99),断是否可执行,请可以访问name、age、email的值分别是什么?
    func('mrxiong',email='x@qq.com',age=99)
    #f执行func(name='mrxiong',99),断是否可执行,请可以访问name、age、email的值分别是什么?
    func(name='mrxiong',99)
    #g执行func(name='mrxiong',99,'111@qq.com'),断是否可执行,请可以访问name、age、email的值分别是什么?
    func(name='mrxiong',99,'111@qq.com')
    

    4、看代码写结果

    def func(users,name):
        users.append(name)
        return users
    result = func(['mrxiong','张三'],'alex')
    print(result)
    #返回结果:
    #['mrxiong', '张三', 'alex']
    

    5、看代码写结果

    def func(users,name):
        users.append(name)
        return users
    result = func(['mrxiong','张三'],'alex')
    print(result)
    输出结果:
        ['mrxiong', '张三', 'alex']
    

    6、看代码写结果

    a = 10
    b = 20
    def test(a,b):
        return a ,b
    c = test(b,a)
    print(c)
    输出结果:
        (20, 10)
    

    7、看代码写结果

    def a(*args):
        count = 0
        for i in args:
            count += i
        return count
    c = a(1,2,3,4,5)
    print(c)
    输出结果:
    15
    

    三、补坑(默认参数的坑,作用域的坑)

    1、如果你的默认参数指向的是可变的数据类型,那么你无论调用多少次这个默认参数,都是指向同一个

    def func(a,list=[]):
        list.append(a)
        return list
    print(func(10,))
    print(func(20,))
    输出结果:
     [10]
    [10, 20]   
    

    2、在函数中,如果你定义了一个变量,但是在定义这个变量之前对其引用了,那么解释器认为语法问题。
    你应该在使用之前先定义

    count = 1
    def func():
        print(count)
        count = 3
    func()
    输出结果:
    UnboundLocalError: local variable 'count' referenced before assignment
    

    3、global 全局

    ​ 1)、在局部作用域 声明一个全局变量

    name = 'alex'
    def func():
        global name
        name = 'mrxiong'
    print(name)
    func()
    print(name)
    输出结果:
    alex
    mrxiong
    

    2)可以修改一个全局变量

    count = 1
    def func1():
        global count
        count += 1
    print(count)
    func1()
    print(count)
    输出结果:
        1
        2
    

    4、nonlocal

    不能够操作全局于变量。局部作用域,内层函数对外层函数的局部变量进行修改

    def wrapper():
        count = 1
        def inner():
            nonlocal count
            count += 1
        print(count)
        inner()
    wrapper()
    输出结果:
        1
    
  • 相关阅读:
    进制转换内容总结
    【Linux】Tomcat安装及端口配置
    【Linux】 JDK安装及配置 (linux-tar.gz版)
    判断集合元素唯一
    linux服务器上部署项目,同时运行两个或多个tomcat
    阿里服务器CentOS报错base ls command not found
    java接受安卓及ios App上传的图片,并保存到阿里OSS
    java-随机生成用户名(中文版及英文版)
    java-将评论内容过滤特殊表情emoj符号,保存到mysql中
    jdbc连接阿里云服务器上的MySQL数据库 及 数据库IP限制
  • 原文地址:https://www.cnblogs.com/mr-xiong/p/13201169.html
Copyright © 2020-2023  润新知