码迷,mamicode.com
首页 > 编程语言 > 详细

初识Python

时间:2018-02-07 00:38:26      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:静态   编译过程   nic   最大   yun   性能   pass   python开发   结构   

1、      学习Python的开端

2、      编译型语言和解释型语言

3、      动态语言和静态语言

4、      强类型定义语言和弱类型定义语言

5、      PyCodeObject和pyc

6、      变量

7、      字符编码发展史

 

 

1、    学习Python的开端

1.1 随笔

我自从工作以来,每天按部就班,该做啥做啥,有时候无聊,想做些啥的时候却发现,自己很多事情都做不了。作为一个在IT行业从事技术的人来说,我感到甚是无奈。

我从大学开始就不喜欢编程,看着代码始终会有种头脑发昏的感觉,所以我的毕业直接规划里,直接就把“程序猿”给pass掉了。

然而,工作以来,随着我对IT行业理解的加深,IT技术管理大有一统的趋势,我觉得,学习编程貌似不可避免了。

所以,我选择去尝试当一名“程序猿”。而当“程序猿”也是门类多样,通过了解,我选择由Python入手,开启我的“程序猿”之路。

1.2 Python主要应用领域:

  • 云计算: 云计算最火的语言, 典型应用OpenStack
  • WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣, 典型WEB框架有Django
  • 科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas
  • 系统运维: 运维人员必备语言
  • 金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测
  • 图形GUI: PyQT, WxPython,TkInter

1.3 Python在一些公司的应用:

  • 谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬虫、Google广告等项目都在大量使用Python开发
  • CIA: 美国中情局网站就是用Python开发的
  • NASA: 美国航天局(NASA)大量使用Python进行数据分析和运算
  • YouTube:世界上最大的视频网站YouTube就是用Python开发的
  • Dropbox:美国最大的在线云存储网站,全部用Python实现,每天网站处理10亿个文件的上传和下载
  • Instagram:美国最大的图片分享社交网站,每天超过3千万张照片被分享,全部用python开发
  • Facebook:大量的基础库均通过Python实现的
  • Redhat: 世界上最流行的Linux发行版本中的yum包管理工具就是用python开发的
  • 豆瓣: 公司几乎所有的业务均是通过Python开发的
  • 知乎: 国内最大的问答社区,通过Python开发(国外Quora)
  • 春雨医生:国内知名的在线医疗网站是用Python开发的
  • 除上面之外,还有搜狐、金山、腾讯、盛大、网易、百度、阿里、淘宝 、土豆、新浪、果壳等公司都在使用Python完成各种各样的任务。 

 

2、    编译型语言和解释型语言

2.1 区别

编译型语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言就不用再进行翻译了。

解释型语言,是在运行的时候将程序翻译成机器语言,可以理解为一边解释一边运行。

举例:一本英文书,翻译把英文书翻译成中文版供你阅读,此为编译型;而翻译一边阅读,一边翻译意思给你,此为解释型。

2.2 优缺点

编译型

优点:效率高。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行,且消耗内存更小。

缺点:机动性差。编译之后如果需要修改就需要整个模块重新编译,编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。

解释型

优点:机动性强。有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。

缺点:运行性能不如编译型语言。每次运行的时候都要解释一遍,性能上不如编译型语言。

 

3、    动态语言和静态语言

动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。

静态类型语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。

 

 

4、    强类型定义语言和弱类型定义语言

强类型定义语言:强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。

弱类型定义语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。

小结:综上所述,Python是一门动态强类型定义的解释型语言

 

5、    PyCodeObject和pyc

    PyCodeObject放于内存中

    Pyc放在磁盘里

当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。

当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。

所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。

 

6、    变量

变量规则及习惯:

规则:

1、变量名只能为字母、数字或下划线的任意组合

2、变量名首字符不能为数字

习惯:

1、不用未知含义的变量名(如:a、b等)

2、不用中文变量名(如:姓名)

3、不用拼音变量名(如:xingming)

4、变量为词语含义时,一般用下划线分隔开(如:GF_Of_Caiyun)

5、python无常量定义,一般全为大写字母的变量名,我们把它们当做常量,不进行更改(如:PID)

 

7、    字符编码

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

ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。

 

关于中文

为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。

GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。

GB2312 支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。2000年的 GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。

从ASCII、GB2312、GBK 到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集 (DBCS)。

有的中文Windows的缺省内码还是GBK,可以通过GB18030升级包升级到GB18030。不过GB18030相对GBK增加的字符,普通人是很难用到的,通常我们还是用GBK指代中文Windows内码。

 

显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536。

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

 

小结:

字符编码发展史:

ASCII 255 1bytes

    --> 1980 gb2312 7xxx

        --> 1995 GBK1.0 2w+

            --> 2000 GB18030 27XXX

        --> unicode

            --> utf-8   en:1byte,zh:3byte

 

 

本文主要摘抄至:https://www.cnblogs.com/alex3714/articles/5465198.html

初识Python

标签:静态   编译过程   nic   最大   yun   性能   pass   python开发   结构   

原文地址:https://www.cnblogs.com/Caiyundo/p/8424596.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!