Python编程基础概念
布尔值
Python2 中没有布尔值,直接用数字 0 表示 False,用数字 1 表示 True。
Python3 中,把 True 和 False 定义成了关键字,但他们的本质还是 1 和 0,甚至可以和数字相加。
代码示例:
>>> a = True
>>> b =2
>>> a + b
3
比较运算符
所有比较运算符返回 1 表示真,返回 0 表示假。这分别与特殊的变量 True 和 False 等价。
以下假设变量 a 为 1,变量 b 为2:
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 - 比较对象的值是否相等 | (a == b) 返回 False |
!= | 不等于 - 比较两个对象的值是否不相等 | (a != b) 返回 true |
> | 大于 - 返回 x 是否大于 y | (a > b) 返回 False |
< | 小于 - 返回 x 是否小于 y | (a < b) 返回 true |
>= | 大于等于 - 返回 x 是否大于等于 y | (a >= b) 返回 False |
<= | 小于等于 - 返回 x 是否小于等于 y | (a <= b) 返回 true |
逻辑运算符
运算符 | 格式 | 说明 |
---|---|---|
or 逻辑或 |
x or y | x 为 true,则不计算 y,直接返回 true x 为 false,则返回 y |
and 逻辑与 |
x and y | x 为 true,则返回 y 的值 x 为 false,则不计算 y,直接返回 false |
not 逻辑非 |
not x | x 为 true,返回 false x 为 false,返回 true |
同一运算符
同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址。
运算符 | 描述 |
---|---|
is | is 是判断两个标识符是不是引用同一个对象 |
is not | is not 是判断两个标识符是不是引用不同对象 |
is 与 == 区别:
- is 用于判断两个变量引用对象是否为同一个,既比较对象的地址。
- == 用于判断引用变量引用对象的值是否相等,默认调用对象的 __eq__()方法。
- is 运算符比 == 效率高,在变量和 None 进行比较时,应该使用 is。
其他运算符
运算符 | 说明 |
---|---|
| | 按位或 |
^ | 按位异或 |
& | 按位与 |
<<, >> | 移位 |
~ | 按位翻转 |
代码示例:
>>> a = 0b11001
>>> b = 0b01000
>>> bin(a|b)
'0b11001'
>>> bin(a&b)
'0b1000'
>>> bin(a^b)
'0b10001'
>>> bin(a<<2)
'0b1100100'
>>> bin(a>>2)
'0b110'
>>> bin(~a)
'-0b11010'
复合赋值运算符
复合运算符可以使代码更加简洁精炼,提高可读性。
运算符 | 描述 | 示例 | 等价于 |
---|---|---|---|
+= | 加法赋值 字符串拼接 |
sum += n a += “xyz” |
sum = sum + n a = a + “xyz” |
-= | 减法赋值 | num1 -= n | num = num - n |
*= | 乘法赋值 | a *= b | a = a * b |
/= | 浮点除赋值 | a/=b | a = a / b |
//= | 整数除赋值 | a//=b | a = a//b |
%= | 取余赋值 | a%=b | a = a % b |
**= | 幂运算赋值 | a**=2 | a = a**2 |
<<= | 左移赋值 | a<<=2 | a = a<<2 |
>>= | 右移赋值 | a>>=2 | a = a>>2 |
&= | 按位与赋值 | a&=b | a = a&b |
|= | 按位或赋值 | a|=b | a=a|b |
^= | 按位异或赋值 | a^=b | a = a^b |
注:与 C 和 JAVA 不一样,Python 不支持自增(++)和自减(–)
运算符优先级问题
如下优先级,从高到低。
运算符 | 描述 |
---|---|
** | 指数 (最高优先级) |
~ | 按位翻转 |
* / % // | 乘,除,取模和取整除 |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位 ‘and’ |
^ | | 位运算符 |
<= < > >= | 比较运算符 |
<> == != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not or and | 逻辑运算符 |
实际使用中,记住如下简单的规则即可,复杂的表达式一定要使用小括号组织。
- 乘除优先加减
- 位运算和算术运算>比较运算符>赋值运算符>逻辑运算符
编程作业:使用Python表示数学式:
5 + 10 x 5 − 13 ( y − 1 ) ( a + b ) x + 9 ( 5 x + 12 + x y ) \frac{5+10 x}{5}-\frac{13(y-1)(a+b)}{x}+9\left(\frac{5}{x}+\frac{12+x}{y}\right) 55+10x−x13(y−1)(a+b)+9(x5+y12+x)
>>> (5+10x)/5-13*(y-1)*(a+b)/x+9*(5/x+(12+x)/y)