You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

逻辑一致的两段代码:为何函数版报错未赋值变量,非函数版正常?

问题分析与解决

核心原因

函数版代码存在变量未覆盖所有执行路径赋值的问题:当传入的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 08:30:43