• python基础之认知及编码


    一、python与其它语言对比


    1.1 其它语言原理:

      C 和 Python、Java、C#等

             C语言: 代码编译后得到的是机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工作,速度快

        其他语言: 代码编译得到 字节码 ,虚拟机执行字节码并转换成机器码再后在处理器上执行

      Python 和 C  Python这门语言是由C开发而来

        对于使用:Python的类库齐全并且使用简洁,如果要实现同样的功能,Python 10行代码可以解决,C可能就需要100行甚至更多.
        对于速度:Python的运行速度相较与C,绝逼是慢了

      Python 和 Java、C#等

        对于使用:Linux原装Python,其他语言没有;以上几门语言都有非常丰富的类库支持
        对于速度:Python在速度上可能稍显逊色

      所以,Python和其他语言没有什么本质区别

      python种类:Cpython   Jyhton   PyPy

    二、python文件运行过程


    2.1.安装

      windows:下载python解释器,https://www.python.org/downloads/,安装后加环境变量r

       linux:原装的,可用yum升级到2.7,需要安装gcc用于编码py文件的源码

         

    2.2 过程

      编码:python2.7默认gcc编码方法是ASCII,python3.X默认编码方法是万国码unicode

      .py文件-------python解释器(词法分析-语法分析-编码-状态)-----返回字节码编译成能显示的语言

    2.3 详解编码过程

        注:以下的转化只能是字符串与bytes相互转化等,python中的其它数据类型int 等需要转化成str后再与bytes转化

      明文(.py里写的内容)-----程序运行被python解释存在内存存为unicode值----utf8/GDK解码为bytes---二进制到cpu上运行

      unicode方式编码的值:unicode值,由utf8编码成的值:bytes值

      python2.x编码:

        (1)在python2里有一个中文文件test如下

           f = open('test','rb')

          print(f.read())//会报错,python默认是ASCII编码,里面的中文编码不了,需要用万国码(unicode/utf8等来编码,所以文件里的所有数据类型都相同编码方式来编码的)

              f = open('test','rb',encoding='utf8') //打开正常,能全部备utf8编码成bytes字节

        (2)对python2来说,编译到内存上的只有二种数据类型:str类型与unicode类型,对应内存里存的值是bytes与unicode值

                    1.类型str存的是字节(bytes)             
                        #coding:utf-8
                        //这是一个字符,这是用utf8编码的,中文用utf8编码成3个字节,英文是一个字节,这是utf8给这个变为二进制的格式     
                        s='丹丹hello'
                         //查看s存在内存是什么样的?
                         print repr(s)
                             // xe8xa2x81xe6xb5xa9hello(这是用utf8来进行编码的,这里面有中文)                                
                         print len(s)//11个字节来存的
                      print type(s)//这个s存的是字节,但它的类型是str
    
                   2.类型unicode存的是unicode(所以在Py2中unicode是一个数据类型也是编码)
                        s=u'丹丹hello'//改为unicode类型
                        print repr(s)//u'8881u6d69hello'这是用unicode来进行编码的,这个编码的是世界唯一,而对于utf8
                        print type(s)--unicode        

        (3)python2.x与python3.x对比

             1.过程

              

           2.实例

           

             3.总结

             

         

    2.4 编码拾遗

        数据存磁盘如何存?运行是如何运行的?

          只要运行程序,就是从磁盘移到内存,这不是解释器做的,是操作系统拿的,直接把磁盘存的字节码复到内存里

          python3解释器就来读内存的字节码文件去执行,由于CPU执行的是01010,它的上一层必须是unicode,所以这个字节码由解释器先转成unicode才能执行 

  • 相关阅读:
    java嵌套接口
    关于继承与多态
    重看Maven技术
    npm常用命令及参数总结
    vue.js和node.js的关系
    Invalid [xxx] in servlet mapping 、 <url-pattern>的匹配规则
    Caused by: java.sql.SQLSyntaxErrorException: Unknown column 'name' in 'field list'
    关于中文词云生成报错
    easygui安装过程
    将写好的python软件打包成程序
  • 原文地址:https://www.cnblogs.com/Dana-xiong/p/14306985.html
Copyright © 2020-2023  润新知