写代码时经常会遇到一种情况:同一个函数,要在不同场景下接收不同的参数。比如控制外设的函数,有时候要传亮度,有时候要传响应速度,甚至还要动态调整轮询频率。这时候如果每次都在函数里改参数,不仅麻烦还容易出错。
用字典传递参数更灵活
实际项目中,我习惯把配置项打包成一个字典,然后通过 **kwargs 传进函数。这样调用的时候只关心当前需要的参数,别的不用管。
def set_keyboard_config(**kwargs):
if 'brightness' in kwargs:
print(f"设置背光亮度为: {kwargs['brightness']}")
if 'polling_rate' in kwargs:
print(f"设置轮询频率为: {kwargs['polling_rate']}Hz")
# 调用时按需传参
set_keyboard_config(brightness=70)
set_keyboard_config(polling_rate=1000, brightness=30)
列表拆包也能动态传参
有些外设驱动接口要求按固定顺序传参,但参数数量不固定。这时候可以用 * 拆包列表或元组,让调用更动态。
def connect_mouse(profile, sensitivity, report_rate=125):
print(f"载入配置{profile},DPI={sensitivity},上报率={report_rate}Hz")
config = [2, 1600, 500]
connect_mouse(*config) # 等价于 connect_mouse(2, 1600, 500)
结合配置文件实现真正动态
在调试游戏鼠标时,经常要切换多套配置。与其硬编码,不如把参数存到 JSON 文件里,读取后再动态传入。
import json
with open('mouse_profile.json') as f:
settings = json.load(f)
connect_mouse(**settings) # 自动映射字段到参数
这样一来,换电脑或者分享配置时,只要改文件就行,函数本身完全不用动。这种写法在团队协作和外设调试中特别省事。