def log(message, level="INFO"): 中的level是什么?
在Python函数定义中,def log(message, level="INFO"): 的 level 是一个默认参数(default argument)。以下是详细解释: 1. 默认参数的作用 定义:level="INFO" 表示在调用函数 log() 时,如果未显式提供 level 参数的值,则 level 会自动使用默认值 "INFO"。 灵活性:允许调用者省略该参数,简化代码;同时保留了自定义参数值的选项。
2. 示例说明 示例1:使用默认值 python log("This is a log message.") # 输出:INFO: This is a log message. 解释:未传递 level 参数,函数内部自动使用 level="INFO"。 示例2:自定义参数值 python log("This is a warning.", level="WARNING") # 输出:WARNING: This is a warning. 解释:显式指定 level="WARNING",覆盖默认值。
3. 默认参数的注意事项 位置要求:默认参数必须放在函数参数列表的末尾。以下写法会报错: python def log(level="INFO", message): # SyntaxError: 非默认参数不能跟在默认参数后 pass 可变对象陷阱:默认参数是在函数定义时计算的(而非每次调用时重新创建)。若默认值为可变对象(如列表、字典),可能导致意外行为: python def log(message, levels=["INFO"]): # 默认列表是同一个对象 levels.append("WARNING") print(levels) log("Test 1") # 输出:['INFO', 'WARNING'] log("Test 2") # 输出:['INFO', 'WARNING', 'WARNING'](可能不符合预期)
解决方案:将可变默认值设为 None,并在函数内初始化: python def log(message, levels=None): if levels is None: levels = ["INFO"] levels.append("WARNING") print(levels)
4. 实际应用场景 日志记录:level 参数通常用于指定日志级别(如 "DEBUG"、"INFO"、"WARNING"、"ERROR"),便于过滤和管理日志输出。 配置灵活性:通过默认参数,函数既能满足简单用例(无需指定参数),也能支持复杂需求(自定义参数)。 总结 在 def log(message, level="INFO"): 中,level 是一个带有默认值的参数,允许调用者灵活选择是否指定日志级别。合理使用默认参数能提升代码的简洁性和可读性,但需注意默认参数的规则和潜在陷阱。