Python的运算符分为以下几类:

算术运算符
比较(关系)运算符
赋值运算符
逻辑运算符
位运算符
成员运算符
身份运算符

以及需要考虑的:
运算符优先级

一、算术运算符:

需要注意的,上图是Python 2.0版本的,在Python3.0版本中,算术除法与2.0版本不同。

二、比较运算符

比较运算符返回的值均为True 或 False;(bool值)

在Python3.0 中,是不是没有<>这个运算符了?

三、赋值运算符

赋值运算符使用还不是很熟练;

  示例:

  

>>> a=3
>>> b=7
>>> a
3
>>> b
7
>>> a += 6
>>> a
9
>>> a-=7
>>> a
2
>>> a*=11
>>> a
22
>>> a/=6
>>> a
3.6666666666666665
>>> b
7
>>> b%4
3
>>> b
7
>>> b%=4
>>> b
3
>>> b**=3
>>> b
27
>>> b//=12
>>> b
2
>>>

四、位运算符

按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:

注意:小数没有二进制;

按位异或,就是同一个位置的不同则为1,同则为0;

<< 左移动运算符,a << 2 将二进制a向左移动两位,右侧补0;

>> 右移动运算符,a >> 2 将二进制a向右移动两位,左侧补0,右侧移出边界的则删除。

五、逻辑运算符

逻辑运算符,有三种:and 、or、not;

对于x and y,若x为false,则不计算y,x and y 的结果为False;

对于x or y,若x为True,则计算并返回x 的值,不计算y;若x为False,则计算y并返回y的值。

对于not x ,返回布尔值,如果x为True,则not x 返回False;若x为False,则not x 返回True。

【这个和之前理解的并不相同。】

示例:

六、成员运算符

in

not in

示例:

>>> 1 in range(23)
True
>>> 22 in range(24)
True
>>> 25 in range(24)
False
>>>
>>> type(range(24))
<class 'range'>

x in y  ,对于y对象,可以支持字符串、列表、元组、字典、range等类型对象;

示例:

>>> 6 in [1,2,6]
True
>>> 7 in [1,2,6]
False
>>>
>>> 6 in ""
Traceback (most recent call last):
File "<pyshell#57>", line 1, in <module>
6 in "2375762"
TypeError: 'in <string>' requires string as left operand, not int
>>> "" in ""
True
>>> "" in ""
False
>>>
>>>
>>> 12 in (12,"s")
True
>>> 13 in (12,"s")
False
>>>
>>> 9 in {"a":8,"b":9,"c":10}
False
>>> "b" in {"a":8,"b":9,"c":10}
True
>>> "d" in {"a":8,"b":9,"c":10}
False
>>> {"b":9} in {"a":8,"b":9,"c":10}
Traceback (most recent call last):
File "<pyshell#68>", line 1, in <module>
{"b":9} in {"a":8,"b":9,"c":10}
TypeError: unhashable type: 'dict'
>>>
>>> 26 in range(12)
False
>>> 6 in range(12)
True

对于y为字典,对象x只会参考y的键名;  {"b":9} in {"a":8,"b":9,"c":10}  这个结果也为False;

七、身份运算符

身份运算符是比较两个对象的存储单元,也就是说,如果两个对象x/y的存储单元不相同,但两个对象的值相同,这两个对象x is y  的结果也是False:

示例:

>>> s = 2123123
>>> f = 2123123
>>> s is f
False
>>>
>>>
>>> s = 23
>>> f = 23
>>> s is f
True

对于上述两个示例,为何结果不是完全相同呢?

这里面需要引入到“缓存区”的概念(Python的缓存机制)

可以使用下面代码,了解Python的快速缓存,都缓存了哪些数字(这里面仅限数字,实际上部分字符串也包含在缓存中。)

for i in range(-1000,1000):
for j in range(-1000,1000):
if i == j:
a = i
b = j
if (a is b):
print(i)

