python定义方法参数

发布时间:2026/7/2 17:58:39

python定义方法参数 文章目录一、基础参数必传参数二、默认参数可选参数三、关键字参数指定参数名传参四、可变参数不定长参数五、参数注解类型提示Python 3.5六、仅限关键字参数* 分隔生产环境最佳实践总结属于基础概念但是因为python的方法定义比较灵活所以单独拿出来。一、基础参数必传参数最核心的参数形式调用方法时必须传入对应数量的参数顺序需匹配。# 1. 单个基础参数defgreet(name):问候函数必传姓名参数returnf你好{name}# 调用必须传参否则报错print(greet(张三))# 输出你好张三# 2. 多个基础参数按顺序传参defcalculate(a,b,op):简单计算器a/b为操作数op为操作符/-ifop:returnabelifop-:returna-belse:return不支持的操作# 按参数定义顺序传参print(calculate(10,5,))# 输出15print(calculate(10,5,-))# 输出5二、默认参数可选参数参数指定默认值调用时可省略未传参则使用默认值生产环境高频使用。核心规则默认参数必须放在「基础参数之后」默认参数建议使用「不可变对象」如数字、字符串、None避免用列表 / 字典等可变对象易踩坑。# 1. 基础默认参数defsend_msg(content,receiver所有人,is_urgentFalse):发送消息接收者和紧急状态有默认值prefix[紧急] ifis_urgentelsereturnf{prefix}发送给{receiver}{content}# 调用1只传必传参数使用默认值print(send_msg(项目进度更新))# 输出发送给所有人项目进度更新# 调用2覆盖部分默认参数print(send_msg(会议通知,技术部))# 输出发送给技术部会议通知# 调用3覆盖所有默认参数print(send_msg(故障告警,运维组,True))# 输出[紧急] 发送给运维组故障告警# 2. 避坑默认参数用不可变对象推荐写法defadd_item(item,lstNone):向列表添加元素默认参数用None避免多次调用共享列表iflstisNone:lst[]# 每次调用初始化新列表lst.append(item)returnlstprint(add_item(1))# 输出[1]print(add_item(2))# 输出[2]而非 [1,2]三、关键字参数指定参数名传参调用时通过「参数名 值」的形式传参无需严格匹配顺序适合参数较多的场景。defcreate_user(username,age,gender):创建用户参数较多用关键字传参更清晰return{username:username,age:age,gender:gender}# 关键字传参顺序可打乱user1create_user(age25,username李四,gender男)print(user1)# 输出{username: 李四, age: 25, gender: 男}# 混合传参位置参数 关键字参数位置参数必须在前user2create_user(王五,gender女,age30)print(user2)# 输出{username: 王五, age: 30, gender: 女}四、可变参数不定长参数*1. 可变位置参数args接收任意数量的位置参数打包为元组适合参数数量不确定的场景。defsum_numbers(*args):求和接收任意数量的数字参数total0fornuminargs:totalnumreturntotal# 调用传任意数量参数print(sum_numbers(1,2,3))# 输出6print(sum_numbers(10,20,30,40))# 输出100# 解包列表/元组传入nums[1,2,3,4]print(sum_numbers(*nums))# 输出10* 解包列表**2. 可变关键字参数kwargs接收任意数量的关键字参数打包为字典适合接收自定义配置的场景。defprint_info(**kwargs):打印信息接收任意关键字参数forkey,valueinkwargs.items():print(f{key}{value})# 调用传任意关键字参数print_info(name赵六,age28,city北京)# 输出# name赵六# age28# city北京# 解包字典传入info{name:孙七,age:35,job:工程师}print_info(**info)# ** 解包字典五、参数注解类型提示Python 3.5标注参数的预期类型仅提示不强制校验提升代码可读性生产环境推荐使用。defcalculate_area(length:float,width:float)-float: 计算矩形面积 :param length: 长度浮点型 :param width: 宽度浮点型 :return: 面积浮点型 returnlength*width# 调用类型注解不影响执行仅做提示print(calculate_area(5.5,3.2))# 输出17.6# 即使传入整数兼容类型也能正常执行print(calculate_area(5,3))# 输出15六、仅限关键字参数* 分隔强制后续参数必须用关键字传参避免传参歧义适合参数较多的复杂方法。defcomplex_calc(a,b,*,rate,discount): 复杂计算* 后的 rate/discount 必须用关键字传参 :param a/b: 基础参数位置传参 :param rate: 费率仅限关键字传参 :param discount: 折扣仅限关键字传参 return(ab)*rate*discount# 正确调用rate/discount 必须用关键字print(complex_calc(10,20,rate0.8,discount0.9))# 输出21.6# 错误调用直接传参会报错# print(complex_calc(10, 20, 0.8, 0.9)) # TypeError生产环境最佳实践参数顺序基础参数 → 默认参数 → 可变位置参数*args→ 仅限关键字参数 → 可变关键字参数**kwargs默认参数优先用 None 作为默认值避免可变对象共享问题参数注解必加提升代码可读性和 IDE 提示效率参数数量单个方法参数不宜超过 5 个过多时建议封装为字典 / 类如 def func(config: dict):命名规范参数名用小写 下划线如 user_id避免拼音 / 简写提升可维护性。总结基础参数必传、按序是最核心的参数形式默认参数可选适合高频使用固定值的场景注意用不可变对象可变参数*args位置不定长、**kwargs关键字不定长适配参数数量不确定的场景关键字参数传参时指定参数名提升代码可读性参数注解无强制校验但能大幅提升代码可维护性生产环境必用。

相关新闻