一、python的优缺点
优点:
- 优美、清晰、简单
- 高级语言
- 开发效率高
- 可移植性、可拓展性、可嵌入性
缺点:
- 运行速度慢
- 代码不能加密
- 线程不能利用多CPU
二、python2与python3的区别
代码:
- python2:代码混乱,重复代码较多,冗余
- python3:代码崇尚优美、清晰、简单
print:
- python2:print是一个语句
- python3:print是一个函数
input:
- python2:raw_input()接收字符串,input()接收数字
- python3:input()接收的全部是字符串
编码方式:
- python2:默认编码是ASCII码(若想使用中文:#_*_coding:utf-8_*_)
- python3:默认编码是utf-8,支持中文
不等运算符:
- python2:可以使用!=或者><
- python3:只能使用!=
创建迭代计数器:
- python2:xrange
- python3:range
repr:
- python2:repr可以是语句
- python3:只允许使用repr()函数
文件:
- python2:可以使用!=或者><
- python3:只能使用!=
整型:
- python2:存在long型
- python3:全部为int型
修改语法:
- python2:字典的keys,values,items以及map,filter,reduce返回的都是一个列表
- python3:字典的keys,values,items以及map,filter,reduce返回一个可迭代对象
新增语法:
- python2:print和exec语句,无nolocal等方法
- python3:print和exec改为函数,新增nolocal等方法
继承:
- python2:默认经典类(新式类需要(object))
- python3:只有新式类
三、开发的种类
编译型
缺点:排错慢,开发效率低,不可移植
优点:执行效率高
典型:C语言,go语言
解释型
缺点:执行效率低
优点:排错快,开发效率高,可移植
典型:python,PHP
混合型
典型:java,C#
四、python的种类
Cpython:基于C语言开发的
lpython
Jpython
PyPy:目前执行最快的
五、变量与常量
常量:一直不变的量,约定俗称,全部大写为常量
变量:把程序的运行结果存放在内存中,以便后期代码的调用
要求:
- 必须由数字、字母、下划线组成
- 不能以数字开头
- 不能是关键字
- 不能是中文,不能太长,要有可描述性
- 官网推荐下划线old_boy和驼峰体OldBoy
六、语句
if语句
elif分支判断
while语句
flag(标志位)
break(完全结束循环)
continue(跳出本次循环)
else(循环正常退出执行)
for语句
break(完全结束循环)
continue(跳出本次循环)
else(循环正常退出执行)
in,not in
s = '老男孩alexwusir' print('老男孩' in s) # True print('老男孩wusir' in s) # False print('老男' in s) # True print('老男' not in s) # False # 结果表明在一个字符串中,用一个母字符串中包含的定义的子字符串必须是连续的为True,不连续是False,in表示包含,not in表示非包含
七、逻辑运算符
# and or not # 第一种:前后都是比较运算。 # 优先级:()> not > and > or 同一个优先级,从左至右依次计算。 print(1 > 2 and 3 < 4 and 3 > 2 or 2 < 3) # True print(2 > 1 and 3 < 4 or 4 > 5 and 2 < 1) # True print(1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8) # False # 第二种:前后都是数值运算。 ''' x or y if x True,则 return x,否则 return y ''' print(1 or 3) # 1print(2 or 3) # 2 print(0 or 3) # 3 print(-1 or 3) # -1 print(1 and 2) # 2 print(0 and 2) # 0 # 第三种:混合。 print(1 > 2 or 3 and 4) # 4 print(2 or 2 > 3 and 4) # 2 print(0 or 2 > 3 and 4) # False #数据类型转换: ''' int ---> bool 非0即True,0为False bool---> int True 1 False 0 print(int(True)) print(int(False)) print(bool(100)) print(bool(0)) '''
八、格式化输出
#% 占位符 s str 字符串 d digit 数字 #第一种: name = input('请输入你的姓名:') age = input('请输入你的年龄:') hobby = input('请输入你的爱好:') msg = '我叫%s,今年%d岁,爱好%s' % (name,int(age),hobby) print(msg) #第二种 dic = {'name':'老男孩','age':51,'hobby':'无所谓'} msg = '我叫%(name)s,今年%(age)d岁,爱好%(hobby)s' % dic print(msg) #在格式化输出中单纯的显示% 用%% 解决。 name = input('请输入你的姓名:') age = input('请输入你的年龄:') msg = '我叫%s,今年%d岁,学习进度为1%%' % (name,int(age)) print(msg)
九、编码
一、基本概念
1,发电报:滴滴滴滴 实际是高低电平。
密码本:
今 0000 0001
天 0000 0101
喝 0000 0011
酒 0000 1100
去 0001 1010
呀 0001 0001
0010010 1000011 1100101 010001
2,计算机在存储,和传输的时候, 01010101
初期密码本:
asiic 包含数字,英文,特殊字符。八位
01000001 01000010 01000011 A B C
8位 = 1 byte 表示一个字符。
万国码unicode,将所有国家的语言包含在这个密码本。
初期:16位,两个字节,表示一个字符。
A : 00010000 00010010
中: 00010010 00010010
升级:32位,四个字节,表示一个字符。
A : 00010000 00010010 00010000 00010010
中: 00010010 00010010 00010010 00010010
资源浪费。
升级:utf-8。最少用8位(一个字节),表示一个字符。
英文:a :00010000 用8位表示一个字符。
欧洲:00010000 00010000 16位两个字节表示一个字符。
亚洲 中 :00010000 00010000 00010000 24位,三个字节表示一个字符。
utf-16
gbk:国标。
只包含:英文中文。
英文:a :00010000 8位,一个字节表示一个字符。
中文:中:00010000 00010000 16位,两个字节表示一个字符。
gb2312.....
8 bit = 1byte
1024byte=1kb
1024kb = 1MB
1024MB = 1GB
1024GB = 1TB
二、用法
存储和传输是0101,但是不可以使用Unicode编码进行传输
python3中的编码:python3中str在内存中的编码方式是Unicode。python3中的str不能直接存储和发送。
bytes的编码方式是非Unicode(UTF-8,GBK,GB2312....)
对于英文:str表现形式: s = 'qiujie'
内部编码为:Unicode
byte表现形式s = b'kuoiea'
内部编码形式为非unicode
对于中文:str表现形式: s = '中国'
内部编码为:Unicode
byte表现形式s = b'xe4xb8xadxe5x9bxbd'
内部编码形式为非unicode
encode编码:将str类型转换成byte类型
decode解码:将byte类型转换成str类型
s = 'alex' s1 = s.encode('utf-8') # unicode ---> utf-8 编码 s3 = s1.decode('utf-8') # utf-8 ---> unicode 解码 print(s3) # s = 'alex' # s1 = s.encode('gbk') # unicode ---> gbk 编码 # s3 = s1.decode('gbk') # gbk ---> unicode 解码 # print(s3) #gbk ---> utf-8 # s = 'alex' # s1 = s.encode('gbk') # print(s1) # # s2 = s1.decode('gbk').encode('utf-8') # print(s2)
python基础思维导图链接:https://www.processon.com/view/link/5ae71b80e4b019d3a919be99