首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >“不在”和“不是”都是运算符吗?如果是这样的话,它们与"not x in..“有什么不同吗?还有“不是x是..”?

“不在”和“不是”都是运算符吗?如果是这样的话,它们与"not x in..“有什么不同吗?还有“不是x是..”?
EN

Stack Overflow用户
提问于 2010-02-06 02:07:24
回答 5查看 155关注 0票数 1

我一直更喜欢这些:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
not 'x' in 'abc'
not 'x' is 'a'

(当然,假设每个人都知道inis --优先考虑not --我可能应该使用括号)而不是更符合语法的(英语):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'x' not in 'abc'
'x' is not 'a'

但是直到我意识到它们在句法上没有意义,我才开始思考为什么

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'x' == not 'a'
'x' not == 'a'

当然,两者都会抛出语法错误。

所以我认为它们都是两个单词的运算符。但是,documentation仅引用is not,而没有提到not in作为运算符。我是不是误解了语法?

如果它们都是运算符,那么它们与非语法对应的运算符是否完全不同(甚至是微妙的)?

如果它们是相同的,那么为什么它们还存在?它似乎对Zen of Python是不敬的(..“1最好只有一个--显而易见的方式”..)

我很抱歉,如果这个问题已经被讨论到死了,我只是在搜索“不是”这样的搜索条件下找到它的运气很差。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-02-06 02:18:14

来自Python2.6.4文档:http://docs.python.org/reference/expressions.html >

运算符not in被定义为具有in的逆真值。

运算符is和is不测试对象身份:当且仅当x和y是同一对象时,x is y为true。X不是y会产生相反的真值。

例如:"x not in y“与"not x in y”完全相同,"x is not y“与"not x is y”相同。

"x not == y“不能解析,但"x != y”可以解析,所以这里也有一个等价物...

HTH。

票数 4
EN

Stack Overflow用户

发布于 2010-02-06 03:49:58

使用dis模块可以很容易地检查是否有任何差异:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> dis.dis(compile('not a in b','','exec'))
  1           0 LOAD_NAME                0 (a)
              3 LOAD_NAME                1 (b)
              6 COMPARE_OP               7 (not in)
              9 POP_TOP             
             10 LOAD_CONST               0 (None)
             13 RETURN_VALUE        
>>> dis.dis(compile('a not in b','','exec'))
  1           0 LOAD_NAME                0 (a)
              3 LOAD_NAME                1 (b)
              6 COMPARE_OP               7 (not in)
              9 POP_TOP             
             10 LOAD_CONST               0 (None)
             13 RETURN_VALUE        

看见?笨拙的第一种形式(经常使那些不能立即区分notin运算符的相对优先级的人感到困惑)被编译成与唯一的not in运算符完全相同的字节码。类似地:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> dis.dis(compile('not a is b','','exec'))
  1           0 LOAD_NAME                0 (a)
              3 LOAD_NAME                1 (b)
              6 COMPARE_OP               9 (is not)
              9 POP_TOP             
             10 LOAD_CONST               0 (None)
             13 RETURN_VALUE        
>>> dis.dis(compile('a is not b','','exec'))
  1           0 LOAD_NAME                0 (a)
              3 LOAD_NAME                1 (b)
              6 COMPARE_OP               9 (is not)
              9 POP_TOP             
             10 LOAD_CONST               0 (None)
             13 RETURN_VALUE        

这两种形式--愚蠢、令人困惑的第一种形式和优雅的第二种形式--与完全相同的代码相比,都使用了is not运算符。

当然,没有很好的理由使用那些会让读者感到困惑的表单(除非你喜欢为那些阅读你代码的人设置陷阱!),但就执行语义和速度而言,没有任何区别。

票数 7
EN

Stack Overflow用户

发布于 2010-02-06 02:23:58

您的问题的其余部分已经在上面得到了回答,但我将解决最后一个问题: Python的禅宗。

“应该只有一种方法去做”并不是数学意义上的意思。如果是的话,就不会有!=运算符了,因为那只是==的反转。类似地,没有andor -毕竟,您可以只使用一个nand命令。“单向”的咒语是有限度的:应该只有一种高层次的方法来做到这一点。当然,这种高层次的方式是可以分解的-你可以编写自己的math.tan,而且你永远不需要使用urllib - socket总是在那里等着你。但是,正如urllib.open是原始socket操作的高级封装一样,not in也是notin的高级封装。你可能会说,这有点陈词滥调。但是您使用的是x != y而不是not (x == y)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2211706

