本文算是从零学习Python的真正的第一篇,正式的开始了解Python的基础语法。
表达式和语句
语句是一个会产生影响的代码单元,例如新建一个变量
此时n的值被赋予成17。
表达式是值、变量和运算符的组合。 值自身也被认为是一个表达式,变量也是,因此下面都是合法的表达式:
变量名
通常情况下,程序员会为变量取一个比较有意义的名字,以便于记录该变量的用途。
变量名可由字母,数字和下划线_
组成,但是不能以数字开头,同时严格区分大小写,对于变量名的命名原则对于不同的场合或者公司会有不同的准则,对于我们初学者而言,我们需要保证整个程序内的命名风格是统一的即可。下面列举几种不同的命名情况:
- 我们可以发现前面四种情况都是可以正常执行的语句,接着为了证明它们是四个不同的变量我们分别来看一下它们的值:
其运行结果也能看出大小写不同的变量确实是两个不同的变量。
8money = 11
发生了语法报错,也应证了前面所说的变量名不能是以数字开头。True = 5
同样发生了语法报错这是为什么呢?我们看到true = 5
是能够正常运行的,这就得说道另外一个概念关键字。
关键字:是编程语言中事先定义好的标识符,也称保留字,关键字有其特有的作用,不能被用作变量名,当然也最好不要使用与关键字只有大小写区别的变量名如true
。
Python3有一下关键字:
‘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提供一些常用的算术运算符:为了方便演示如无特别说明下面所出现的两个变量x = 9, y = 2
运算符 | 说明 | 实例 |
---|---|---|
+ | 将两个值相加 | x + y 结果:11 |
- | 将两个值相减 | x - y 结果:7 |
* | 将两个值相乘 | x * y 结果:18 |
/ | 将两个值相除 | x / y 结果:4.5 |
% | 取模,得到两个值相除的余数 | x % y 结果:1 |
** | 取幂,得到x的y次幂 | x ** y 结果:81 |
// | 去整,得到两个值相除的商的整数部分(向下取值) | 9 // 2 结果:4; -9 // 2 结果 -5 |
比较运算符
运算符 | 说明 | 实例 |
---|---|---|
== | 等于,比较两个对象是否相等 | (x==y)返回False |
!= | 不等于,比较两个对象是否不相等 | (x != y) 返回 True |
> | 大于,返回x是否大于y | (x > y) 返回 True |
< | 小于,返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写 | (x < y) 返回 False |
>= | 大于等于,返回x是否大于等于y | (x >= y) 返回 True |
<= | 小于等于,返回x是否小于等于y | (x <= y) 返回 False |
赋值运算符
运算符 | 说明 | 实例 |
---|---|---|
= | 简单的赋值运算符 | z = x + y 将 x + y 的运算结果赋值为 z |
+= | 加法赋值运算符 | z += x 等效于 z = z + x |
-= | 减法赋值运算符 | z -= a 等效于 z = z - x |
*= | 乘法赋值运算符 | z *= x 等效于 z = z * x |
/= | 除法赋值运算符 | z /= x 等效于 z = z / x |
%= | 取模赋值运算符 | z %= x 等效于 z = z % x |
**= | 幂赋值运算符 | z * *= a 等效于 z = z * * x |
//= | 取整除赋值运算符 | z //= x 等效于 z = z // x |
逻辑运算符
运算符 | 说明 | 实例 |
---|---|---|
and | 布尔"与",x and y,如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值 | (x and y) 返回 2 |
or | 布尔"或",x or y,如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值 | (x or y) 返回 9 |
not | 布尔"非",not x,如果 x 为 True,返回 False 。如果 x 为 False,它返回 True | not(x and y) 返回 False |
位运算
按位运算是把数字当成二进制数来进行计算的,为便于运算下面变量a = 5, b = 3;其四位二进制表达为:a = 0000 0101,b = 0000 0011;
运算符 | 说明 | 实例 |
---|---|---|
& | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 | (a & b) 输出结果 1,二进制解释: 0000 0001 |
| | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1 | (a | b) 输出结果 7,二进制解释: 0000 0111 |
^ | 按位异或运算符:当两对应的二进位相异时,结果为1 | (a ^ b) 输出结果 6,二进制解释: 0000 0110 |
~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1 | (~a ) 输出结果-6,二进制解释: 1111 1010, 在一个有符号二进制数的补码形式 |
<< | 左移动运算符:运算数的各二进位全部左移若干位,由<< 右边的数指定移动的位数,高位丢弃,低位补0 | a << 2 输出结果 20,二进制解释: 0001 0100 |
>> | 右移动运算符:把>> 左边的运算数的各二进位全部右移若干位,>> 右边的数指定移动的位数 | a >> 2 输出结果 1,二进制解释: 0000 0001 |
成员运算符
运算符 | 说明 | 实例 |
---|---|---|
in | 如果在指定的序列中找到值返回 True,否则返回 False | x 在 y 序列中 , 如果 x 在 y 序列中返回 True |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True |
下面我会通过一个小程序来解释:
x = 8
y = 10
list = [1, 2, 3, 8, 9]
if(x in list):
print("x-存在")
else:
printf("x-不存在")
if(y not in list):
print("y-不存在")
else:
print("y-存在")
运行结果:
x-存在
y-不存在
身份运算符
运算符 | 说明 | 实例 |
---|---|---|
is | is 是判断两个标识符是不是引用自一个对象 | x is y,如果引用的是同一个对象,则返回True,否则返回False |
is not | is not 是判断两个标识符是不是引用自不同对象 | x is not y,如果引用的不是同一个对象,则返回True,否则返回False |
运算符优先级
我们在小学的时候就已经知道了,算术时有先乘除后加减,有括号先算括号里面的,Python自然也遵循了这一原则,并且它也规定了其它运算符的优先级,下面表格列出了从最高到最低优先级的所有运算符,处于同一行的运算符属于同一优先级
运算符 | 说明 |
---|---|
** | 指数 (最高优先级) |
~ | 按位翻转 |
* / % // | 乘,除,取模和取整除 |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位 ‘AND’ |
^ | | 位运算符 |
<= < > >= | 比较运算符 |
== != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not or and | 逻辑运算符 |
当然,如果害怕记不住这些优先级,有一个十分简单且可靠的方法:为每一步运算加上括号。