输出结果:

。

。

。

可了解,Python缓存的整数为[-5,256]

缓存机制还有一个比较新奇的现象:

>>> a = 1111
>>> b = 1111
>>> a is b
False
>>> a = 1111;b=1111
>>> a is b
True

赋值语句写在同一行,不同行,其is语句结果不同。

如果写入脚本执行:

#!/usr/bin/python
# -*- coding: UTF-8 -*- a = 123456;b=123456
print(a is b)
c = 654321
d = 654321
print(c is d )

则执行结果:

关于Python的缓存机制,需要深入研究一下,但不确定此现象是否为Python的缓存机制导致的,且输出与IDE有一定关系。

同样,Python也会缓存简单的字符串。

Python的缓存机制是为了解决数据快速存取的问题,简单整型和单字符都是较常使用的变量,而元组并没有常用元组一说,因此没有缓存机制

下面有个关于字符串的测试:

>>> a = "daflkjdlfkja"
>>> b = "daflkjdlfkja"
>>> a is b
True

很奇怪,我这个字符串是随机打出来的,所以怀疑Python会根据用户输入的字符,随时修改其缓存区;

进一步测试:

>>> b = "daflkjdlfksdfasdfaskjdlfjlassdfasdfasdfsfdsdfsdffsdfsdfadddaflkjdlfksdfasdfaskjdlfjlassdfasdfasdfsfdsdfsdffsdfsdfadddaflkjdlfksdfasdfaskjdlfjlassdfasdfasdfsfdsdfsdffsdfsdfadddaflkjdlfksdfasdfaskjdlfjlassdfasdfasdfsfdsdfsdffsdfsdfadd"
>>> a = "daflkjdlfksdfasdfaskjdlfjlassdfasdfasdfsfdsdfsdffsdfsdfadddaflkjdlfksdfasdfaskjdlfjlassdfasdfasdfsfdsdfsdffsdfsdfadddaflkjdlfksdfasdfaskjdlfjlassdfasdfasdfsfdsdfsdffsdfsdfadddaflkjdlfksdfasdfaskjdlfjlassdfasdfasdfsfdsdfsdffsdfsdfadd"
>>> a is b
True
>>>
>>>
>>> a = "s*"
>>> b = "s*"
>>> a is b
False

只要是纯字母构成的字符串,即使很长,也会被记入缓存区,而若字符串有其他非字母构成的,则不会再记入缓存区;

如下,将同样的值赋值给两个不同变量,上面的是直接赋值,下面的是复制

# 第一种
b=a # 第二种
b=a[:]

前者传递引用,后者传递拷贝;

两者中,用a is b    前面会返回True,后者会返回False。

此部分内容待后续进一步研究,不再此次运算符 专题中做深入讨论。

(我们在使用is或==时,这里 is 和 == 类似编译原理中传值与传地址。又或者说是 is 只是传递的指针,判断是否指向同一个地址块,这样 is 两边的参数指向内存中同个地址块,毕竟我家电视跟你电视不是同一个东西。而 == 则是仅仅判断值相同)

八、运算符的优先级

含有运算符的语句,其计算方向是自左向右还是自右向左?

————————(我是分割线)————————

参考:

1. RUNOOB.COM:https://www.runoob.com/python/python-operators.html#ysf4  /运算符

2.blog:https://blog.csdn.net/pro_leo/article/details/41786397 /Python的缓存机制;

备注:

初次编辑时间:2019年10月7日15:18:51

环境:Windows 7   / Python 3.7.2

