逻辑一致的两段代码:为何函数版报错未赋值变量,非函数版正常?
问题分析与解决
核心原因
函数版代码存在变量未覆盖所有执行路径赋值的问题:当传入的page_source中未匹配到"isPrivateAccount":(true|false)时,变量isPrivateAccount没有被赋值就被调用,触发未定义错误。而非函数版可能在上下文逻辑中确保了页面一定加载完成、目标字符串必然存在,或者隐式处理了匹配失败的情况。
解决方法
1. 给变量设置默认值
在函数开头先给isPrivateAccount赋默认值,确保所有执行路径下变量都有值:
import re def get_is_private(page_source): isPrivateAccount = False # 默认设为非私有,可根据需求调整 match_result = re.search(r'"isPrivateAccount":(true|false)', page_source) if match_result: isPrivateAccount = match_result.group(1) == 'true' return isPrivateAccount
2. 用三元表达式简化逻辑
通过三元表达式直接处理匹配成功/失败的情况,避免变量未赋值:
import re def get_is_private(page_source): match_result = re.search(r'"isPrivateAccount":(true|false)', page_source) return match_result.group(1) == 'true' if match_result else False
3. 校验page_source的有效性
先确认传入的page_source和非函数版的完全一致,排查是否是页面加载时机问题导致内容缺失:
# 在函数调用前打印对比 non_func_page = driver.page_source func_page = get_page_source_from_other_func() # 你的其他获取page_source的函数 print(non_func_page == func_page) # 输出True才说明内容一致
内容的提问来源于stack exchange,提问作者francomango
相关产品推荐
相关产品推荐

