写在前面的话:万事开头难,算是系统学习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的就是二进制的字节码

ql的python学习之路-day1的更多相关文章

  1. ql的python学习之路-day15

    前言:本节主要讲解的是文件路径 在实际的软件开发中会设计一个项目的文件目录,按照执行包bin.配置包config.核心包core等来设计,在执行包里面要运行核心包里的主程序mian,由于不在同一级的目 ...

  2. ql的python学习之路-day14

    前言:本节主要学习时间模块time.datetime python中的几种时间表示:1)时间戳  2)格式化的字符串时间 3)struct_time元组格式的时间 time.datetime模块源码: ...

  3. ql的python学习之路-day13

    前言:本节主要学习模块 一.模块的定义 模块:本质是.py结尾的python文件(文件名:test.py,对应的模块是:test),用来从逻辑上组织python代码(变量.函数.类.逻辑,本质是实现一 ...

  4. ql的python学习之路-day12

    前言:这一节主要学习json和pickle 背景: 相信大家在日常生活中都有接触大型的网络游戏,打游戏的时候都是自己在电脑上操作,自己刷怪升级:当然也会碰到中午去吃饭然后挂机的情况,让电脑自动的刷怪, ...

  5. ql的python学习之路-day11

    前言:本节主要学习python内置的方法 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:qinjiaxi from collections ...

  6. ql的python学习之路-day10

    前言:本节主要讲解迭代器和生成器 迭代器&生成器 一.生成器(generator) 循环占用大部分的容量内存,如果只需要循环前面的几个结果那怎么样做呢,在python中有一种一边循环一边计算的 ...

  7. ql的python学习之路-day9

    前言:本节主要学习装饰器 一.装饰器 定义:本质上是个函数,用来装饰其他函数:(就是为其他函数添加附加功能) 原则:1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式 以上两点可以总 ...

  8. ql的python学习之路-day8

    前言:本节主要学习的是函数的全局变量和局部变量以及递归 一.全局变量和局部变量 定义在函数外并且在函数头部的变量,叫做全局变量,全局变量在整个代码中都生效. 局部变量只在函数里生效,这个函数就叫做这个 ...

  9. ql的python学习之路-day7

    函数与函数式编程 一.编程模式分为三种: 1.面向对象编程:类----->关键字class 2.面向过程编程:过程----->关键字def,没有return 3.函数式编程:函数----- ...

随机推荐

  1. 关于unix环境高级编程、Linux程序设计两部书浅谈

    unix环境高级编程的术语很多,概念内容,也很多,不过学习概念性质.标准规则类的东西,想必都是这样吧——需要进行拓展的内容很多. Linux程序设计,图文并茂,代码量够足,看起来,感觉难度还可以. l ...

  2. PHP 获取前两页的url地址

    通过隐藏表单控件 <input type="hidden" name="prevurl" value="<?php echo $_SERV ...

  3. flutter中使用redux之多界面互动

    在上一篇文章,我们介绍了如何在flutter中使用redux.在上一篇文章的例子中,我们使用了单界面集成redux,但是在实际项目中,我们通常涉及多个模块,每个模块涉及多个界面,那么如何使用redux ...

  4. resetlogs 打开数据库时新生成日志位置问题

    若系统中缺少联机日志,以resetlogs方式重建控制文件,那么当我们以alter database open resetlogs方式打开数据库时,新生成的联机日志会位于何处? 一:下面分别讨论几种情 ...

  5. RHEL6 搭建 keepalived + lvs/DR 集群

    搭建 keepalived + lvs/DR  集群 使用Keepalived为LVS调度器提供高可用功能,防止调度器单点故障,为用户提供Web服务: LVS1调度器真实IP地址为192.168.4. ...

  6. POJ 1905 Expanding Rods(二分)

    Expanding Rods Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 20224 Accepted: 5412 Descr ...

  7. 图论--差分约束--POJ 1201 Intervals

    Intervals Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 30971 Accepted: 11990 Descripti ...

  8. unittest(生成测试报告)

    1.先导入HTMLTestRunner模块 见上篇HTMLTestRunner模块生成文档 2.实例如下 (1)单用例文件执行且生成报告 import unittest import HTMLTest ...

  9. ubuntu16.04安装FastDFS-5.08

    fastdfs github地址: https://github.com/happyfish100/ 1.FastDFS上传原理 - storage定时向tracker上传状态信息 - client上 ...

  10. IP 基础知识全家桶,45 张图一套带走

    前言 前段时间,有读者希望我写一篇关于 IP 分类地址.子网划分等的文章,他反馈常常混淆,摸不着头脑. 那么,说来就来!而且要盘就盘全一点,顺便挑战下小林的图解功力,所以就来个 IP 基础知识全家桶. ...