【Python学习日历】Day.1-Python语言与运算符
Python学习日历 Day.1-Python语言与运算符
- 一、关于Python语言
- 1. Python语言的诞生
- 2. Python语言的特点
- 二、运算符
- 1. Python运算符优先级和结合性
- 2. Python算数运算符
- 3. Python比较运算符
- 4. Python赋值运算符
- 5. Python位运算符
- 6. Python逻辑运算符
- 7. Python成员运算符
- 8. Python身份运算符
一、关于Python语言
Python,是一种广泛使用的解释型、高级和通用的编程语言。Python支持多种编程范型,包括函数式、指令式、反射式、结构化和面向对象编程。它拥有动态类型系统和垃圾回收功能,能够自动管理内存使用,并且其本身拥有一个巨大而广泛的标准库。它的语言结构以及面向对象的方法旨在帮助程序员为小型的和大型的项目编写清晰的、合乎逻辑的代码。----Wikipedia
概括而言:Python语言是一种解释型、动态数据类型、面向对象的高级计算机程序设计语言
1. Python语言的诞生
Python在英文单词中的释义为“蟒蛇”,Python语言由荷兰计算机程序员Guido van Rossum于1989年在荷兰数学和计算机科学研究学会所设计出来,Python语言的发展可以详细划分为以下关键阶段:
- 1991年2月,Python 0.9,已经存在带继承的类、异常处理、函数和核心数据类型list、dict、str等;
- 1994年1月,Python 1.0,包括了Amrit Prem提供的函数式编程工具lambda、map、filter和reduce;
- Python 1.4,增加了受Modula-3启发的关键字参数,和对复数的内建支持,还包含了采取名字修饰的一种基本形式的数据隐藏;
- 2000年10月,Python 2.0,介入了列表推导式,向垃圾收集系统增加了环检测算法,并且支持Unicode;
- Python 2.1,支持了嵌套作用域;
- Python 2.2,将Python的类型(用C写成)和类(用Python写成)统一入一个层级,使得Python的对象模型成为纯粹和一致的面向对象的模型,还增加了迭代器,受CLU和Icon启发的生成器和描述器协议;
- Python 2.4,加入了集合数据类型,和函数修饰器;
- Python 2.5,加入了with语句;
- 2008年12月,Python 3.0,它对语言做了较大修订而不能完全后向兼容。Python 3发行包括了2to3实用工具,它(至少部分的)自动将Python 2代码转换成Python 3代码,Python 3的很多新特性后来也被移植到旧的Python 2.6/2.7版本中;
Python 2.7的产品寿命结束日期最初设定为2015年,出于对大量的现存代码不能前向移植到Python 3的关切而延期至2020年。随着Python 2的产品寿命结束,只有Python 3.9、3.10和后续版本正在被完全支持,但仍提供对3.7和3.8版本的安全性修正。然而现阶段Python 2.7和Python 3.7 仍然是目前Python语言的版本使用主流。
2. Python语言的特点
- Python是多范型编程语言
它完全支持结构化编程和面向对象编程,还有很多特征支持函数式编程和元编程包括元类和元对象。通过扩展还可以支持很多范型,包括面向切面编程、契约式设计和逻辑编程。 - Python使用动态类型
在内存管理上采用引用计数和环检测相结合的垃圾收集器。它的特征还有动态名字解析(后期绑定),即在程序执行期间绑定方法和变量的名字。 - Python对遵循LISP传统的函数式编程提供了有限的支持
它提供了 map、filter和reduce函数;列表推导式、字典、集合和生成器表达式。标准库中的模块functools和itertools,实现了从Haskell和Standard ML借鉴来的函数式工具。 - Python的优点及设计哲学
Python的设计哲学是“优雅”、“明确”、“简单”。它的重要准则被称为“Python之禅”。在Python解释器内运行import this可以获得完整的列表,下面是其中首要:
- 优美优于丑陋。明了优于隐晦。
- 简单优于复杂。复杂优于凌乱。
- 扁平优于嵌套。稀疏优于稠密。
- 可读性很重要。
“用一种方法,最好是只有一种方法来做一件事”
二、运算符
- 什么是运算符?
这里我们不妨举一个简单的例子:1 + 2 = 3 。其中 1 和 2 被称为操作数,“+”被称为运算符。同样的,在Python语言的学习过程中,我们会接触不同类型的运算符,它们具有不同的优先级及功能。
Python语言支持以下类型的运算符:
- 算术运算符
- 比较(关系)运算符
- 赋值运算符
- 逻辑运算符
- 位运算符
- 成员运算符
- 身份运算符
接下来,我们将从运算符优先级和结合性开始依次学习Python语言运算符。
1. Python运算符优先级和结合性
- Python的运算符优先级
当多个运算符同时出现在一个表达式中时,优先级高的运算符被优先执行。
例如对于表达式 a + b * c, 已知 a = 1,b = 2,c = 3,Python 优先计算乘法再计算加法,得出的结果为 7,先计算 * 再计算 +,说明 * 的优先级高于 +。
同类型的运算符也可能存在着优先级的差异,详情可参见表一。
表 1 Python 运算符优先级和结合性一览表(由上至下为优先级由高至低)
运算符说明 | Python运算符 | 优先级 | 结合性 |
---|---|---|---|
小括号 | ( ) | 19 | 无 |
索引运算符 | x [ i ] 或 x [ i1 : i2 [ : i3 ] ] | 18 | 左 |
属性访问 | x.attribute | 17 | 左 |
乘方 | ** | 16 | 右 |
按位取反 | ~ | 15 | 右 |
符号运算符 | +(正号)、-(负号) | 14 | 右 |
乘除 | *、/、//(取整除)、%(取模) | 13 | 左 |
加减 | +、- | 12 | 左 |
位移 | >>、<< | 11 | 左 |
按位与 | & | 10 | 右 |
按位异或 | ^ | 9 | 左 |
按位或 | 丨 | 8 | 左 |
比较运算符 | ==、!=、>、>=、<、<= | 7 | 左 |
is 运算符 | is、is not | 6 | 左 |
in 运算符 | in、not in | 5 | 左 |
逻辑非 | not | 4 | 右 |
逻辑与 | and | 3 | 左 |
逻辑或 | or | 2 | 左 |
逗号运算符 | exp1、 exp2 | 1 | 左 |
尽管 Python 运算符存在优先级的关系,但如果过度依赖运算符的优先级来编写程序,会导致Python代码的可读性受到影响,因此:
- 不要把一个表达式写得过于复杂,如果一个表达式过于复杂,可以尝试把它拆分来书写。
- 不要过多地依赖运算符的优先级来控制表达式的执行顺序,这样可读性太差,应尽量使用( )来控制表达式的执行顺序。
- Python运算符结合性
所谓结合性,就是当一个表达式中出现多个优先级相同的运算符时,先执行哪个运算符:先执行左边的叫左结合性,先执行右边的叫右结合性。
同样举个例子,对于表达式 2 / 6 * 3, * 与 / 在表中的优先级相同,在进行计算时由于两个运算符都具有左结合性,因此我们优先执行左边的除法,再执行右边的乘法,最终结果是 1。
由于Python 中大部分运算符都具有左结合性,也就是从左到右执行;只有 ** 乘方运算符、单目运算符(例如 not 逻辑非运算符)、赋值运算符和三目运算符例外,它们具有右结合性,也就是从右向左执行。因此我们可以简单的记忆具有右结合性的运算符,便可以记忆所有的Python运算符了。
- 小结
当一个表达式中出现多个运算符时,Python 会先比较各个运算符的优先级,按照优先级从高到低的顺序依次执行;当遇到优先级相同的运算符时,再根据结合性决定先执行哪个运算符:如果是左结合性就先执行左边的运算符,如果是右结合性就先执行右边的运算符。
2. Python算数运算符
我们假设以下变量:a = 10,b = 20,c = 15,d = -15:
运算符 | 描述 | 实例 |
---|---|---|
+ | 加:两个对象相加 | a + b 输出结果 30 |
- | 减: 得到负数或是一个数减去另一个数 | a - b 输出结果 -10 |
* | 乘: 两个数相乘或是返回一个被重复若干次的字符串 | a * b 输出结果 200 |
/ | 除: x除以y | b / a 输出结果 2 |
% | 取模: 返回除法的余数 | b % a 输出结果 0 |
** | 幂(乘方): 返回x的y次幂 a**b 为10的20次方 | 输出结果 100000000000000000000 |
// | 取整除: 返回商的整数部分(向下取整) | c // a 输出结果 1,d // a 输出结果 -2 |
注意:Python2.x 里,整数除整数,只能得出整数。如果要得到小数部分,把其中一个数改成浮点数即可。
>>> 1/2
0
>>> 1.0/2
0.5
>>> 1/float(2)
0.5
3. Python比较运算符
我们同样假设以下变量:a = 10,b = 20:
运算符 | 描述 | 实例 |
---|---|---|
== | 等于:比较对象是否相等 | (a == b) 返回 False |
!= | 不等于:比较两个对象是否不相等 | (a != b) 返回 true |
<> | 不等于: 比较两个对象是否不相等。python3 已废弃 | (a <> b) 返回 true,该运算符类似 != |
> | 大于: 返回x是否大于y | (a > b) 返回 False |
< | 小于: 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价 | (a < b) 返回 true |
>= | 大于等于: 返回x是否大于等于y | (a >= b) 返回 False |
<= | 小于等于: 返回x是否小于等于y | (a <= b) 返回 true |
4. Python赋值运算符
我们同样假设以下变量:a = 10,b = 20:
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | c = a + b 将 a + b 的运算结果赋值为 c |
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
5. Python位运算符
按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:
下表中变量 a 为 60,b 为 13,二进制格式如下:
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
a<<2 = 1111 0000
a>>2 = 0000 1111
运算符 | 描述 | 实例 |
---|---|---|
& | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 | (a & b) 输出结果 12 ,二进制解释: 0000 1100 |
丨 | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1 | (a 丨b) 输出结果 61 ,二进制解释: 0011 1101 |
^ | 按位异或运算符:当两对应的二进位相异时,结果为1 | (a ^ b) 输出结果 49 ,二进制解释: 0011 0001 |
~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 ,~x 类似于 -x-1 | (~a ) 输出结果 -61 ,二进制解释: 1100 0011,在一个有符号二进制数的补码形式 |
<< | 左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0 | a << 2 输出结果 240 ,二进制解释: 1111 0000 |
>> | 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数 | a >> 2 输出结果 15 ,二进制解释: 0000 1111 |
6. Python逻辑运算符
Python语言支持逻辑运算符,以下同样假设变量 a 为 10, b为 20:
运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值 | (a and b) 返回 20 |
or | x or y | 布尔"或" - 如果 x 是非 0,它返回 x 的计算值,否则它返回 y 的计算值 | (a or b) 返回 10。 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False ,如果 x 为 False,它返回 True | not(a and b) 返回 False |
7. Python成员运算符
除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。
运算符 | 描述 | 实例 |
---|---|---|
in | 如果在指定的序列中找到值返回 True,否则返回 False | x 在 y 序列中 , 如果 x 在 y 序列中返回 True |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True |
以下实例演示Python成员运算符的所有操作:
#Python成员运算符操作
a = 10
b = 20
list = [1, 2, 3, 4, 5 ]if ( a in list ):print ("1 - 变量a 在给定的列表中list中")
else:print ("1 - 变量a 不在给定的列表中list 中") if ( b not in list ):print ("2 - 变量 b 不在给定的列表中 list 中")
else:print ("2 - 变量 b 在给定的列表中 list 中")# 修改变量 a 的值
a = 2
if ( a in list ):print ("3 - 变量 a 在给定的列表中 list 中")
else:print ("3 - 变量 a 不在给定的列表中 list 中")
上述实例输出结果:
1 - 变量 a 不在给定的列表中 list 中
2 - 变量 b 不在给定的列表中 list 中
3 - 变量 a 在给定的列表中 list 中
8. Python身份运算符
身份运算符用于比较两个对象的存储单元
运算符 | 描述 | 实例 |
---|---|---|
is | is 是判断两个标识符是不是引用自一个对象 | x is y, 类似 id(x) == id(y),如果引用的是同一个对象则返回 True,否则返回 False |
is not | is not 是判断两个标识符是不是引用自不同对象 | x is not y,类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False |
注: id() 函数用于获取对象内存地址。
以下实例演示了Python所有身份运算符的操作:
#Python身份运算符操作
a = 20
b = 20if ( a is b ):print ("1 - a 和 b 有相同的标识")
else:print ("1 - a 和 b 没有相同的标识")if ( a is not b ):print ("2 - a 和 b 没有相同的标识")
else:print ("2 - a 和 b 有相同的标识")# 修改变量 b 的值
b = 30
if ( a is b ):print ("3 - a 和 b 有相同的标识")
else:print ("3 - a 和 b 没有相同的标识")if ( a is not b ):print ("4 - a 和 b 没有相同的标识")
else:print ("4 - a 和 b 有相同的标识")
上述实例输出结果:
1 - a 和 b 有相同的标识
2 - a 和 b 有相同的标识
3 - a 和 b 没有相同的标识
4 - a 和 b 没有相同的标识
- is 和 == 的区别
is 用于判断两个变量引用对象是否为同一个(同一块内存空间), == 用于判断引用变量的值是否相等。
>>> a = [1, 2, 3]
>>> b = a
>>> b is a
True
>>> b == a
True
>>> b = a[:]
>>> b is a
False
>>> b == a
True
【Python学习日历】Day.1-Python语言与运算符相关推荐
- Python学习细节总结以及python与c语言区别比较(4)
本文python学习基于廖雪峰老师的学习网站:字符串和编码 - 廖雪峰的官方网站 (liaoxuefeng.com),其内容相对完整,适合初学者学习.由于楼主之前有c语言的学习经验,在此本文仅对其中与 ...
- Python学习细节总结以及python与c语言区别比较(1)
本文python学习基于廖雪峰老师的学习网站:字符串和编码 - 廖雪峰的官方网站 (liaoxuefeng.com),其内容相对完整,适合初学者学习.由于楼主之前有c语言的学习经验,在此本文仅对其中与 ...
- Python学习笔记:使用Python操作数据库
Python学习笔记:使用Python操作数据库 一.数据库编程接口 为了对数据库进行统一的操作,大多数语言都提供了简单的.标准化的数据库接口(API).在Python Database API 2. ...
- 开始Python学习第二课(python环境安装)
*** 开始Python学习第二课*** 一. Python语言简介 1. Python语言 1.1 Python的命名 2. Python基本概念 2.1 Python的简单介绍 2.2 Pytho ...
- python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍
目录 python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍.md 一丶字典 1.字典的定义 2.字典的使用. 3.字典的常用方法. python学习第八讲,python ...
- Python学习笔记:用Python获取数据(本地数据与网络数据)
Python学习笔记:用Python获取数据(本地数据与网络数据) 一.用Python获取本地数据 读写文件(三种基本模式:r, w, a) 1.写文件 2.读文件
- python学习笔记26(python中__name__的使用)
python学习笔记26(python中__name__的使用) 在python中,每个py文件都是一个模块,也都是一个可执行文件,即包含main方法.因此,对每个py文件,可以单独运行,也可以imp ...
- 小猪的Python学习之旅 —— 19.Python微信自动好友验证,自动回复,发送群聊链接
小猪的Python学习之旅 -- 19.Python微信自动好友验证,自动回复,发送群聊链接 标签:Python 一句话概括本文: 上一节利用itchat这个库,做了小宇宙早报的监测与转发, 本节新增 ...
- Python学习交流群、python学习群、python技术交流群
为方便大家交流学习Python,特建立Python学习交流群.python学习群.python技术交流群,群内严禁广告,广告者直接T,因群二维码有效期只有七天,需要加群的朋友请先扫码,然后回复:Pyt ...
最新文章
- python爬虫之selenium,谷歌无头浏览器
- SourceTree中拉取GitLab代码时提示:Too many authentication failures“ fatal: Could not read from remote reposit
- 指令重排与jvm底层实现
- wav音量和分贝转换关系_Permute 3 for mac(音视频格式转换器) 最新版
- markdown java 代码高亮_MarkdownPad2使用代码高亮插件
- 循序渐进DB2 (第2版)——DBA系统管理、运维与应用案例
- win11组策略如何恢复默认设置 windows11组策略恢复默认设置的步骤方法
- opencv计算机视觉学习笔记一
- 汇川plc c语言,汇川plc可编程控制器模块种类
- AndroidStudio:The application‘s minSdkVersion is newer than the device API level.
- JavaScript:实现AlphaNumericalSort字母数字排序算法(附完整源码)
- Java版本企业招投标采购管理系统源码 一站式全流程采购招标系统
- 30 个 Python3 的最佳实操,小贴士和窍门(附课程)
- Android 鼠标样式修改
- 【操作系统】多线程、生产者——消费者同步与互斥代码实现
- vscode使用vetur解决代码换行、格式化、常量问题
- SpringBoot+Mybatis+Mysql+Vue+ElementUi实现一个《流浪猫狗领养救助管理系统》毕业设计(超详细教程)
- 500万补贴!武汉市企业牵头承担国家科技项目配套补贴对象标准及申报流程
- Source code does not match the bytecode
- 2022 主站及创作侧年度总结 - 相信未来、期待未来