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

python3中函数的参数

一. 简介

前面学习了Python3中函数的语法规则,文章如下:

python3中函数的语法规则-CSDN博客

本文继续学习python中函数的参数。调用函数时可使用的正式参数类型:

必需参数,关键字参数,默认参数,不定长参数。

二. python3 中函数的参数

1. 必需参数

必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。也可以叫位置参数,参数的顺序决定了它们的值。

调用带必需参数的函数时,必须按照函数声明的顺序传入参数,否则,会报错。

示例如下:

#!/usr/bin/env python3def print_msg(str):print(str)return#调用 print_msg函数
print_msg("I am wonderful!")

以上的函数中参数就是必需参数,调用时参数是必须要传入的,而且调用时参数数量必须和声明时一样。

2. 关键字参数

关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。

使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

可以通过参数名传递值,而不必遵循参数的顺:

#!/usr/bin/env python3def print_msg(name, profession):print(name, profession)print_msg(profession = "男演员", name = "张晚意")

输出如下:

张晚意 男演员

3. 默认参数

调用函数时,如果没有传递参数,则会使用默认参数。

在函数实现时可以为参数指定默认值,这样在调用函数时如果未提供该参数,将使用默认值。

示例如下:

#!/usr/bin/env python3def print_info(name, height = 183.6):print("名字:", name)print("身高:", height)#调用 print_info 函数
print_info("张晚意", 180.0)
print_info("肖战")

输出如下:

名字: 张晚意
身高: 180.0
名字: 肖战
身高: 183.6

可以看出,当调用函数时如果没有传入 height参数的值,则会使用默认值。

4. 不定长参数

有时你可能需要传递任意数量的参数。Python 提供了两种方式来处理这种情况:*args 和 **kwargs。

*args:用于传递任意数量的位置参数,这些参数以元组的数据类型传入函数。
**kwargs:用于传递任意数量的关键字参数,这些参数会以字典的形式传入函数。

示例如下:

(1) 函数的参数为 *args,则该参数以元组的形式传入函数中:

#!/usr/bin/env python3def print_fruits(size, *fruits):print(f"fruits'a size:", size)for topping in fruits:print(f"- {topping}")#调用 print_fruits函数
print_fruits(4, "apple", "banana", "orange")

输出如下:

fruits'a size: 4
- apple
- banana
- orange

(2) 函数的参数为 **kwargs,则该参数以字典的形式传入函数中:

#!/usr/bin/env python3def build_profile(first, last, **user_info):profile = {}profile["firt_name"] = firstprofile["last_name"] = lastfor key, value in user_info.items():profile[key] = valuereturn profile#调用 build_profile函数
user_profile = build_profile("albert", "einstein", location="princeton", field="physics")
print(user_profile)

输出如下:

http://www.lryc.cn/news/516509.html

相关文章:

  • 数据仓库建设方案和经验总结
  • Re77 读论文:LoRA: Low-Rank Adaptation of Large Language Models
  • 曲波系数 curvelet transform
  • OS的随机数生成过程中的内核熵池
  • 数据结构:双向循环链表
  • IP网和传输网区别(以访问百度为例!)
  • STM32裸机开发转FreeRTOS教程
  • FreeSWITCH dialplan/default.xml 之释疑
  • lambda用法及其原理
  • Go Ebiten随机迷宫生成示例
  • 前端学习DAY31(子元素溢出父元素)
  • 『SQLite』表的创建、修改和删除
  • 可持久化数据结构-线段树(主席树)
  • 如何利用PHP爬虫按关键字搜索淘宝商品
  • GitHub - riscv-software-src/riscv-isa-sim: Spike, a RISC-V ISA Simulator
  • ubuntu开机启动服务
  • 电子电气架构 --- 设计车载充电机的关键考虑因素
  • 2025_0105_生活记录
  • 电池管理系统(BMS)架构详细解析:原理与器件选型指南
  • 用JAVA编写一个简单的小游戏
  • 【SpringSecurity】二、自定义页面前后端分离
  • 小兔鲜儿:头部区域的logo,导航,搜索,购物车
  • 什么是VLAN?
  • WPS计算机二级•数据查找分析
  • 计算机网络 (28)虚拟专用网VPN
  • 【Python学习(七)——序列、列表、元组、range、字符串、字典、集合、可变类型不可变类型】
  • MATLAB常用建模方法——常用非参数检验
  • 【多线程初阶篇 ²】创建线程的方式
  • 纵览!报表控件 Stimulsoft Reports、Dashboards 和 Forms 2025.1 新版本发布!
  • 游戏引擎学习第75天