zoukankan      html  css  js  c++  java
  • 10 练习题:形参 命名空间

    # 1.写函数,函数可以支持接收任意数字(位置传参)并将所有数据相加并返回。
    def sum(*args):
        s = 0
        for i in args:
            s += i
        return s
    
    
    
    # 2.看代码写结果
    # def func():
    #     return 1, 2, 3
    #
    # val = func()
    # print(type(val) == tuple)
    # print(type(val) == list)
    
    # result:
    # True
    # False
    
    
    
    # 3.看代码写结果
    def func(*args, **kwargs):
        print(args)
        print(kwargs)
        pass
    
    # a. 请将执行函数,并实现让args的值为 (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的值分别是?
    # result:
    # args: ('武沛齐', '金鑫',' 女神')
    # kwargs: {}
    # e. 如执行 func({'武沛齐','金鑫','女神'},[11,22,33]),请问 args和kwargs的值分别是?
    # result:
    # args: ({'武沛齐', '金鑫', '女神'}, [11, 22, 33])
    # kwargs: {}
    # f. 如执行 func('武沛齐','金鑫','女神',[11,22,33],**{'k1':'栈'}),请问 args和kwargs的值分别是?
    # result:
    # args: ('武沛齐', '金鑫', '女神',[11, 22, 33])
    # kwargs: {'k1':'栈'}
    
    
    
    # 4.看代码写结果
    def func(name, age=19, email='123@qq.com'):
        pass
    
    # a. 执行 func('alex') ,判断是否可执行,如可以请问 name、age、email 的值分别是?
    # result:可以执行
    # name: 'alex'
    # age: 19
    # email: '123@qq.com'
    # b. 执行 func('alex',20) ,判断是否可执行,如可以请问 name、age、email 的值分别是?
    # result:可以执行
    # name: 'alex'
    # age: 20
    # email: '123@qq.com'
    # c. 执行 func('alex',20,30) ,判断是否可执行,如可以请问 name、age、email 的值分别是?
    # result:可以执行
    # name: 'alex'
    # age: 20
    # email: 30
    # d. 执行 func('alex',email='x@qq.com') ,判断是否可执行,如可以请问 name、age、email 的值分别是?
    # result:可以执行
    # name: 'alex'
    # age: 19
    # email: 'x@qq.com'
    # e. 执行 func('alex',email='x@qq.com',age=99) ,判断是否可执行,如可以请问 name、age、email 的值分别是?
    # result:可以执行
    # name: 'alex'
    # age: 99
    # email: 'x@qq.com'
    # f. 执行 func(name='alex',99) ,判断是否可执行,如可以请问 name、age、email 的值分别是?
    # result:不可执行,实参位置参数应该放在前面
    # g. 执行 func(name='alex',99,'111@qq.com') ,判断是否可执行,如可以请问 name、age、email 的值分别是?
    # result:不可执行,实参位置参数应该放在前面
    
    
    
    # 5.看代码写结果
    # def func(users, name):
    #     users.append(name)
    #     return users
    #
    # result = func(['武沛齐', '李杰'], 'alex')
    # print(result)
    
    # result: ['武沛齐', '李杰', 'alex']
    
    
    
    # 6.看代码写结果
    # def func(v1):
    #     return v1 * 2
    #
    # def bar(arg):
    #     return "%s 是什么玩意?" % (arg,)
    #
    # val = func('你')
    # data = bar(val)
    # print(data)
    
    # result: 你你 是什么玩意?
    
    
    
    # 7.看代码写结果
    def func(v1):
        return v1 * 2
    
    def bar(arg):
        msg = "%s 是什么玩意?" % (arg,)
        print(msg)
    
    val = func('你')
    data = bar(val)
    print(data)
    
    # result:
    # 你你 是什么玩意?
    # None
    
    
    
    # 8.看代码写结果
    # v1 = '武沛齐'
    #
    # def func():
    #     print(v1)
    #
    # func()
    # v1 = '老男人'
    # func()
    
    # result:
    # '武沛齐'
    # '老男人'
    
    
    
    # 9.看代码写结果
    # v1 = '武沛齐'
    #
    # def func():
    #     v1 = '景女神'
    #     def inner():
    #         print(v1)
    #     v1 = '肖大侠'
    #     inner()
    #
    # func()
    # v1 = '老男人'
    # func()
    
    # result:
    # '肖大侠'
    # '肖大侠'
    
    
    
    # 10.看代码写结果【可选】
    # def func():
    #     data = 2 * 2
    #     return data
    #
    # new_name = func
    # val = new_name()
    # print(val)
    # 注意:函数类似于变量,func代指一块代码的内存地址。
    
    # result: 4
    
    
    
    # 11.看代码写结果【可选】
    # def func():
    #     data = 2 * 2
    #     return data
    #
    # data_list = [func, func, func]
    # for item in data_list:
    #     v = item()
    #     print(v)
    # 注意:函数类似于变量,func代指一块代码的内存地址。
    
    # result:
    # 4
    # 4
    # 4
    
    
    
    # 12.看代码写结果(函数可以做参数进行传递)【可选】
    #
    # def func(arg):
    #     arg()
    #
    # def show():
    #     print('show函数')
    #
    # func(show)
    
    # result: 'show函数'
    
    
    
    # 13.写函数,接收n个数字,求这些参数数字的和。(动态传参)
    def sum(*args):
        s = 0
        for i in args:
            s += i
        return s
    
    
    
    # 14.读代码,回答:代码中, 打印出来的值a, b, c分别是什么?为什么?
    # a = 10
    # b = 20
    #
    # def test5(a, b):
    #     print(a, b)
    #
    # c = test5(b, a)
    # print(c)
    
    # result:
    # 20 10
    # None
    
    
    
    # 15.读代码,回答:代码中, 打印出来的值a, b, c分别是什么?为什么?
    # a = 10
    # b = 20
    #
    # def test5(a, b):
    #     a = 3
    #     b = 5
    #     print(a, b)
    #
    # c = test5(b, a)
    # print(c)
    
    # result:
    # 3 5
    # None
    
    
    
    # 16.传入函数中多个列表和字典, 如何将每个列表的每个元素依次添加到函数的动态参数args里面?如何将每个字典的所有键值对依次添加到kwargs里面?
    # result: 传参时将列表放在前面,字典放在后面,利用**完成字典的传参
    
    
    
    # 17.写函数, 接收两个数字参数, 将较小的数字返回.
    def minor(d_1, d_2):
        return d_1 if d_1 < d_2 else d_2
    
    
    
    # 18.写函数, 接收一个参数(此参数类型必须是可迭代对象), 将可迭代对象的每个元素以’_’相连接, 形成新的字符串, 并返回.
    # 例如 传入的可迭代对象为[1, '老男孩', '武sir'] 返回的结果为’1_老男孩_武sir’
    # def connect_iterable(iterable):
    #     list = []
    #     for element in iterable:
    #         list.append(str(element))
    #     return '_'.join(list)
    
    
    
    # 19.有如下函数:
    # def wrapper():
    #     def inner():
    #         print(666)
    #     inner()
    #
    # wrapper()
    # 你可以任意添加代码, 执行inner函数.
    # def wrapper():
    #     def inner():
    #         print(666)
    #     inner()
    #
    # wrapper()
    
    
    
    # 20.相关面试题:
    # 写出下列代码结果:
    def foo(a, b, *args, c, sex=None, **kwargs):
        print(a, b)
        print(c)
        print(sex)
        print(args)
        print(kwargs)
    
    # a.foo(1,2,3,4,c=6)
    # result:
    # 1 2
    # 6
    # None
    # (3, 4)
    # None
    
    # foo(1,2,sex='男',name='alex',hobby='old_woman')
    # result:
    # 不能执行,没有完成 c 的传参
    
    # c.foo(1,2,3,4,name='alex',sex='男')
    # result:
    # 不能执行,没有完成 c 的传参
    
    # d.foo(1,2,c=18)
    # result:
    # 1 2
    # 18
    # None
    # None
    # None
    
    # e.foo(2, 3, [1, 2, 3],c=13,hobby='喝茶')
    # result:
    # 2 3
    # 13
    # None
    # ([1, 2, 3],)
    # {hobby: '喝茶'}
    
    # foo(*[1, 2, 3, 4],**{'name':'太白','c':12,'sex':'女'})
    # result:
    # 1 2
    # 12
    # 女
    # (3, 4)
    # {'name': '太白'}
    
    
  • 相关阅读:
    😉P03 Go 基础知识😉
    😎P03 DB 数据库的约束条件、表关系、修改表语法以及复制表😎
    😉P02 Go 快速上手😉
    C# NPOI导出Excel横向纵向显示
    C# 批量上传文件 添加图片水印
    C# 压缩ZIP
    SQL Server循环插入100000条数据
    C# 特殊字符过滤拦截
    C# 导入Excel到数据库
    C# 实现批量删除功能
  • 原文地址:https://www.cnblogs.com/raygor/p/13266020.html
Copyright © 2011-2022 走看看