*#【Python】【基础知识】【运算符】【Python的几类运算符】的更多相关文章

  1. Python基础知识详解 从入门到精通(七)类与对象

    本篇主要是介绍python,内容可先看目录其他基础知识详解,欢迎查看本人的其他文章Python基础知识详解 从入门到精通(一)介绍Python基础知识详解 从入门到精通(二)基础Python基础知识详 ...

  2. python 基础知识(一)

    python 基础知识(一) 一.python发展介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本 ...

  3. Python开发【第二篇】:Python基础知识

    Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...

  4. python基础知识讲解——@classmethod和@staticmethod的作用

    python基础知识讲解——@classmethod和@staticmethod的作用 在类的成员函数中,可以添加@classmethod和@staticmethod修饰符,这两者有一定的差异,简单来 ...

  5. python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

    本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...

  6. python基础知识小结-运维笔记

    接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理:1)避免‘\n’等特殊字符的两种方式: a)利用转义字符‘\’ b)利用原始字符‘r’ print r'c:\now' ...

  7. Python 基础知识(一)

    1.Python简介 1.1.Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时 ...

  8. python基础知识部分练习大全

    python基础知识部分练习大全   1.执行 Python 脚本的两种方式 答:1.>>python ../pyhton.py 2. >>python.py   #必须在首行 ...

  9. 开发技术--浅谈python基础知识

    开发|浅谈python基础知识 最近复习一些基础内容,故将Python的基础进行了总结.注意:这篇文章只列出来我觉得重点,并且需要记忆的知识. 前言 目前所有的文章思想格式都是:知识+情感. 知识:对 ...

  10. python基础知识的学习和理解

    参考链接:https://github.com/yanhualei/about_python/tree/master/python_learning/python_base   python基础知识笔 ...

随机推荐

  1. wangEditor实现ctrl+v粘贴word图片并上传

    很多时候我们用一些管理系统的时候,发布新闻.公告等文字类信息时,希望能很快的将word里面的内容直接粘贴到富文本编辑器里面,然后发布出来.减少排版复杂的工作量. 下面是借用百度doc 来快速实现这个w ...

  2. UCOSIII(一)

    一,前后台系统和RTOS 1,前后台系统 早期嵌入式开发没有嵌入式操作系统的概念 ,直接操作裸机,在裸机上写程序,比如用51单片机基本就没有操作系统的概念.通常把程序分为两部分:前台系统和后台系统. ...

  3. gcc 带参数进行编译

    gcc -DYES -o helloyes hello.c 在hello.c中存在 #ifdefine YES ........

  4. luogu2885

    P2885 [USACO07NOV]电话线Telephone Wire 给出若干棵树的高度,你可以进行一种操作:把某棵树增高h,花费为h*h. 操作完成后连线,两棵树间花费为高度差*定值c. 求两种花 ...

  5. nginx安装第三方模块echo-nginx-module

    cd ~ wget -S https://github.com/agentzh/echo-nginx-module/archive/master.zip mv master echo-nginx-mo ...

  6. Maven的概述和基础(学习整理)

    1. Maven是啥 Maven是一个项目管理工具,包含了一个项目对象模型(POM),一组标准集合,一个项目生命周期(Lifecycle),一个依赖管理系统,和用来运行定义在生命周期阶段中的插件目标的 ...

  7. 路由器的路由配置命令汇总(win和linux系统)

    路由器/Linux主机/win下主机的路由配置汇总 2009-07-16 17:43:15 分类: 系统运维 工作时总是要在这三个个体中配来配去,所以为了方便,汇总了.   win下:   使用 Ro ...

  8. GetProp和SetProp的区别

    GetProp 函数功能:该函数从给定窗口的属性列表中检索数据句柄.给定的字符串标识了要检索的句柄.该字符串和句柄必须在前一次调用SetProp函数时已经加到属性表中. 函数原型:HANDLE Get ...

  9. Xshell查看日志

    查询日志命令(复制后鼠标右键粘贴): tail  -1000f /mnt/logs/SMFManagement/SMFManagement_info.log

  10. SQL-W3School-高级:SQL UNION 和 UNION ALL 操作符

    ylbtech-SQL-W3School-高级:SQL UNION 和 UNION ALL 操作符 1.返回顶部 1. SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT ...