Python基础
冯诺依曼体系架构
- CPU由运算器和控制器组成
- 运算器
- 控制器
- 存储器
- 输入设备
- 输出设备
- CPU中还有寄存器和多级缓存Cache
python的语言类型:动态语言、强类型语言
- 动静态:
- 静态:声明变量类型,定义后无法修改
- 动态:不用声明变量类型,随时赋值即可改变类型
- 强弱型
- 强类:不同类型间操作必须先强制转换为同一类型
- 弱类:不同类型间操作,自动隐式转换
基础语法
- 注释
#
数字
- 整数,不分
long
和int
。进制。bool型True
,False
- 浮点数
- 复数
- 整数,不分
字符串
- 使用单双引号引用的字符的序列
- 单双三引号可跨行
- 字符串前加
r
或R
,表示不做特殊处理
转义序列
\\
\t
\r
\n
\'
\''
- 前缀
r
或R
,把里边所有字符当普通字符对待
缩进
- 用缩进的方式表示层级关系
- 约定使用4个空格
续行
- 行尾使用
\
- 括号
()
内为一个整体,内部跨行不用\
- 行尾使用
标识符
- 一个名字代指一个值
- 只能是字母、数字、下划线组成
- 不能以数字开头
- 不能是python内置的关键字,如
def
、class
等 - 严格区分大小写
- 约定:不使用中文;不使用歧义词,如
class
;不使用下划线开头的标识符
常量
- 赋值后无法改变值的标识符
- python中无法定义常量
字面常量:一个单独的量,如
123
、'abc'
…变量:赋值后可改变值的标识符
运算符
算术运算符
+
-
*
/
%
**
/
为自然除,结果为浮点数//
为整除
位运算符
&
|
~
^
<<
>>
比较运算符
==
!=
>
<
>=
<=
- 返回一个bool值
逻辑运算符
- 与或非
and
or
not
- 短路运算符:
and
若第一个表达式为False
,则结果为False
;or
若第一个表达式为True,则结果为True
- 与或非
赋值运算符
a = 1.23
x = y = z = 0
+=
-=
*=
/=
%=
成员运算符:
in
not in
身份运算符:
is
is not
运算符优先级
- 算术运算符 > 位运算符 > 身份运算符 > 成员运算符 > 逻辑运算符
- 括号优先级最高
原码、反码、补码及负数表示
- 原码:二进制表示
- 反码:正数反码=原码;负数反码符号位不变其余按位取反
- 补码:正数补码=原码;负数反码符号位不变其余按位取反后+1
- 计算机运算减法要转换成加法
- 负数在计算机中用补码存储;-1的补码为
1111 1111
内存管理
- python使用引用计数记录所有对象的引用数
- 当对象引用数为0时,即可被垃圾回收GC
- 计数增加:赋值给其他变量,如
x=1
;y=x
- 计数减少:函数运行结束时局部变量自动销毁,即减少引用计数;变量赋值给其它对象,如
x=1
;y=x
;x=2
单分支结构
- if语句
if condition:
block
(condition为bool类型)
真值表
多分支结构
- if…elif…else语句
if condition1:
block
elif condition2:
block
elif condition3:
block
...
else:
block
分支嵌套
if condition:
block
else:
if condition:
block
elif condition:
block
else:
block
for循环
- 语法
for element in interable:
block
(当元素可迭代时,进入循环,执行block)
- range函数:返回可迭代对象,进行计数处理
for i in range(5):
print(i)
(range迭代取值默认从0开始;范围区间前闭后开;默认步长为1)
while循环
- 语法
while condition:
block
(条件满足时,condition为True,进入循环,执行block)
continue语句
- 中断“当前循环”的当次执行(包括while、for循环),继续下次循环
break语句
- 终止“当前循环”的执行(包括while、for循环)
if condition:
break
(并非跳出if,而是终止if外的break所在的循环)
else循环
- 语法
while condition:
block
else:
block
for element in interable:
block
else:
block
(若循环正常的执行结束,即执行else;若使用break终止,则else不执行)
计算所耗时间
import datetime #导入模块
start = datetime.datetime.now() #将现在时间赋值给start
(datetime.datetime.now() - start).total_seconds() #现在时间减去start,即为所耗时间