1. python解释器执行py文件的原理 ,例如python test.py

        第一阶段:python解释器启动,此时就相当于启动了一个文本编辑器

    第二阶段:python解释器相当于文本编辑器,去打开test.py文件,从硬盘上将test.py的文件内容读入到内存中(小复习:pyhon的解释性,决定了解释器只关心文件内容,不关心文件后缀名)

    第三阶段:python解释器解释执行刚刚加载到内存中test.py的代码( ps:在该阶段,即执行时,才会识别python的语法,执行文件内代码,执行到name="egon",会开辟内存空间存放字符串"egon")

 2. unicode ,UTF-8

  2.1   unicode的由来, 统一用2Bytes代表一个字符, 2**16-1=65535,可代表6万多个字符,因而兼容万国语言

  作用:  unicode:简单粗暴,所有字符都是2Bytes,优点是字符->数字的转换速度快,缺点是占用空间大

  2.2  UTF-8的由来,但对于通篇都是英文的文本来说,这种编码方式无疑是多了一倍的存储空间(二进制最终都是以电或者磁的方式存储到存储介质中的)

于是产生了UTF-8,对英文字符只用1Bytes表示,对中文字符用3Bytes

  作用:  utf-8:精准,对不同的字符用不同的长度表示,优点是节省空间,缺点是:字符->数字的转换速度慢,因为每次都需要计算出字符需要多长的Bytes才能够准确表示

  1. 内存中使用的编码是unicode,用空间换时间(程序都需要加载到内存才能运行,因而内存应该是尽可能的保证快)
  2. 硬盘中或者网络传输用utf-8,网络I/O延迟或磁盘I/O延迟要远大与utf-8的转换延迟,而且I/O应该是尽可能地节省带宽,保证数据传输的稳定性。

2.3  字符编码的使用

unicode  ------->encode--------->UTF-8

UTF-8------->decode--------->unicode

3.1  分析过程

文件从内存刷到硬盘的操作简称存文件

文件从硬盘读到内存的操作简称读文件

注释:

如果不在python文件指定头信息#-*-coding:utf-8-*-,那就使用默认的

python2中默认使用ascii,python3中默认使用utf-8

 

3.2  在Python3中两种字符串类型 str和bytes

str是unicode

#coding:utf-8
s='林' #当程序执行时,无需加u,'林'也会被以unicode形式保存新的内存空间中, #s可以直接encode成任意编码格式
s.encode('utf-8')
s.encode('gbk') print(type(s)) #<class 'str'>

本节总结

1.以什么编码存的就要以什么编码取出

ps:内存固定使用unicode编码

  我们可以控制的编码是往硬盘存放或者基于网络传输选择编码

2.数据是最先产生于内存中,是unicode格式,要想传输需要转成bytes格式

#unicode ---------->encode(utf-8)---------->bytes

拿到bytes--------->decode(gbk)---------->unicode

3.python3中字符串被识别成unicode

python中的字符串encode得到bytes

二.

open:

1.会向操作系统发起系统调用,操作会打开一个文件

2.在python程序中会产生一个值指向操作系统打开那个文件,我们可以把该值赋给一个x。

回收资源

1.f.close():      关闭操作系统打开的文件,即回收操作系统的资源

2.del f:   没必要做,因为在python程序运行完毕后,会自动清理与该程序有关的所有内存占用

f = open(r'aaaaa.py','r',encoding='utf-8')
#print(f.read()) #print(f.readline(),end=")
print(f.readlines())
f.close()

最新文章

  1. PO,VO,BO,DTO,POJO(POCO),DAO的区别(转载)
  2. android 内存查看的不同数据指标
  3. 如此清除sql server 2008 记住的用户名
  4. Asp.Net回车键触发Button的OnClick事件解决方案
  5. 中晟银泰国际中心酒店式公寓介绍 业主交流QQ群:319843248
  6. CSS 问题集锦
  7. go sample - mongodb
  8. C# Settings使用小结
  9. HDU1532 Drainage Ditches 网络流EK算法
  10. BZOJ 3165 Segment
  11. POJ 2157 Evacuation Plan [最小费用最大流][消圈算法]
  12. php生成excel或php生成csv
  13. Ajax无刷新提交表单和显示
  14. Xshell下漂亮的开发环境配置
  15. SQL Server 2005、SQL Server 2008版本比较
  16. CC++初学者编程教程(1) Visual Stduio2010开发环境搭建
  17. perl encode_json 会产生 UTF-8 (binary) string decode_json 需要一个 UTF-8 (binary) string
  18. TOGAF架构内容框架之内容元模型(上)
  19. Latex—IEEE Latex模板 期刊名带下划线的问题解决
  20. Ubuntu纯字符界面的一些设置

热门文章

  1. Practial Vim 学习笔记一
  2. linux查看硬盘空间 文件大小
  3. oracle tuning 工具
  4. mui时间选择器选择今天以后的时间
  5. thinkphp 从服务器拉取下来 验证码失效
  6. 第二百一十八节,jQuery EasyUI,TimeSpinner(时间微调)组件
  7. 第一百五十七节,封装库--JavaScript,预加载图片
  8. 使用Using的注意事项
  9. c++11小计
  10. CFontDialog学习