函数参数动态传入方法的实际应用技巧

写代码时经常会遇到一种情况:同一个函数,要在不同场景下接收不同的参数。比如控制外设的函数,有时候要传亮度,有时候要传响应速度,甚至还要动态调整轮询频率。这时候如果每次都在函数里改参数,不仅麻烦还容易出错。

用字典传递参数更灵活

实际项目中,我习惯把配置项打包成一个字典,然后通过 **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)  # 自动映射字段到参数

这样一来,换电脑或者分享配置时,只要改文件就行,函数本身完全不用动。这种写法在团队协作和外设调试中特别省事。