当前位置: 首页 > news >正文

15、Python函数-函数传参

15、Python函数-函数传参

1.实参与形参

函数参数分为实际参数(实参)和形式参数(形参),它们用于在函数定义和调用中传递数据。
在 Python 中,有三种传递实参的方式:位置参数、关键字参数和可变数量参数(不定长参数)。
位置参数是指按照形参的顺序传递实参;
关键字参数是指通过使用实参的名称将它们传递给函数;
可变数量参数(不定长参数)允许我们传递任意数量的实参。

1.1 形式参数

形式参数也称为形参,是指在函数定义中声明的变量。即,在定义函数时使用的变量名。形参只有在函数内部可见,因此函数外部无法直接访问它们。
def greet(name):print(f"Hello, {name}!")greet("Alice")  # 输出:Hello, Alice!# 函数 greet() 中,我们定义了一个形参 name。当函数被调用时,它将使用调用语句中提供的实参将该值设置为实参。

1.2 实际参数

实际参数也称为实参,是指在函数调用中提供给函数的值。实参可以是字面常量值、变量、表达式或其他函数调用的返回值。
def add(a, b):result = a + bprint(f"The sum of {a} and {b} is {result}")add(2, 3)  # 调用函数并传入实参 2 和 3# add() 中,我们接受两个形式参数,即 a 和 b。当函数被调用时,它们将使用传递的实际参数进行赋值。

2.位置参数

在函数定义时,可以指定一些位置参数,这些参数的值由函数调用者提供,在函数内部通过参数名来访问它们。位置参数的顺序很重要,因为 Python 根据其在函数定义中的位置来确定它们具有哪些值。
def add(a, b):return a + bresult = add(2, 3)  # 调用函数并传入位置参数 2 和 3
print(result)       # 输出 5
add() 接受两个位置参数,即 a 和 b。调用该函数时,我们需要按照函数定义中参数的顺序传递实参。在上面的示例中,我们将整数 23 作为实参传递给 add() 函数。

3.关键字参数

关键字参数与位置参数不同,不需要按照函数定义中的位置传递它们。
相反,你可以通过指定参数名来将实参传递给函数。
def greet(name, message):print(f"{name}, {message}")greet(message="Hello", name="Alice")  # 通过指定参数名传递实参
函数 greet() 中,我们定义了两个参数:name 和 message。然后,我们调用该函数时,通过指定参数名来传递实参,不需要按照函数定义中的位置进行。在上面的示例中,我们首先将字符串 "Hello" 作为 message 参数传递,然后将字符串 "Alice" 作为 name 参数传递。

4.默认参数

在 Python 中,还可以使用默认参数来指定在调用函数时未传递参数的默认值。
如果函数被调用时没有指定可选参数的值,则自动使用默认值。
def greet(name, message="Hello"):print(f"{name}, {message}")greet("Alice")                    # 使用默认参数值
greet("Bob", message="Hi there!") # 覆盖默认值
greet()中,我们使用默认参数来指定 message 参数的默认值为字符串 "Hello"。当函数被调用时,如果未传递 message 参数,则默认使用该值。在第一个示例中,我们仅传递了 name 参数,并且 message 参数自动使用默认值。在第二个示例中,我们通过指定参数名来覆盖默认值。

5.可变数量参数(不定长参数)

函数的可变数量参数允许我们传递任意数量的实参。
有两种类型的可变数量参数:不定长位置参数和不定长关键字参数。

5.1 不定长位置参数

不定长位置参数使用星号(*)表示,它允许我们传递任意数量的位置实参给函数,并将这些实参封装到一个元组中。

def add(*args):result = 0for arg in args:result += argreturn resultprint(add(2, 3))         # 输出:5
print(add(2, 3, 4, 5))   # 输出:14# 函数 add() 中,我们将参数 *args 声明为不定长位置参数。当函数被调用时,Python 将所有传递的位置实参封装到一个元组中,并将该元组分配给变量 args。
# 在函数内部,我们可以像操作普通元组一样迭代元组中的每个值,并使用它们来执行特定操作。

5.2 不定长关键字参数

不定长关键字参数使用两个星号(**)表示,它允许我们传递任意数量的关键字实参给函数,并将这些实参封装到一个字典中。(注意:该字典的键是参数名,值是对应的参数值。)

def greet(**kwargs):for name, message in kwargs.items():print(f"{name}, {message}")greet(Alice="Hello", Bob="Hi there!")# 函数 greet() 中,我们将参数 **kwargs 声明为不定长关键字参数。当函数被调用时,Python 将所有传递的关键字实参封装到一个字典中,并将该字典分配给变量 kwargs。# 在函数内部,我们可以像操作普通字典一样访问字典中的每个键值对,并使用它们来执行特定操作。
http://www.dtcms.com/a/507206.html

相关文章:

  • 手机自助网站建设seo公司发展前景
  • kafka-3.3.1
  • 惠洋科技原厂直销H6201L:150V降压芯片 支持200V120V100V降压12V5V3.3V5A大电流仪表盘供电IC方案 低功耗 高性能
  • Python趣味算法:出售金鱼问题:用Python逆向思维破解数学谜题
  • Centos环境基于Nginx配置https
  • VMware Ubuntu 虚拟机网络故障分析报告
  • PostgreSQL PostGIS安装与配置,现有数据库启用PostGIS扩展
  • centos中安装redis
  • 【终极面试集锦】如何设计微服务熔断体系?
  • 华为多级m-lag简单配置案例
  • UE4_UE5 的快速下载安装教学 (UE产品展示程序实例教程 1)
  • 淄博哪家公司做网站最好龙岗微信网站制作
  • K8S(十七)—— Kubernetes集群可视化工具Kuboard部署与实践指南
  • 74-基于Python的蜜雪冰城门店数据可视化分析系统
  • 正点原子RK3568学习日志11-申请字符设备号
  • k8s device plugin
  • 征二级网站建设意见 通知室内装修设计企业
  • 【Maven】Maven设置国内源
  • 软件设计师知识点总结:程序设计语言基础
  • 让Pycharm的Terminal(终端)进入创建好的虚拟环境
  • [css] 图片阴影 filter: drop-shadow
  • 第三章深度学习---核心库TensorFlow 和 PyTorch 实操指南(三)
  • BugKu Web渗透之 cookiesWEB
  • 【研究生随笔】Pytorch中的线性代数(微分)
  • 专业品牌设计网站建设网站建设实训心得
  • 从暴力到最优——力扣88.合并两个有序数组
  • C语言——回调函数的典型示例(分析详解)
  • 雷州网站建设公司网站备案半身照
  • 【AI 风向标】gpt-oss20b 模型测试与评估报告(2025-08-21)
  • Java MyBatis(二)--- 多表查询,# 和 $的区别,SQL注入,数据库连接池,动态SQL