写在前面的话:万事开头难,算是系统学习python的一个月了吧,总该写点什么来记录一下,之前看老男孩day1的视频没有开通博客,这次给补上,对于学python还是要好好努力,不能半途而废,还是那句老话,好好加油,多年后回首会感谢曾经努力的自己,废话不多说了,开始记录吧。

python是一门什么样的语言

python严格上讲其实是先编译后解释型语言,首先程序在运行时,编译结果是保存在内存中叫pycodeobject里面,pycodeobject就是编译的结果,是一种字节码文件;当程序运行完后,python解释器将pycodeobject结果写入到pyc里面,当下次运行程序时,自动找到pyc文件进行解释,不用重新编译;如果源码更改,则根据修改时间是否直接pyc解释还是重新编译,如果修改时间比pyc新则需要重新编译。

字符编码

python解释器在加载.py文件的代码时,会对内容进行编码(默认是ASCII)

1.ASCII是美国标准信息交换码,最多能用8位来表示(一个字节),即2 ** 8 - 1 = 256 - 1 = 255,所以ascll只能表示255个符号。

注:ASCII只是针对西欧等国家编码足够表示其中的符号,但是对于中国汉字和符号而言远远不够,因此有了下面的编码。

2.GB2312(1980年)收录了了7445个字符,包括6763个汉字和682个其它符号。

3.GBK1.0(1995年)收录了21886个符号,汉字区包括21003个字符。

4.GB18030(2000年)是取代GBK1.0的正式国家标准,该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字;现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。

ASCII无法满足各国符号和文字的表示,所以有了Unicode

Unicode就是万国码、统一码、单一码。它为每种语言设置了唯一的二进制编码,规定有的字符最少有16位(两个字符)来表示,即可以表示2 ** 16  - 1 = 65535个字符。

但是Unicode比较浪费,比如ASCII只用一个字节就能保存,因此又衍生出了utf-8编码。

UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存。

其他随笔:

1.一般编码时候第一行加上#!/usr/bin/env/python的作用是:变成可执行程序必须加上这一行申明,说明解释器是python

2.当import模块名时,首先是在当面目录里找模块,然后在环境变量里面找,如果当面目录存在相同名字的模块,则将其覆盖。正确的方法是把写好的模块丢进site-package文件夹里,因为第三方的库都在里面,或者是修改环境变量使环境变量里面有模块的路径。

3.字节码(bytes)就是二进制,与字符串之间的转换:

字符串转为二进制:encode(encoding = ‘utf-8’)

二进制转换为字符串:decode(encoing = ‘utf-8’)

注:有些内容前面带b的就是二进制的字节码

最新文章

  1. 解决“chrome提示adobe flash player 已经过期”的小问题
  2. Field 'id' doesn't have a default value(jdbc连接错误)
  3. [.net 面向对象编程基础] (14) 重构
  4. ESLint – 可扩展的 JavaScript & JSX 校验工具
  5. 领导让我重新做一个微信H5页面!
  6. Unity(二)生命周期LifetimeManager
  7. [Everyday Mathematics]20150108
  8. HBase中的备份和故障恢复方法
  9. [LeetCode 110] - 平衡二叉树 (Balanced Binary Tree)
  10. YII与Ace Admin 的集成
  11. MySQL 讨厌哪种类型的查询
  12. Android学习笔记之View(二)
  13. SpringBoot入门教程(十三)CORS方式实现跨域
  14. 什么是servlet?
  15. Android笔记:Button
  16. mysql 数据库名称,中间带有中划线问题
  17. CentOS 7 开放防火墙端口 命令
  18. Linux curl 模拟form表单提交信息和文件
  19. 关于端口冲突的解决方式Error: listen EACCES 0.0.0.80
  20. POJ 1064 Cable master (二分查找)

热门文章

  1. Scrapy模拟登录信息
  2. java学习(第三篇)String类
  3. [Batch 脚本] 批量生成文件夹
  4. 修改mysql配置中my.conf中max_allowed_packet变量
  5. Java初学者最近三次作业的心得体会
  6. 使用@vue/cli搭建vue项目开发环境
  7. 浅谈 Objective-C Associated Objects
  8. SAAS 何以“免费”实现盈利
  9. Ubuntu 14.04 配置samba
  10. postman(参数化)