def function(*param, **param) 解析 | Python
一、def function(*param)—传递任意数量的实参 有时候,由于预先不知道函数需要接受多少个实参,Python允许函数从调用语句中收集任意数量的实参。 code 1: def make_pizza(*toppings): """打印顾客点的所有配料""" print(toppings) make_pizza('pepperoni') make_pizza('mushrooms', 'green peppers', 'extra cheese') ('pepperoni',) ('mushrooms', 'green peppers', 'extra cheese') 形参 在Python编程语言中,函数是组织代码的基本单元,它们可以接收参数并返回结果。当我们需要定义一个函数,但不确定调用时会传入多少个参数时,Python提供了一种灵活的方式来处理这种情况,这就是通过`*param`和`**param`语法。这两个语法允许我们传递任意数量的位置参数和关键字参数。 我们来看`*param`的用法。`*param`语法用于接收任意数量的位置参数,也就是非关键字参数。位置参数是按照它们在调用函数时的顺序来传递的。在示例代码1中: ```python def make_pizza(*toppings): """打印顾客点的所有配料""" print(toppings) make_pizza('pepperoni') make_pizza('mushrooms', 'green peppers', 'extra cheese') ('pepperoni',) ('mushrooms', 'green peppers', 'extra cheese') ``` 这里,`*toppings`告诉Python创建一个名为`toppings`的空元组,然后将所有传递给`make_pizza`函数的非关键字参数放入这个元组中。无论调用函数时传递了几个参数,`toppings`元组都会包含它们。例如,当调用`make_pizza('pepperoni')`时,`toppings`将是`('pepperoni',)`;而调用`make_pizza('mushrooms', 'green peppers', 'extra cheese')`时,`toppings`将是`('mushrooms', 'green peppers', 'extra cheese')`。 `**param`用于接收任意数量的关键字参数,即带有名称的参数。关键字参数是在调用函数时通过名称指定的。在示例代码2中: ```python def build_profile(first, last, **user_info): """创建一个字典,其中包含有关用户的一切信息""" profile = {} profile['first_name'] = first profile['last_name'] = last for key, value in user_info.items(): profile[key] = value return profile user_profile = build_profile('albert', 'einstein', location='princeton', field='physics') print(user_profile) ``` 这里,`**user_info`指示Python创建一个名为`user_info`的空字典,然后将所有以关键字形式传递的参数(如`location='princeton'`和`field='physics'`)添加到这个字典中。在`build_profile`函数的示例中,`user_info`字典包含了`{'location': 'princeton', 'field': 'physics'}`。 结合使用`*param`和`**param`,我们可以创建更强大的函数,这些函数能够适应各种不同的输入情况,而无需预先知道具体的参数数量和类型。这种灵活性使得Python函数更加通用,便于重用和组合。 `*param`和`**param`是Python中处理不定数量参数的重要特性。它们分别用于收集位置参数(元组)和关键字参数(字典),使函数能够灵活地处理未知数量的输入。这样的设计体现了Python语言的动态性和表达力,使得编写可扩展的代码变得更加简单。在实际编程中,合理运用这两个语法可以帮助我们构建出更加健壮和适应性强的函数。
































- 粉丝: 5
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- DeepSeek的桌面版本,这是一款基于人工智能的应用程序,提供智能辅助和交互 这个应用程序允许我们…
- 在云端部署 DeepSeek 与 Llama 等开源 LLM 并作为兼容 OpenAI 的 API 端点
- 轻松微调、评估和部署gpt-oss、Qwen3、DeepSeek-R1或任何开源LLM/VLM!
- 基于开源 deepseek-r1 在本地运行的 gradio 聊天机器人
- 一个融合 QwenVL 与 Deepseek Apis 能力、借 Deepseek 模型实现视觉交互的框架
- 高二数学上公式大全.doc
- 快速入门和掌握计算机信息技术.docx
- 手把手教你搭建 DeepSeek API 的非官方 Python 包装器
- 《公司治理》第一章-网络治理:公司治理延伸.ppt
- 给水管道水压试验标准简介.doc
- 计算机专业毕业论文[]4.doc
- 机电工程综合管线优化中BIM技术的应用.doc
- 幻灯片中如何搭配色彩new.ppt
- 北京某轻钢结构厂房的超载事故以及加固处理.doc
- 04G101-4平法知识培训讲义(板).ppt
- 国际广场(暂定名)项目规划、设计咨询服务合同书.doc


