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