zoukankan      html  css  js  c++  java
  • 初识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

    静静的学习一阵子儿...
  • 相关阅读:
    JVM学习笔记-方法区(Method Area)
    JVM学习笔记-类型信息(Type Information)
    JVM学习笔记-常量池(Constant Pool)
    JVM学习笔记-字段信息(Field Information)
    hive schematool -initSchema -dbType mysql 报错
    flink error: Exception in thread "main" java.lang.NoClassDefFoundError
    python error: TypeError: cannot serialize '_io.TextIOWrapper' object
    multiprocessing.Pool 捕获error
    sysdig 安装与使用(转载)
    sonatype nexus简介(转)
  • 原文地址:https://www.cnblogs.com/Caiyundo/p/8424596.html
Copyright © 2011-2022 走看看