caca_c 2021-08-11 13:55 采纳率: 50%
浏览 47
已结题

请问左边的程序运行之后为什么结果是右边那样的?

img

  • 写回答

2条回答 默认 最新

  • vigiles 2021-08-11 14:25
    关注

    方法定义那里的星星你一定是理解的,调用方法那里的星星的确有点懵人 。

    name = ["张三", "李四"]
    info = {"年龄": "20", "性别": "男"}
    
    # def f(a, *b, **c) 方法定义,
    #   第一个参数a,只接收一个数据,
    #   第2个参数*b,接收‘一串’数据-元组,它先吃饱,剩下的才给右边参数。
    #   第3个参数**c,接收一个字典。
    
    f(name, "Hello", info) 
    # 虽然name列表,但是作为独立的个体数据参数,直接被a接收。
    # hello 和字典也都是独立的个体,直接被b全收了。
    print()
    # <class 'list'>  ['张三', '李四']
    # <class 'tuple'> ('Hello', {'年龄': '20', '性别': '男'})
    # <class 'dict'>  {}
    
    f(name, "Hello", **info)
    # name是独立个体,被a接收
    # hello是个体,被可变参数接收者b收了,
    # info前面带了**,所以它作为‘字典’传入,由专门接收字典的c接收
    print()
    # <class 'list'>  ['张三', '李四']
    # <class 'tuple'> ('Hello',)
    # <class 'dict'>  {'年龄': '20', '性别': '男'}
    
    f(*name, "Hello", **info)
    # name前面带个*,说明它的元素们作为独立个体参数,
    # 相当于 f("张三", "李四", "Hello", **info)
    # a只接收一个‘张三’,剩下的自然是b接收,直到info是传给c的
    print()
    # <class 'str'>   张三
    # <class 'tuple'> ('李四', 'Hello')
    # <class 'dict'>  {'年龄': '20', '性别': '男'}
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月19日
  • 已采纳回答 8月11日
  • 创建了问题 8月11日

悬赏问题

  • ¥15 滑块验证码移动速度不一致问题
  • ¥15 定制ai直播实时换脸软件
  • ¥100 栈回溯相关,模块加载后KiExceptionDispatch无法正常回溯了
  • ¥15 麒麟V10桌面版SP1如何配置bonding
  • ¥15 Marscode IDE 如何预览新建的 HTML 文件
  • ¥15 K8S部署二进制集群过程中calico一直报错
  • ¥15 java python或者任何一种编程语言复刻一个网页
  • ¥20 如何通过代码传输视频到亚马逊平台
  • ¥15 php查询mysql数据库并显示至下拉列表中
  • ¥15 freertos下使用外部中断失效