变量
用于存储各种值、对象,在以后的程序中使用或更改。
命名要求
- 具有描述性
- 以 _,数字,下划线组成
- 不以数字开头
- 不适用保留字
保留字=[and as assert break class continue def del elif else except exec finally for from global if import in is lambda not or pass print raise return try while with yield]
命名规范
- 包名、模块名、局部变量名、函数名:
全小写+下划线式驼峰
- 全局变量:
全大写+下划线式驼峰
- 类名:
首字母大写驼峰式
- 类私有变量:
双下划线开头小写
- 常量:
全部大写
链接:PEP8命名规范
中文链接
赋值
变量名直接指向值!!!下列中:a指向‘Yun’,然后b也指向‘Yun’,当a重新赋值后,b还是指向原来位置‘Yun’
>>> a = 'Yun'
>>> b = a
>>> b
>>> 'Yun'
>>> a = 'Six'
>>> b
>>> 'Yun'
注释
# 这是单行注释
"""
这是多行注释,
多行注释
"""
输入
# 输入类型都为字符串类型
name = input('输入:')
# 描述以变量传入
sub = '请输入:'
name = input(sub)
输出
>>> print('Sixto')
Sixto
>>> print('100+200 =',100+200)
100+200 = 300
标准头部
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
#! /usr/bin/env python
# -*- coding: utf-8 -*-
条件判断
Python代码缩进规则为4个空格
如果条件为真,则执行缩进代码块;否则,执行else下缩进代码块
if 条件:
pass
else:
pass
多次判断
if 条件:
pass
elif 条件:
pass
elif 条件:
pass
else:
pass
运算符
以下值为假:
- None
- False
- 任何数值类型的零,例如:0,0.0,0j
- 任何空序列,例如:”、()、[]
- 任何空映射,例如:{}
- 用户定义类的实例,如果该类定义__bool__()或__len__()’\方法,当该方法返回布尔值False或整数零的时候
其余都全部为真。
赋值运算
操作 | 描述 |
---|---|
= | 赋值运算 |
+= | 加法赋值运算 |
-= | 减法赋值运算 |
*= | 乘法赋值运算 |
/= | 除法赋值运算 |
%= | 取模赋值运算 |
**= | 幂赋值运算 |
//= | 取整除复制运算 |
布尔运算
操作 | 结果 |
---|---|
x or y | 或;若 x 为 False, 则结果为 y, 否则结果为 x |
x and y | 与;若x 为 false, 则结果为 x, 否则结果为 y |
not x | 非;若 x 为 false, 则结果为True, 否则结果为 False |
not 是一个低优先级的布尔运算符,所以 not a = = b 解释为 not (a = = b),以及a = = not b 是一个语法错误。
比较运算
Python有8种比较运算符。他们的优先级都相同(同时都比布尔运算符的优先级高)。比较符可以任意地连接;比如,x < y <= z等价于x < y and y <= z。
操作 | 含义 |
---|---|
< | 严格地小于 |
<= | 小于或等于 |
> | 严格地大于 |
>= | 大于或等于 |
== | 等于 |
!= | 不等于 |
is | 对象的ID |
is not | 不同的对象ID |
in 与 not in 与上面具有相同的优先级,但只能用于序列中。
数值类型
所有的数值类型(复数除外)都支持以下的运算操作,以下操作按优先级升序排序(所有的运算操作的优先级都比比较操作高)。
操作 | 结果 |
---|---|
x + y | x 和 y 的和 |
x - y | x 和 y 的差 |
x * y | x 和 y 的乘积 |
x / y | x 和 y 的商 |
x // y | x 除以y的商向下取整的整数 |
x % y | 求余数 |
-x | x 取负 |
+x | x 保持不变 |
abs(x) | x的绝对值或x的大小 |
int(x) | x 转换为整数 |
float(x) | x 转换为浮点数 |
complex(re, im) | 将参数转化为复数,re为复数的实部,Im为复数的虚部。im 默认为0 |
c.conjugate() | c 复数的共轭 |
divmod(x, y) | (x / / y, x % y) |
pow(x, y) | x 的y 次幂,效率高 |
x ** y | x 的y 次幂 |
所有number.Real类型(int和float)还包括以下操作:
操作 | 结果 |
---|---|
math.trunc(x) | x截断为Integral |
round(x[, n]) | x舍入到n数字,舍入到一半到偶数。如果省略n,它将默认为0。 |
math.floor(x) | 最大的Integral <= x |
math.ceil(x) | 最小Integral> = x |
整数类型的位运算
二进制按位操作的优先级都低于数值运算,并高于比较运算;一元操作~具有与其他一元数字操作(+和-)相同的优先级,升序排列。
操作 | 结果 |
---|---|
x | y | x和y的按位或 |
x ^ y | x和y的按位异或 |
x &y | x和y的按位与 |
x << n | x左移n位 |
x >>n | x右移n位 |
~x | 反转x的各个位 |
通用序列
s和t是相同类型的序列,n,i,j 和k是整数,x是值
操作 | 结果 |
---|---|
x in s | 如果x等于s中的任何一个值为True,否False |
x not in s | 如果x不等于s中的任何值为True,否False |
s + t | 将s与t连接 |
s * n or n * s | 相当于将s添加到自身n次 |
s[i] | 返回s的i,起始为0 |
s[i:j] | 返回s的i到j |
s[i:j:k] | 返回s的i到j,跨距为k |
len(s) | 返回s的长度 |
min(s) | 返回s的最小值 |
max(s) | 返回s的最大值 |
s.index(x [, i [, j]]) | 返回值x在s中索引(在索引i之后或索引j之前) |
s.count(x) | s中值x的总出现次数 |
可变序列
在表中s是可变序列类型的实例,t是任何可迭代对象,x是满足任何类型的任意对象。
操作 | 结果 |
---|---|
s [i] = x | x替换s[i]的值 |
s [i:j] = t | 从可迭代的t值替换从i到j的s |
del s [i:j] | 与s [i:j] = [] 相同 |
s [i:j:k] = t | s[i:j:k]的元素被t取代,长度要相同 |
del s [i:j:k] | 从列表中删除s[i:j:k]的元素 |
s.append(x) | 将x追加到序列的末尾(与s [len(s):len(s)] = [x]相同) |
s.clear() | 从s中删除所有项目(与del s [:]相同) |
s.copy() | 创建s的浅拷贝(与s[:]相同) |
s.extend(t)或s + = t | 使用t的内容延伸s(s [len(s):len(s)] = t) |
s * = n | 更新s,其内容重复n次 |
s.insert(i, x) | 在索引i插入x |
s.pop([i]) | 弹出索引i处的值,默认最后一个 |
s.remove(x) | 从s中移除第一个等于x的值 |
s.reverse() | 反转s |
while循环
当条件为真时,执行缩进块代码,然后再判断,再执行……
while 条件:
pass
for循环
for i in iterable:
代码块
break:跳出循环;continue:跳出本次循环,进行下次循环
列表元祖
li = [1,2] 有序可改变
tuple = (1,2) 有序不可改变