Python基础之运算符、控制语句

1、Python解释器

1.1、CPython

官方,C语言开发,最广泛的Python解释器

1.2、IPython

一个交互式、功能增强的CPython

1.3、PyPy

Python语言写的Python解释器,JIT技术,动态编译Python代码

1.4、Jython

Python的源代码编译成Java的字节码,跑在JVM上

1.5、IronPython

与Jython类似,运行在.Net平台上的解释器,Python代码被编译成.Net的字节码

1.6、stackless

Python的增强版本解释器,不使用CPython的C的栈,采用微线程概念编程,并发编程

2、基础语法

2.1、注释

# 井号标注的文本

2.2、数字

2.2.1、整数int

复制代码
Python3开始不再区分long、int,long被重命名为int,所以只有int类型了

进制表示: 十进制 10 十六进制 0x10 八进制 0o10 二进制 0b10
bool类型,有2个值True、False
复制代码

2.2.2、浮点数float

1.2、3.1415、-0.12,1.46e9等价于科学计数法1.46*109
本质上使用了C语言的double类型

2.2.3、复数complex

1+2j或1+2J

2.3、字符串

2.3.1、语法

使用 ' " 单双引号引用的字符的序列
'''和""" 单双三引号,可以跨行、可以在其中自由的使用单双引号
r前缀:在字符串前面加上r或者R前缀,表示该字符串不做特殊的处理
f前缀:3.6版本开始,新增f前缀,格式化字符串

2.3.2、字符串拼接

str(1) + ',' + 'b' # 都转换成字符串拼接到一起
"{}-{}".format(1, 'a') # {}就是填的空,有2个,就使用2个值填充

# 在3.6后,可以使用插值
a = 100;
b = 'abc'
f'{a}-{b}' # 一定要使用f前缀,在大括号中使用变量名

2.4、转义序列

\\ \t \r \n \' \"
上面每一个转义字符只代表一个字符,例如 \t 显示时占了4个字符位置,但是它是一个字符
前缀r,把里面的所有字符当普通字符对待,则转义字符就不转义了。
转义:让字符不再是它当前的意义,例如\t,t就不是当前意义字符t了,而是被\转成了tab键

2.5、缩进

未使用C等语言的花括号,而是采用缩进的方式表示层次关系
约定使用4个空格缩进

2.6、续行

在行尾使用 \,注意\之后除了紧跟着换行之外不能有其他字符
如果使用各种括号,认为括号内是一个整体,其内部跨行不用 \

2.7、标识符

每一个标识符对应一个具有数据结构的值,但是这个值不方便直接访问,程序员就可以通过其对应的标识符来访问数据,标识符就是一个指代。一句话,标识符是给程序员编程使用的。

2.7.1、标识符

复制代码
1. 一个名字,用来指代一个值
2. 只能是字母、下划线和数字
3. 只能以字母或下划线开头
4. 不能是python的关键字,例如def、class就不能作为标识符
5. Python是大小写敏感的

6、标识符约定:
不允许使用中文,也不建议使用拼音
不要使用歧义单词,例如class_
在python中不要随便使用下划线开头的标识符
复制代码

2.7.2、常量

一旦赋值就不能改变值的标识符
python中无法定义常量

2.7.3、字面常量

一个单独的不可变量,例如 12、"abc"'2341356514.03e-9'

2.7.4、变量

赋值后,可以改变值的标识符

2.8、语言类型

2.8.1、类型图

Python是动态语言、强类型语言。

 

2.8.2、静态语言

事先声明变量类型,之后变量的值可以改变,但值的类型不能再改变编译时检查

2.8.3、动态语言

不用事先声明类型,随时可以赋值为其他类型
编程时不知道是什么类型,很难推断

2.8.4、强类型语言

不同类型之间操作,必须先强制类型转换为同一类型。 print('a'+1)

2.8.5、弱类型语言

不同类型间可以操作,自动隐式转换,JavaScript中 console.log(1+'a')
注意:强与弱只是一个相对概念,即使是强类型语言也支持隐式类型转换。

2.9、False等价

复制代码
False等价布尔值,相当于bool(value)
空容器
空集合set
空字典dict
空列表list
空元组tuple
空字符串
None
0
复制代码

2.10、逻辑运算真值表

2.11、运算符Operator

2.11.1、算数运算符

+、-、*、/、//向下取整整除、%取模、**幂
注:在Python2中/和//都是整除。

2.11.2、位运算符

&位与、|位或、^异或、<<左移、>>右移
~按位取反,包括符号位

2.11.3、比较运算符

==、!=、>、>=、<、<=
链式比较: 4 > 3 > 2
比较运算符,返回一个bool值
思考:1 == '1' 吗? 1 > '1' 吗?

2.11.4、逻辑运算符

复制代码
与and、或or、非not
逻辑运算符也是短路运算符
and 如果前面的表达式等价为False,后面就没有必要计算了,这个逻辑表达式最终一定等价为False
1 and '2' and 0
0 and 'abc' and 1

or 如果前面的表达式等价为True,后面没有必要计算了,这个逻辑表达式最终一定等价为True
1 or False or None

特别注意,返回值。返回值不一定是bool型
把最频繁使用的,做最少计算就可以知道结果的条件放到前面,如果它能短路,将大大减少计算量
复制代码

2.11.5、赋值运算符

a = min(3, 5)
+=、 -= 、*=、/=、%=、//= 等
x = y = z = 10
赋值语句先计算等式右边,然后再赋值给变量

2.11.6、成员运算符

innot in,用来判断是否是容器的元素,返回布尔值

2.11.7、身份运算符

isis not,用来判断是否是同一个对象

2.12、运算符优先级

单目运算符 > 双目运算符
算数运算符 > 位运算符 > 比较运算符 > 逻辑运算符
-3 + 2 > 5 and 'a' > 'b'
搞不清楚就使用括号。长表达式,多用括号,易懂、易读

2.13、表达式

由数字、符号、括号、变量等的组合。有算数表达式、逻辑表达式、赋值表达式、lambda表达式等等。
Python中,赋值即定义。Python是动态语言,只有赋值才会创建一个变量,并决定了变量的类型和值。
如果一个变量已经定义,赋值相当于重新定义。

3、内置函数

3.1、介绍

内建函数       函数签名                               说明
print          print(value, ..., sep=' ',end='\n')    将多个数据输出到控制台,默认使用空格分隔、\n换行
input          input([prompt])                        在控制台和用户交互,接收用户输入,并返回字符串
int            int(value)                              将给定的值,转换成整数。int本质是类
str            str(value)                              将给定的值,转换成字符串。str本质是类
type           type(value)                             返回对象的类型。本质是元类
isinstance     isinstance(obj,class_or_tuple)         比较对象的类型,类型可以是obj的基类

3.2、实践

print(1,2,3,sep='\n', end='***')
type(1)     # 返回的是类型,不是字符串
type('abc') # 返回的是类型,不是字符串
type(int)   # 返回type,意思是这个int类型由type构造出来
type(str)   # 返回type,也是类型
type(type)  # 也是type
print(isinstance(1, int))
print(isinstance(False, int)) # True

4、程序控制

4.1、简介

复制代码
顺序
按照先后顺序一条条执行
例如,先洗手,再吃饭,再洗碗
分支 根据不同的情况判断,条件满足执行某条件下的语句 例如,先洗手,如果饭没有做好,玩游戏;如果饭做好了,就吃饭;如果饭都没有做,叫外卖
循环 条件满足就反复执行,不满足就不执行或不再执行 例如,先洗手,看饭好了没有,没有好,一会来看一次是否好了,一会儿来看一次,直到饭好 了,才可是吃饭。这里循环的条件是饭没有好,饭没有好,就循环的来看饭好了没有
复制代码

4.2、单分支-if

4.2.1、语法

if condition:
    代码块
if 1<2: # if True:
    print('1 less than 2') # 代码块

4.2.2、说明

condition必须是一个bool类型,这个地方有一个隐式转换bool(condition),相当于False等价
if 语句这行最后,会有一个冒号,冒号之后如果有多条语句的代码块,需要另起一行,并缩进
iffordef、class等关键字后面都可以跟代码块 这些关键后面,如果有一条语句,也可以跟在这一行后面。例如 if 1>2: pass

4.3、多分支-if-elif-else

4.3.1、语法

复制代码
if condition1:
    代码块1
elif condition2:
    代码块2
elif condition3:
    代码块3
......
else:
    代码块
复制代码

4.3.2、示例

复制代码
a = 5
if a<0:
    print('negative')
elif a==0: 
    print('zero')
else: # 相当于 a > 0
    print('positive')

多分支结构,只要有一个分支被执行,其他分支都不会被执行
前一个条件被测试过,下一个条件相当于隐含着这个条件
复制代码

4.3.3、嵌套分支

a = 5
if a == 0:
    print('zero')
else:
    if a > 0:
        print('positive')
    else:
        print('negative')

4.4、while-循环

while循环多用于死循环,或者不明确知道循环次数的场景

4.4.1、语法

复制代码
while cond:
    block

while True: # 死循环
    pass

a = 10
while a: # 条件满足则进入循环
    print(a)
    a -= 1
复制代码

4.5、for-语句

4.5.1、语法

for element in iteratable: # 可迭代对象中有元素可以迭代,进入循环体
    block

for i in range(0, 10):
    print(i)

4.5.2、range作用

内建函数    函数签名        说明
range       range(stop)     range(start, stop[,step])

返回惰性的对象
可以生成一个序列,遍历它就可以得到这个序列的一个个元素
前包后不包

4.5.3、range示例

复制代码
# 计数器
for i in range(0):# 不会运行
    print(i)
print('---------')
for i in range(-2):# 不会运行
    print(i)
print('---------')
for i in range(1): # 打印0
    print(i)
复制代码

4.5.4、range-实践

复制代码
# 打印偶数
for i in range(0, 10):
    if i % 2 == 0 :
        print(i)

for i in range(0, 10, 2):
    print(i)

# 打印奇数
for i in range(0, 10):
    if i % 2 != 0 :
        print(i)

for i in range(1, 10, 2):
    print(i)
 
# 倒着打印
for i in range(8, -1 , -2):
    print(i)
复制代码

4.6、continue与break

4.6.1、continue

跳过当前循环的当次循环,继续下一次循环
复制代码
for i in range(0, 10):
    if i % 2 != 0 : continue
    print(i)
for i in range(10):
    if i % 2 != 0 : 
        continue
    print(i)
for i in range(10):
    if i & 1: continue
    print(i)
复制代码

4.6.2、break

结束当前循环
复制代码
# 练习:计算1000以内的,从7开始,被7整除的前15个正整数(for循环)
# 计算1000以内的被7整除的前15个正整数
count=0
for i in range(7,1000,7):
    print(i)
    count+=1
    if count>=15:
        print(count)
        break
复制代码

4.6.3、总结

continue和break是循环的控制语句,只影响当前循环,包括while、for循环
如果循环嵌套, continue和break也只影响语句所在的那一层循环
continue和break 只影响循环,所以 if cond: break 不是跳出if,而是终止if外的break所在的循环
分支和循环结构可以嵌套使用,可以嵌套多层。

4.7、for-else子句

4.7.1、作用

如果循环正常结束,else子句会被执行,即使是可迭代对象没有什么元素可迭代

4.7.2、示例

复制代码
for i in range(0): # 打印ok
    pass
else:
    print('ok')


for i in range(0,10): # else没有运行
    break
else:
    print('ok')

for i in range(0,10): # 打印ok
    continue
else:
    print('ok')

# 一般情况下,循环正常执行,只要当前循环不是被break打断的,就可以执行else子句。哪怕是range(0)也可以执行else子句。
复制代码

4.8、三元表达式

4.8.1、语法

真值表达式 if 条件表达式 else 假值表达式

# 在Python中,也有类似C语言的三目运算符构成的表达式,但python中的三元表达式不支持复杂的语句

4.8.2、示例

复制代码
# 判断用户的输入的值,如果为空,输出"empty",否则输出该值
value=input('>>>')
if value:
    print(value)
else:
    print('empty')

value=input('>>>')
print(value) if value else print('empty')
复制代码
posted @   小粉优化大师  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示