复制
相关文章
Spring通过URL传值不能携带"."???
原来,SpringMvc在解析URL的时候,会把最后一个"."和后面的内容解析为后缀,然后进行内容匹配
taixingyiji
2022/07/25
5900
Spring通过URL传值不能携带"."???
前端传值不能带中括号???
将前端传值通过enencodeURI()进行转义,后台部分需要通过 URLDecoder.decode()进行解析
taixingyiji
2022/07/25
9990
前端传值不能带中括号???
rmarkdown+flexdashboard制作dashboard原型
R语言作为一门统计计算和数据可视化为核心特色的工具性语言,其在可视化领域或者说数据呈现方面有着非常成熟和系统的解决方案。
数据小磨坊
2018/08/16
4.4K0
rmarkdown+flexdashboard制作dashboard原型
小程序 子组件传值(triggerEvent)
事件系统是组件间通信的主要方式之一。自定义组件可以触发任意的事件,引用组件的页面可以监听这些事件。关于事件的基本概念和用法,参见 事件 。
李才哥
2019/08/08
13.6K0
小程序 子组件传值(triggerEvent)
小程序关于switchTab不能传参的问题
微信小程序:errMsg“:“navigateTo:fail can not navigateTo a tabbar page 报错问题
江一铭
2022/06/16
7740
小程序关于switchTab不能传参的问题
多种详细讲解小程序页面传值
开发小程序,总是避免不了页面和页面之间数据共享,实现方法有很多种,今天就详细讲解下小程序页面传值,需要的朋友可以参考下。
青年码农
2020/11/19
2.1K0
多种详细讲解小程序页面传值
微信小程序页面跳转传值
第二步(B页面):利用 options 对象接收,然后就可以使用 A页面 的 flag 了
peng_tianyu
2022/12/15
1.5K0
微信小程序页面跳转传值
小程序实践(七):页面间传值
   官方提供了5种页面间的跳转方式,其中前四种跳转的时候带有url参数,用于指定跳转的页面地址,而其中前三种url中可以带有参数。
听着music睡
2018/08/02
1.1K0
小程序实践(七):页面间传值
[JS ES6]传值和传址
传值是获取一份儿相同的值,并自身重新开一份儿属于自己的内存地址,两个变量是互相独立的并不会互相影响。
坚毅的小解同志的前端社区
2022/11/28
2.7K0
[JS ES6]传值和传址
react中类组件传值,函数组件传值:父子组件传值、非父子组件传值[通俗易懂]
函数组件中我们一般情况下使用useEffect实现数据的请求 // useEffect Hook 看做 componentDidMount,componentDidUpdate 和 componentWillUnmount (加载,更新,卸载)这三个函数的组合。 语法格式: useEffect(()=>{ },[])
全栈程序员站长
2022/08/30
6.3K0
传值与传地址
很多语言在传参的时候都有一个传值和传地址(或者是引用)的问题,我想用 C++ 语言来简单的描述一下。因为我觉得无论是传值还是传址,C 或者 C++ 这两种语言都是能够比较直观的描述清楚的语言,原因是可以容易的去观察内存。其他语言也可能可以,只是其他语言的我不太知道如何去做。
码农UP2U
2020/08/26
2.3K0
传值与传地址
python接口测试:如何将A接口的返回值传递给B接口
一种方式是可以通过数据库来获取,但是通过这次接口测试,我发现读取数据库有一个缺点:速度慢
冰霜
2022/03/15
2K0
Python 传值 or 传引用
注:本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
宋天伦
2023/10/20
2230
微信小程序组件调用和传值
微信小程序像Vue和React一样赋于了组件的开发能力,支持组件的调用和传值,同时由于小程序上传时限制在2MB以内,对于稍微大一点的小程序组件的使用就特别重要了,下面给大家介绍下小程序的组件用法。
越陌度阡
2020/11/26
1.5K0
微信小程序—url带参传值
微信小程序不同页面间url带参传递数据 使用格式 定义跳转页面的方法 方法名( ) { wx.navigateTo({ url: '/pages/xxx/xxx?name=' +
Cikian.
2022/09/22
2.5K0
微信小程序—url带参传值
微信小程序 父子组件传值通信
微信小程序父组件往子组件传值: 父:<getCode phone="{ {phone}}" bind:myevent="onGetCode"></getCode> 通过phone=”{ {phone}}”传向子组件 子:
全栈程序员站长
2022/08/29
1.2K0
微信小程序外部向组件传值
组件 目录结构 组件 self_item.js ... #item 定义主页面传值并定义该属性的类型 properties: { item:Object } ... 组件 self_item.wxml <view class="item"> <image wx:if="{{item.image}}" class="image" src="{{item.image}}" mode="aspectFill"></image> <text class="text">{{item.
友儿
2022/09/13
6060
小程序不同页面之间的传值方式
今天来说一下小程序不同页面之间传值的几种方式: 1、URL传值 这种方式最常用,比如: wx.navigateTo({ url: '../detail/detail?cid='+cid+'&ac
连胜
2018/03/07
4.4K0
vue学习 十五 传值和传引用 or 事件传值(子传父)
传值: 传的就是字符串(string)、布尔(boolean)、数值(number);
meihuasheng
2021/03/16
2.7K0
react 父子传值_react 父子组件传值 兄弟组件传值「建议收藏」
console.log(data1, data2, e) //输出 1 2 event内容
全栈程序员站长
2022/08/27
2.5K0

相似问题

无法将值传递给DocuS传模板

14

将selectInput()值(在列名之间的选择)作为轴传递给Shiny中的ggplot()

118

将值列表传递给Shiny复选框

117

不能正确地将值从父、子传递给父、父

26

R Shiny:每年将ggplot链接到滑块

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文