You need to enable JavaScript to run this app. Python语句session.Process and session.Process.name()中and关键字的作用是什么
优惠活动
大模型
产品
解决方案
定价
更多

Python语句session.Process and session.Process.name()中and关键字的作用是什么

原理说明

这个现象完全是Python and运算符的短路求值规则导致的,和官方文档的描述完全一致:

  • and 会从左到右依次判断操作数的布尔值,只要遇到假值就直接返回该假值,不会继续执行右侧的表达式
  • 只有所有操作数都为真值时,才会返回最后一个操作数的结果

对应测试现象解释

  1. 执行 session.Process and session.Process.name() 时的输出逻辑:
    • 当 session.Process 为 None(假值)时,and 直接返回 None,不会执行右侧的 .name() 调用,所以不会触发报错,这就是第一组循环第一个输出为 None 的原因
    • 当 session.Process 为有效的 psutil.Process 对象(真值)时,and 会返回右侧表达式的执行结果,也就是 session.Process.name() 返回的进程名字符串,所以会看到输出 firefox.exe、wemeetapp.exe,这也是为什么它的输出和直接打印 session.Process 结果不一样的原因:真值情况下返回的是第二个操作数的结果,而非第一个
  2. 直接调用 session.Process.name() 报错的原因:
    该写法没有预先判断 session.Process 是否为 None,当遍历到 session.Process 为 None 的项时,直接调用 None 不存在的 name() 方法,自然会抛出 AttributeError。

原示例代码的设计意图

示例中 if session.Process and session.Process.name() == "chrome.exe" 是Python非常常见的防御式写法:先确认 session.Process 不为空,再执行后续的属性/方法调用,避免空指针异常。


内容的提问来源于stack exchange,提问作者23Xor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 20:42:01