notes notes
首页
  • 主题初衷与诞生
  • 介绍
  • 快速上手
  • 目录结构
  • 相关文章

    • 使目录栏支持h2~h6标题
    • 如何让你的笔记更有表现力
    • 批量操作front matter工具
    • 部署
    • 关于写文章和H1标题
    • 关于博客搭建与管理
  • PostgreSQL 全文搜索
  • 依赖注入
  • 开发常见问题
  • 逻辑删除
  • TCP 粘包和拆包
  • netty 粘包和拆包
  • 在k8s集群中搭建一个harbor私有仓库
  • 优雅停机
  • helm 命令学习
  • yield 关键字
  • 不定参数
TODO
  • REST API
  • 使用 IntelliJ IDEA 反编译 jar
  • Spring Boot 删除前后空白字符
  • 设计模式

    • 装饰器模式
Docker
Tool Box (opens new window)
GitHub (opens new window)
首页
  • 主题初衷与诞生
  • 介绍
  • 快速上手
  • 目录结构
  • 相关文章

    • 使目录栏支持h2~h6标题
    • 如何让你的笔记更有表现力
    • 批量操作front matter工具
    • 部署
    • 关于写文章和H1标题
    • 关于博客搭建与管理
  • PostgreSQL 全文搜索
  • 依赖注入
  • 开发常见问题
  • 逻辑删除
  • TCP 粘包和拆包
  • netty 粘包和拆包
  • 在k8s集群中搭建一个harbor私有仓库
  • 优雅停机
  • helm 命令学习
  • yield 关键字
  • 不定参数
TODO
  • REST API
  • 使用 IntelliJ IDEA 反编译 jar
  • Spring Boot 删除前后空白字符
  • 设计模式

    • 装饰器模式
Docker
Tool Box (opens new window)
GitHub (opens new window)
  • yield 关键字
  • 不定参数
    • 深入分析
      • 拆分可迭代对象
      • 可变变量的赋值
      • 函数的可选参数标志
目录

不定参数

python中有两种常见的不定参数:

  • *args: 用于传递不定数量的位置参数(Positional Arguments),这些参数将被收集到元组(Tuple)中
  • **kwargs: 用于传递不定数量的关键字参数(Keyword Arguments),这些参数将被收集到字典(Dictionary)中
def print_arguments_and_keywords(*args, **kwargs):
    for arg in args:
        print("Positional argument:", arg)
    for key, value in kwargs.items():
        print("Keyword argument:", key, value)

# 调用函数并传递位置参数和关键字参数
print_arguments_and_keywords('Hello', 'World', name='Alice', age=25)

输出为

('Positional argument:', 'Hello')
('Positional argument:', 'World')
('Keyword argument:', 'age', 25)
('Keyword argument:', 'name', 'Alice')

# 深入分析

* 和 ** 在python中主要有三种用途:

  • 拆分可迭代对象
  • 可变变量的赋值
  • 函数的可选参数标志

# 拆分可迭代对象

在 python 中,实现了 __iter__ 函数的对象都是可迭代对象,如 tuple、list、dict、set、string等。

拆分结果作为函数参数使用:

# 以下几行代码输出都是: a b c
print('a', 'b', 'c')
print(*('a', 'b', 'c'))
print(*['a', 'b', 'c'])
print(*{'a': 1, 'b': 2, 'c': 3})
print(*'abc')

拆分结果用于构建 tuple、list、dict、set 等:

print([*'abc'])
print((*'abc'))
print((*'abc', 'd'))

# 可变变量的赋值

# list 的第一个元素赋值给 a,剩余元素赋值给 b
a, *b = [1, 2, 3]
print(a) # 输出为:1
print(b) # 输出为:[2, 3]

# list 的第一个元素赋值给 a,最后一个赋值给c,剩余元素赋值给 b
a, *b, c = [1, 2, 3, 4]
print(a) # 输出为:1
print(b) # 输出为:[2, 3]
print(c) # 输出为:4

# 函数的可选参数标志

函数的可选参数标志其实是前边两点的综合运用。

*args 的意义是将一个可迭代对象拆开,拆出的结果数量不定,用其表示函数的可变参数。

**kwargs 的意义是将一个字典拆开,拆出的结果数量不定,也用其表示函数的可变参数。

上次更新: 2023/12/08, 06:34:37
yield 关键字

← yield 关键字

Theme by Vdoing | Copyright © 2023-2023
Powered by vuepress-theme-vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式