python基础语法
1、高级语言分类
编译类
将程序源码“翻译”成目标源码(机器语言),生产可执行文件(*.obj)然后执行
优点:不需要源代码,不依赖语言环境,因为,执行的是机器代码文件,编译后可直接执行,效率高,速度快,因为程序代码已经翻译成计算机可以理解的机器语言
缺点:一旦需要修改,必须要修改源代码,然后在重新编译,没有源代码,修改很不方便。跨平台性能差,不同操作系统需要不同的可执行文件
语言:C,C++等
解释类
使用解释器执行源代码文件, 解释器把源代码文件便解释成机器指令,便交给CPU执行
优点:可跨平台,因为解释器做好了跨平台的交互处理。方式灵活,可以动态调整和修改程序
缺点:效率比较低,不能独立生成可执行文件,不能脱离解释器。代码是明文的
语言:python,Java,php
2、变量
规则:只能是字母、数字或下划线的任意组合
第一个字符不能是数字
关键字不能为变量名
命名习惯:驼峰体,下划线
3、交互
print,input
py2中,print ‘aaa‘, py3中,print('aaa')
4、注释
#
5、数据类型
数字:int,long(python没有指定长度,python3中没有这个类型了,都是int型), float
字符串:单引号,双引号,多引号(一段话),可以相加(只能字符串之间)相乘(字符串*数字)
bool类型:True, False
6、运算符
(参考:菜鸟)
算术运算符: '+','-','*','/','%','**','//'(py2中,1/2 得0, 1.0/2得0.5)
比较运算符:‘==’, ‘!=', '<>'(py2里得不等于), '>', '<', '>=', '<='
赋值运算符:'=', '+=', '-=', '*=', '/=', '%=', '**=', '//='
位运算符(换成二进制操作):'&', '|', '~', '^'(异或,相异为1), '<<'(左移,高位丢弃,低位补0), '>>'
逻辑运算符: and, or, not
x and y: x为False,返回False,否则,返回y的计算值。
x or y:x为非0,返回x值,否则返回y得计算值。
not x:x为True,返回False;x为False,返回True
成员运算符:in, not in
身份运算符:is,is not,(判断两个标识符是不是引用自一个对象)
优先级:(从高到低)
幂,转,正负, 乘除取模取整除,
加减,左右移,位与,位或位异或,
大大等小小等,等不等,
赋值,身份,成员,逻辑。
万能用法:括号()
7、流程控制
单分支
if 条件:
.....
双分支
if 条件:
....
else:
....
多分支
if 条件:
...
elif 条件:
....
elif 条件:
...
else:
...
循环
while 条件:
执行代码.....
终止语句
break, continue
while 条件:
执行代码..
else:
......(当循环正常退出或者条件不成立时,执行else后的语句)
8、字符编码
py3 文件默认编码:utf-8,
字符串默认编码:unicode
py2 文件默认编码ASCII,
字符串默认编码ASCII,
把字符串编码改成utf-8的方式:在文件开头:#!_*_ coding: utf-8 _*_, 或 #!encoding: utf-8
UTF --> decode 解码 --> Unicode
Unicode --> encode 编码 --> GBK/UTF-8
存在内存上Unicode,存在硬盘或网络传输是GBK/UTF-8
在python2,str = bytes, 是因为 要表示图片,视频等二进制的数据。还有一个类型叫unicode
pyhton3,str = unicode
py2: 以utf-8orgbk编写的代码,内容加载到内存,并不会转成unicode,还是utf-8 or gbk
py3: 以utf-8orgbk编写的代码,内容加载到内存,自动转成unicode,
千万不要自己转码,转码前必须备份
保证不乱码的关键:
字符当初以什么编码的,就应该以什么编码取解码
9、文件操作
什么是文件:操作系统为用户/应用程序提供操作硬盘的抽象单位
为何用文件:用户/应用程序对文件的读写操作会由操作系统转换成具体的硬盘操作,
所以用户/应用程序可以通过简单的读写文件间接控制复杂的硬盘的存取操作
如何使用文件:
f = open(),向操作系统发送信号打开文件,拿到一个文件对象
f.read(),读取文件,像操作系统发送读取文件指令
f.close(),向操作系统发送信号,关闭文件,操作系统回收资源
上下文管理:
with open() as f,open() as e,.....:
pass
强调:一定要在关闭文件前,操作文件
# 当你以utf-8写一个文件,直接读取时会报错: with open(r'aaa') as f: print(f.read()) #UnicodeDecodeError: 'gbk' codec can't decode byte 0xac in position 20: illegal multibyte sequence #原因:写入硬件的方式和读取时的方式不一样,造成了乱码。执行open()时,操作系统会以GBK模式打开文件。 #解决方法: with open(r'aaa', encoding='utf-8') as f: print(f.read())
控制读写文件单位的方式(必须与‘r’/‘w’/‘a’连用)
t:文本模式(默认的),一定要指定编码方式
优点:操作系统会将硬盘中二进制数字解码成Unicode,然后返回,仅适用文本文件
b:二进制模式,不用指定编码方式
文件的打开模式:
r:读(默认的)
w: 写
a: 只追加模式
读:当文件不存在时,报错,当问及那存在时,指针指向文件开头。
f.read(),全读,文件大时,不建议使用
f.readline(),读一行,
f.readable(),是否可读,
f.readlines(),全读,以每一行为元素放在一个列表内。文件大时,不建议使用
写:当文件不存在时,创建新的,存在时,清空覆盖,
f.write(" d");
f.writelines([]),
f.writable(),
追加:当文件存在时,追加写,文件不存在时,创建新文档
r+:可读可写,写在末尾
w+:可读可写,
a+:可读可写,
# 修改文件的方式一: # 1 将文件内容由硬盘全部读入内存 # 2 在内存中完成修改 # 3 将内存中修改后的结果覆盖写回硬盘 # with open('d.txt',mode='rt',encoding='utf-8') as f: # all_data=f.read() # print(all_data,type(all_data)) # with open('d.txt',mode='wt',encoding='utf-8') as f: # f.write(all_data.replace('alex','dsb')) # 错误的做法 # with open('d.txt',mode='rt',encoding='utf-8') as f1,open('d.txt',mode='wt',encoding='utf-8') as f2: # all_data=f1.read() # f2.write(all_data.replace('dsb','alex')) # 修改文件的方式二: # 1 以读的方式打开源文件,以写的方式打开一个临时文件 # 2 从源文件中每读一样内容修改完毕后写入临时文件,直到源文件读取完毕 # 3 删掉源文件,将临时文件重命名为源文件名 # import os # # with open('d.txt',mode='rt',encoding='utf-8') as read_f,open('.d.txt.swap',mode='wt',encoding='utf-8') as write_f: # for line in read_f: # write_f.write(line.replace('alex','dsb')) # # os.remove('d.txt') # os.rename('.d.txt.swap','d.txt') # 方式一: # 优点: 在文件修改的过程中硬盘上始终一份数据 # 缺点: 占用内存过多,不适用于大文件 # 方式二: # 优点: 不会过多地占用内存 # 缺点: 在文件修改的过程中会出现源文件与临时文件共存,硬盘上同一时刻会有两份数据,即在修改的过程中会过多的占用硬盘,

浙公网安备 33010602011771号