Python 基础语法详解(三)
- Python 运算符
- Python 算术运算符
- ①理论讲解:
- ②实操讲解:
- Python 比较运算符
- ①理论讲解:
- ②实操讲解:
- Python 赋值运算符
- Python 位运算符
- ①理论讲解:
- ②实操讲解:
- Python 逻辑运算符
- ①理论讲解:
- ②实操讲解:
- Python 成员运算符
- ①理论讲解:
- ②实操讲解:
- Python 身份运算符
- ①理论讲解:
- ②实操讲解:
- Python 运算符优先级
Python 运算符
Python 算术运算符
①理论讲解:
下表假设变量: a=10,b=20:
②实操讲解:
#coding=utf-8
# __author__ = 帅小柏
a, b = 21, 10
print("a=", a, "b=", b)
print("a + b的值为:", a + b)
print("a - b的值为:", a - b)
print("a * b的值为:", a * b)
print("a / b的值为:", a / b)
print("a % b的值为:", a % b)
print("2**3的值为:", 2**3)
print("10//2的值为:", 10//2)
温馨小提示:
- Python中除法结果向后精确一位;
- 除(/)和取模(%)运算符经常一起使用,会有很多有趣的操作哦~
Python 比较运算符
(False 虚假的,假的;True 真实的,真的)
①理论讲解:
下表假设变量: a=10,b=20:
拓展:字符串之间的比较运算:
- 大写字母 < 小写字母
- 数字: 1 < 2 < 3…
- 字母: a < b < c…
(核心就是字母间按对应 ASCII 码大小进行比较;数字按大小进行比较)
②实操讲解:
# -*- coding: utf-8 -*-
# __author__ = 帅小柏
a = "1ab"
b = "1abc"
print(a < b)
Python 赋值运算符
Python 位运算符
①理论讲解:
按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:
②实操讲解:
实操一:
下表中变量 a 为 60,b 为 13,对应二进制格式如下:
a = 0011 1100
b = 0000 1101
运算 | 结果 |
---|---|
a&b | 0000 1100 |
a | b |
a^b | 0011 0001 |
~a | 1100 0011 |
a<<2 | 1111 0000 |
a>>2 | 0000 1111 |
实操二:
# -*- coding: utf-8 -*-
# __author__ = 帅小柏
def decInt2Bin(string_num):
num = int(string_num)
if (num < 0):
num = abs(num) ^ 0xFF - 1
result = bin(num)[2:]
return result.zfill(8)
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
print('dec:a=', a, 'bin:a=', decInt2Bin(a))
print('dec:b=', b, 'bin:b=', decInt2Bin(b))
print('dec:a&b=', a & b, 'bin:a&b=', decInt2Bin(a & b))
print('dec:a|b=', a | b, 'bin:a|b=', decInt2Bin(a | b))
print('dec:a^b=', a ^ b, 'bin:a^b=', decInt2Bin(a ^ b))
print('dec:a<<2=', a << 2, 'bin:a<<2=', decInt2Bin(a << 2))
print('dec:a>>2=', a >> 2, 'bin:a>>2=', decInt2Bin(a >> 2))
print('dec:~a=', ~a, 'bin:~a=', decInt2Bin(~a)) # -61 = 1100 0011
Python 逻辑运算符
①理论讲解:
运算符 | 描述 |
---|---|
与(and) | 连接的两个条件,如果都满足,就返回 True,如果有一个不满足就返回 False |
或(or) | 连接的两个条件,如果两个条件有一个满足,就返回 True |
非(not) | 取反 |
注意:对于数值,Python 认为非 0 表示 True,0 表示 False!
②实操讲解:
# -*- coding: utf-8 -*-
# __author__ = 帅小柏
a, b = 10, 20
if (a and b):
print("1 - 变量 a 和 b 都为 true")
else:
print("1 - 变量 a 和 b 有一个不为 true")
if (a or b):
print("2 - 变量 a 和 b 都为 true,或其中一个变量为 true")
else:
print("2 - 变量 a 和 b 都不为 true")
# 修改变量 a 的值
a = 0
if (a and b):
print("3 - 变量 a 和 b 都为 true")
else:
print("3 - 变量 a 和 b 有一个不为 true")
if (a or b):
print("4 - 变量 a 和 b 都为 true,或其中一个变量为 true")
else:
print("4 - 变量 a 和 b 都不为 true")
if not (a and b):
print("5 - 变量 a 和 b 都为 false,或其中一个变量为 false")
else:
print("5 - 变量 a 和 b 都为 true")
Python 成员运算符
①理论讲解:
除了以上的一些运算符之外,Python 还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表以及元组。
②实操讲解:
# -*- coding: utf-8 -*-
# __author__ = 帅小柏
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 中")
Python 身份运算符
①理论讲解:
身份运算符用于比较两个对象的存储单元是否引用自一个对象
知识点补给站:
身份运算符是通过判断内存地址(即 id)是否相等来进行比较的~
②实操讲解:
# -*- coding: utf-8 -*-
# __author__ = 帅小柏
a, b = 20, 20
print("a is b:", a is b)
print("id(a) == id(b):", id(a) == id(b))
b = 30
print("a is b:", a is b)
print("a is not b:", a is not b)
不过上面这个实例一出,可能有些有其它语言底子的同学会有所疑问—为什么变量 a 和变量 b 我们是单独赋予的值,但是它俩的 id 一样呢!
这里就涉及到了 Python 内存池这一知识点,此处我就先简单讲解一下,让大家好解决上述这个疑问:
a = 1
b = 1
id(a) 输出为:1402582080
id(b) 输出为:1402582080
结论:Python 中有个自带的内存池,数值比较小的值已经在这个内存池中定义好了,那么我们创建的时候,就直接指向了内存池当中的这个内存空间。
拓展—is 与 == 区别:
is
用于判断两个变量引用对象是否为同一个,==
用于判断引用变量的值是否相等。
【可能,我是说可能啊,有些许小伙伴不是很能理解下面这几行代码,后面我会出一篇专门讲解关于 Python 深浅复制的文章,莫着急~】
>>> a = [1, 2, 3]
>>> b = a
>>> b is a
True
>>> b == a
True
>>> b = a[:]
>>> b is a
False
>>> b == a
True
Python 运算符优先级
以下表格列出了从最高到最低优先级的所有运算符:(一元加号和减号就是俗称的正负号~)
注意事项:
- 相同等级的运算顺序为从左到右
- 可以使用括号改变运算顺序
- 三大逻辑运算符分优先级:not > and > or
- 整数除整数,运算结果为小数(重要知识点,需牢牢记住!)
欢迎通过点击关注下公众号【帅小柏】,加入我们的 Python 大家庭,共同学习进步(非诚勿扰)。