文末有福利领取哦~
👉一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉二、Python必备开发工具
👉三、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉 四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
👉五、Python练习题
检查学习结果。
👉六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
托勒密的地心说,稳定的统治西方的农业文明1400年;哥白尼的日心说出来,四百年都没到,大部分都是错的,他说太阳是宇宙的中心,然后太阳只是太阳系的中心,他说行星都围绕太阳转是正圆形轨道,然后,被开普勒证明是错的,应该是椭圆形轨道才对,牛顿的绝对时空说,只出来两百年,就被爱因斯坦的相对时空说挤到后排座了,然后爱因斯坦赶紧宣布,我的学说只是一个过渡。今天看来他说得很对,量子纠缠的超光速给了相对时空说一个沉重的打击。爱因斯坦说,宇宙就像一个打不开的表的表壳,我们只能站在外面逻辑模拟他,永远得不到这表真真是怎么运作的。我们能做的就是不断的模拟。
在中国,一切讲究学以致用,我们的科学也属于实用科学,大家都只关心实用,比如学习Python,根本不愿意抽时间去了解他的底层逻辑,其实就是地基。地基牢固了,楼房可以建得很高,而不会遥遥欲坠。
2 基本概念
2.1 字符(Character)
在电脑和电信领域中,字符是一个信息单位,它是各种文字和符号的总称,包括各国家文字、标点符
号、图形符号、数字等。比如,一个汉字,一个英文字母,一个标点符号等都是一个字符。
2.2 字符集(Character set)
字符集是字符的集合。字符集的种类较多,每个字符集包含的字符个数也不同。比如,常见的字符集有 ASCII 字符集、GB2312 字符集、Unicode 字符集 等,其中, ASCII 字符集 共有 128 个字符,包 含可显示字符(比如英文大小写字符、阿拉伯数字)和控制字符(比如空格键、回车键); GB2312 字 符集 是中国国家标准的简体中文字符集,包含简化汉字、一般符号、数字等; Unicode 字符集 则包含了世界各国语言中使用到的所有字符。
2.3 字符编码(Character encoding)
字符编码,是指对于字符集中的字符,将其编码为特定的二进制数,以便计算机处理。常见的字符编码 有 ASCII 编码, UTF-8 编码, GBK 编码等。一般而言,字符集和字符编码往往被认为是同义的概 念,比如,对于字符集 ASCII ,它除了有「字符的集合」这层含义外,同时也包含了「编码」的含 义,也就是说,ASCII 既表示了字符集也表示了对应的字符编码。
计算机存储数据的单元,一个8位(bit)二进制数。
3 常见的字符编码简介
常见的字符编码有 ASCII 编码, GBK 编码, Unicode 编码和 UTF-8 编码等等。这里,我们主要 介绍 ASCII 、 Unicode 和 UTF-8。
3.1 ASCII 编码
计算机是在美国诞生的,人家用的是英语,而在英语的世界里,不过就是英文字母,数字和一些普通符 号的组合而已。
在 20 世纪 60 年代,美国制定了一套字符编码方案,规定了英文字母,数字和一些普通符号跟二进 制的转换关系,被称为 ASCII (American Standard Code for Information
Interchange ,美国信息互换标准编码 ) 码。
比如,大写英文字母 A 的二进制表示是 01000001 (十进制 65 ),小写英文字母 a 的二进制表示 是 01100001 (十进制 97 ),空格 SPACE 的二进制表示是 00100000 (十进制 32 )。
3.2 Unicode 编码
ASCII 码只规定了 128 个字符的编码,这在美国是够用的。可是,计算机后来传到了欧洲,亚洲, 乃至世界各地,而世界各国的语言几乎是完全不一样的,用 ASCII 码来表示其他语言是远远不够的, 所以,不同的国家和地区又制定了自己的编码方案,比如中国大陆的 GB2312 编码 和 GBK 编码等, 日本的 Shift_JIS 编码等等。虽然各个国家和地区可以制定自己的编码方案,但不同国家和地区的计算机在数据传输的过程中就会出 现各种各样的乱码(mojibake ),这无疑是个灾难。
怎么办?想法也很简单,就是将全世界所有的语言统一成一套编码方案,这套编码方案就叫
Unicode ,它为每种语言的每个字符设定了独一无二的二进制编码,这样就可以跨语言,跨平台进行文 本处理了,是不是很棒!
Unicode 1.0 版诞生于 1991 年 10 月,至今它仍在不断增修,每个新版本都会加入更多新的字 符,目前最新的版本为 2016 年 6 月 21 日公布的 9.0.0 。
Unicode 标准使用十六进制数字,而且在数字前面加上前缀 U+ ,比如,大写字母「 A 」的
unicode 编码为 U+0041 ,汉字「严」的 unicode 编码为 U+4E25 。更多的符号对应表,可
以查询 unicode.org ,或者专门的 汉字对应表 。
3.3 UTF-8编码
Unicode 看起来已经很完美了,实现了大一统。但是, Unicode 却存在一个很大的问题:资源浪费。为什么这么说呢?原来,Unicode 为了能表示世界各国所有文字,一开始用两个字节,后来发现两个 字节不够用,又用了四个字节。比如,汉字「严」的 unicode 编码是十六进制数 4E25 ,转换成 二进制有十五位,即 100111000100101 ,因此至少需要两个字节才能表示这个汉字,但是对于其他 的字符,就可能需要三个或四个字节,甚至更多。
这时,问题就来了,如果以前的 ASCII 字符集也用这种方式来表示,那岂不是很浪费存储空间。比 如,大写字母「A 」的二进制编码为 01000001 ,它只需要一个字节就够了,如果 unicode 统一使用 三个字节或四个字节来表示字符,那「A 」的二进制编码的前面几个字节就都是 0 ,这是很浪费存 储空间的。
为了解决这个问题,在 Unicode 的基础上,人们实现了 UTF-16, UTF-32 和 UTF-8 。下面只说 一下 UTF-8 。
UTF-8 (8-bit Unicode Transformation Format) 是一种针对 Unicode 的可变长度字符编
码,它使用一到四个字节来表示字符,例如, ASCII 字符继续使用一个字节编码,阿拉伯文、希腊文 等使用两个字节编码,常用汉字使用三个字节编码,等等。
因此,我们说, UTF-8 是 Unicode 的实现方式之一,其他实现方式还包括 UTF-16 (字符用两个或 四个字节表示)和 UTF-32 (字符用四个字节表示)。
4 Python中的字符类型
4.1 Python 中的字符类型
Python2 的默认编码是 ASCII,Python3 的默认编码是 utf-8
Python2 中有两种和字符串相关的类型: str 和 unicode ,它们的父类是 basestring 。其中,
str 类型的字符串有多种编码方式,默认是 ascii ,还有 gbk , utf-8 等, unicode 类型的字符
串使用 u’…’ 的形式来表示,下面的图展示了 str 和 unicode 之间的关系:
4.2 UnicodeEncodeError & UnicodeDecodeError 根源
用 Python2 编写程序的时候经常会遇到 UnicodeEncodeError 和 UnicodeDecodeError ,它
们出现的根源就是如果代码里面混合使用了 str 类型和 unicode 类型的字符串, Python 会默认 使用 ascii 编码尝试对 unicode 类型的字符串编码 (encode) ,或对 str 类型的字符串解码 (decode) ,这时就很可能出现上述错误。
下面有两个常见的场景,我们最好牢牢记住:在进行同时包含 str 类型和 unicode 类型的字符串操作时, Python2 一律都把 str 解码 (decode )成 unicode 再运算,这时就很容易出现 UnicodeDecodeError 。
让我们看看例子:
s = ‘你好’ # str 类型, utf-8 编码
u = u’世界’ # unicode 类型
s + u # 会进行隐式转换,即 s.decode(‘ascii’) + u
- Traceback (most recent call last):
最后
不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~
给大家准备的学习资料包括但不限于:
Python 环境、pycharm编辑器/永久激活/翻译插件
python 零基础视频教程
Python 界面开发实战教程
Python 爬虫实战教程
Python 数据分析实战教程
python 游戏开发实战教程
Python 电子书100本
Python 学习路线规划
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!