Python是动态类型语言,也就是说不需要预先声明变量的类型。变量的类型和值是在被赋值的那一刻初始化的。
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del',
'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is',
'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise','return', 'try', 'while','with', 'yield']
python语言支持以下操作符
python语言中,等号(=)是主要的赋值操作符(其他的是增量操作符)
在python中赋值不是直接将一个值赋给一个变量,不管新创建的,还是已经存在的都是将该对象的引用(不是值)赋值给变量
python的赋值语句不会返回值
操作符 | 描述 | 示例 |
= | 操作符右边的值赋值给左边 | c = a +b 表示a+b的值赋值给c |
+= | 操作符左边的值加上右边的值赋值给左边 | a += b 等价于 a = a+b |
-= | 操作符左边的值减去右边的值赋值给左边 | a -= b 等价于 a = a - b |
*= | 操作符左边的值乘以右边的值赋值给左边 | a *= b 等价于 a = a * b |
/= | 操作符左边的值除以右边的值赋值给左边 | a /= b 等价于 a = a / b |
%= | 操作符左边的值除以右边的值的模数,并将结果赋值给左边 | a %= b 等价于 a = a % b |
**= | 执行指数(幂)运算,并将值赋值给左边 | a **= b 等价于 a = a ** b |
//= | 运算符执行地板除运算,并将值赋值给左边 | a //= b 等价与 a = a // b |
假设三个变量 a=10 , b=21和c=5
操作符 | 描述 | 示例 |
+ | 加法运算,将运算符两边的操作数相加 | c = a + b ( c = 31) |
- | 减法运算,将左边的值减去右边的值 | c = a - b (c = -11) |
* | 乘法运算,将操作符两边的值相乘 | c = a * b (c = 210) |
/ | 除法运算,用操作符左边的值除以右边的值 | c = a / b (c = 2.1) |
% | 模运算,用操作数左边的值除以右边的值返回余数 | c = b % a (c = 1) |
** | 对运算符进行指数(幂)计算 | a ** b,表示10的21次幂 |
// | 地板除,不管操作数为何种类型,结果总是舍去小数部分,但如果 一个操作数为负数,则结果将被保留,即从零(向负无穷大)舍去 |
9//2 = 4 , 9.0//2.0 = 4.0 , -11//3 = -4 , -11.0//3 = -4.0 |
假设变量a = 10 ,b=20
操作符 | 描述 | 示例 |
== | 如果操作符两边的值相等,则条件为真(True),否则为假(False) | (a == b)求值结果为:False |
!= | 如果操作符两边的值不相等,则条件为真(True),否则为假(False) | (a != b)求值结果为:True |
> | 如果操作符左边的值大于右边的值,则条件为真(True),否则为假(False) | (a > b)求值结果为:False |
< | 如果操作符左边的值小于右边的值,则条件为真(True),否则为假(False) | (a < b)求值结果为:True |
>= | 如果操作符左边的值大于或等于右边的值,则条件为真(True),否则为假(False) | (a >= b)求值结果为:False |
<= | 如果操作符左边的值小于或等于右边的值,则条件为真(True),否则为假(False) | (a <= b)求值结果为:True |
假设a,b为True,c为False (相当于不等于0为真,等于0为假)
操作符 | 描述 | 示例 |
and | 如果操作符两边的值都为真,则条件为真(True),两边任意一个为假则为假(False) | (a and b)的结果为:True (a and c)的结果为:False |
or | 如果操作符两边的任意一个值为真,则条件为真(True),两个都为假则为假(False) | (a or b) 的结果为:True (a or c)的结果为:True |
not | 反转操作符右边值的逻辑状态 | (not a)的结果为:False (not c)的结果为:True |
按位运算符执行逐位运算,二进制的数字来运算的一种形式。
Python的内置函数bin()
可用于获取整数的二进制表示形式。
将数字转换为二进制补码的形式进行计算例如:
a=234 二进制补码为:1110 1010
b=100 二进制补码为:0110 0100
操作符 | 描述 | 示例 |
& | 按位与 (1&1=1,1&0=0, 0&0=0, 0&1=1即:x&0=0) | a(1110 1010) & b(0110 0100) = c(0110 0000) 234 & 100 = 96 |
| |
按位或(1|1=1,1|0=1,0|0=0,0|1=1即:x|1=1) | a(1110 1010) | b(0110 0100) = c(1110 1110) 234 | 100 =238 |
^ | 按位异或(1^0=1,1^1=0,0^0=0即:x^1时x=1值为:0,x=0时值为:1) | a(1110 1010) ^ b(0110 0100) = c(1000 1110) 234 & 100 = 142 |
~ | 按位翻转(~1=0,~0=1)为单目运算符不能1~0可以1+~0 | ~a(1110 1010) = a(0001 0101) |
<< | 左移 ,将一个数字为x的二进制数向左移动N位 | a(1110 1010)<<2 = a(1010 1000) |
>> | 右移,将一个数字为想x的二进制数向右移动N位 |
a(1110 1010)>>2 = a(0011 1010) |
Python成员运算符测试给定值是否为序列中的成员,例如字符串,列表或元组。
假设 a = ‘abcde’ 和b=‘a’
操作符 | 描述 | 示例 |
in | 如果在指定的序列中找到这个变量的值,则返回True,否则返回False | b in a的值为True |
not in | 如果在指定的序列中找不到这个变量的值,则返回True,否则返回False | b in a的值为False |
身份运算符比较两个对象的内存位置。常用的有两个身份运算符
操作符 | 描述 | 示例 |
is | 如果操作符任意一侧的变量指向相同的对象,则返回True,否则返回False | - |
is not | 如果操作符任意一侧的变量不是指向相同的对象,则返回True,否则返回False | - |
下表列出了从最高优先级到最低优先级的所有运算符
序号 | 运算符 | 描述 |
1 | ** | - |
2 | ~ + - | - |
3 | * / % // | - |
4 | + - | - |
5 | >> << | - |
6 | & | - |
7 | ^ | | - |
8 | <= < > >= | - |
9 | <> == != | - |
10 | = %= /= //= -= += *= **= | - |
11 | is is not | - |
12 | in not in | - |
13 | not or and | - |