为何两个Python函数调用同一参数输出结果不同?
问题原因解析
核心差异:参数处理与判断逻辑完全不同
1. control_list函数的运行逻辑
这个函数接收单个字符串参数,if "Metallica" in string 的判断逻辑是:检查字符串 "Metallica" 是否是传入参数的子串。
当调用 control_list("Metallica qaqaqaqaqa") 时,传入的长字符串明确包含 "Metallica" 子串,因此返回 True。
2. control_list_2函数的运行逻辑
这个函数使用了 *args 参数,Python 会把所有传入的位置参数打包成一个元组。if "Metallica" in args 的判断逻辑是:检查字符串 "Metallica" 是否是这个元组里的直接元素。
当调用 control_list_2("Metallica qaqaqaqaqa") 时,args 实际是 ("Metallica qaqaqaqaqa",) 这个元组——它的唯一元素是完整的长字符串,并没有单独的 "Metallica" 元素,因此返回 False。
如果想让 control_list_2 实现和 control_list 类似的功能(检查传入的任意字符串参数中是否包含目标子串),可以修改为:
def control_list_2(*args): for s in args: if "Metallica" in s: return True return False
内容的提问来源于stack exchange,提问作者Atacan
相关产品推荐
相关产品推荐

