一、为什么要选择python作为学习语言:

各个语言的对比:

C和python、java、C#等

C语言:代码编译得到机器码,机器码在处理器上直接执行,每一条指令控制cpu工作

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

其他语言比c语言在执行过程中多一步“编译成字节码”,所以c语言快。

既然c那么牛,为什么要学其他语言。因为如果用c实现一个简单功能,需要上百行代码,而高级语言只需要10行代码。

如果功能要求非常非常关心性能,就需要用c写了。

其他语言进行对比:

python、java、php、c#

没有太多底层的比较。

1.它们各自有擅长领域,2.先入为主的概念。

java用于企业级应用。相对于其他语言还是快些。

php 管理系统

python跟其他语言比还是慢一些,有的时候慢、有的时候不慢,GIL,python全局解释器锁(GLOBAL INTERPRETER LOCK)。

python目前Linux自带,所以运维学的多。

python的种类:

cpython  c语言

jpython  java语言

ironpython  c#语言

对于上面多种python,程序猿在写代码的时候没有任何不同。只有在执行代码的时候有区别。

举例:

cpython 在执行时,生成.pyc的机器码。然后再把.pyc编译成机器码执行。

jpython在执行时,把你的写的python语言,用java的解释器去解释,解释成java认识的字节码,然后在转成机器码最后被cpu调用。

ironpython  用c#解释器

cpython比其他种类的快。

但是实际用的时候,根据情况而采用不同版本的,比如写java程序的接口,java认识的字节码就更快。

还有一个比较特殊的pypy,早晚会火,为什么?因为它快。

p y p y快跟机器码有关,它有自己的解释器。

解释python语言时,解释成py认识的字节码紧接着转换成机器码,也就说c语言生成的.pyc为字节码文件。而p ypy在编译的时候,存的文件就直接就是机器码。

二、执行python程序的内部过程

内部使用open(),read()方法打开文件读入内存。

语法分析

词法分析

语法、词法分析没有问题在读入内存。

然后内部用if语句进行判断,如果是函数怎么编译成字节码,如果是类怎么编译成字节码...

执行时,再调用python解释器将字节码转成机器码。

三、python解释器

在程序文件开头第一行

#!/usr/bin/env python

这句话的意思是在你执行这个程序文件时,调用/usr/bin/env python 程序去执行。这个程序,就称为解释器。

四、内部编码

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

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

python3.x中默认使用utf-8码。(支持中文,是unicode的扩展)

unicode:用至少16位来表示.python2.7解释器在加载.py文件默认是按照unicode编码格式加载的。unicode 已经涵盖了所有字符,但是当你表示一个数字或者字符时,也要用16位表示,那么加载文件时是很浪费内存空间的。如何解决呢,理想情况下,当遇到数字、字符、字母时用ASCII编码格式加载,而中文字符用24位来表示,

utf-8 是对unicode的压缩、精简\优化。

utf-8 内部规定,如果是字母、数字和字符用8位存,如果遇到欧洲的字符一般用两个字节来存,汉子这种用3个字节来存。utf-8减少了内存的占用。

python2.7中,默认用unicode,那么想用utf-8就的加上

#!/usr/bin/env python

#-*-coding:utf-8-*-

内部编码之间的转换。

unicode 转成gbk、utf-8这叫编码  encoding

gbk转成unicode叫做解码 uncoding

gbk想转成utf-8就需要先解码成unicode,在编码成utf-8

五、接收执行参数

当我们创建一个python代码文件x.py时,在执行./x.py时后面加入参数,可以使用sys模块下的argv方法。

#!/usr/bin/env python
#-*-conding:utf-8-*- import sys
print(sys.argv)

$ python /Users/tedzhou/scripts/argvtest.py ssss
['/Users/tedzhou/scripts/argvtest.py', 'ssss']

六、python内部的缓冲机制

1.提高执行效率2.减少内存压力。

python对于数字有个小数字池:-5~257(作用:如果没有这个池,10个地方用到5这个小数,那么就会在内存中创建10个存储5的内存空间,而有这个池,python解释器内部就会共享这个5,不去开内存空间。从而减少内存的使用率,降低浪费。)

字符串也有内存池,给了2k空间,python内部有算法,按照内部权重排列,如果级别高了就把你放入内存。列表、字典都有。

对于python一切书屋都是对象,对象基于类创建的:

1.一切事物都是对象,对象是由类创建的

类创建对象:创建了对象和给对象一个指引到类的指引标志。告诉类,如果用类的某些功能,通过这个指引标记找到类,类来执行。

2.type查看对象的类型
3、dir(类型名) 查看类中提供的所有功能
4、help(类型名) 查看类中所有详细的功能
5、help(类型名.功能) 查看类中某功能的详细内容

python语言简介、解释器、字符编码介绍的更多相关文章

  1. python之旅:字符编码

    一 了解字符编码的知识储备 一 计算机基础知识 知识储备:cpu.内存.硬盘 二 文本编辑器存取文件的原理(nodepad++,pycharm,word) #1.打开编辑器就打开了启动了一个进程,是在 ...

  2. Python基础编程:字符编码、数据类型、列表

    目录: python简介 字符编码介绍 数据类型 一.Python简介 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心 ...

  3. python基础——6(字符编码,文件操作)

    今日内容: 1.字符编码: 人识别的语言与机器识别的语言转化的媒介 *****     2.字符与字节: 字符占多少字节,字符串转化 ***     3.文件操作: 操作硬盘中的一块区域:读写操作  ...

  4. Golang的字符编码介绍

    Golang的字符编码介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Go里面内建仅支持UTF8字符串编码,因此如果你用fmt.Printf之类的函数无法将GBK,GB2312 ...

  5. python标准库之字符编码详解

    codesc官方地址:https://docs.python.org/2/library/codecs.html 相关帮助:http://www.cnblogs.com/huxi/archive/20 ...

  6. 小白的Python之路 day1 字符编码

    字符编码 python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill) ASCII(American Standard Code for Information Interc ...

  7. Python 入门基础6 --字符编码、文件操作1

    今日内容: 1.字符编码 2.字符与字节 3.文件操作 一.字符编码 了解: cpu:将数据渲染给用户 内存:临时存放数据,断电消失 硬盘:永久存放数据,断电后不消失 1.1 什么是编码? 人类能够识 ...

  8. python文件操作与字符编码

    知识内容: 1.文件对象与文件处理流程 2.基本操作 3.上下文管理 4.文件的修改与文件内光标的移动 5.字符编码 一.文件对象与文件处理流程 1.文件对象 (1)文件分类 按文件中数据的组织形式可 ...

  9. python 2和3 字符编码

    在字符编码问题上,python2 和python3 还是有点不同的.今日写篇博客,彻底理清这个问题.. 字符编码问题的由来: 这要从计算发展历史来看待这个问题了,一开始,歪果仁使用ASCII码,8位( ...

随机推荐

  1. python2安装pymongo

    wget --no-check-certificate https://pypi.python.org/packages/source/p/pymongo/pymongo-2.6.3.tar.gz#m ...

  2. 将struts的jar包拷贝到WEB-INF/lib导致eclipse中配置好的javadoc失效

    我通过这个步骤导入了struts的jar包并且配置好了javadoc,且亲测可用: http://www.cnblogs.com/qrlozte/p/3173805.html 但是当我把struts的 ...

  3. Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍

    1. 添加一个新对象 前面介绍了映射到实体表的映射类User,如果我们想将其持久化(Persist),那么就需要将这个由User类建立的对象实例添加到我们先前创建的Session会话实例中: 复制代码 ...

  4. java图片截取组件ImageIO

    引用:http://blog.csdn.net/cdl2008sky/article/details/7775681 javax.imageio使用 ImageIO 类的静态方法可以执行许多常见的图像 ...

  5. c#打印(转)

    柴门闻狗吠,风雪夜归人.野旷天低树,江清月近人.香雾云鬟湿,清辉玉臂寒.莫愁前路无知己,天下谁人不识君.常将冷眼 看螃蟹,看你横行到几时.要在vs2005中实现最基本的打印文本基本上需要以下几个步骤 ...

  6. 基于CSS3自定义发光radiobox单选框

    之前我们分享过一些CSS3和HTML5实现的自定义checkbox和Radiobox,比如纯CSS3美化Checkbox和Radiobox按钮,不仅外观唯美,而且Radiobox选中时还有动画效果.今 ...

  7. 基于jquery的可拖动div

    昨天给大家介绍了一款基于jquery ui漂亮的可拖动div实例,今天要给大家分享一款基于jquery的可拖动div.这款可拖动div只要引用jquery就可以,无需引用jquery ui.还实时记录 ...

  8. 修改主机名hostname

    关于修改linux hostname的问题,尤其是redhat 7修改hostname的方式 2017年03月29日 13:56:45 阅读数:4989 首先强调一点,不同的系统,或者同一个系统的不同 ...

  9. 百度分享vue版-vshare

    vshare 基于百度分享开发的支持VUE2.X的分享插件,为您带来更多的流量!提供多种风格按钮,代码加载更快,引入社会化流量,提升网页抓取速度等优点.github地址:https://github. ...

  10. win7共享文件夹设置无密码

    首先我们要启用guest账户,右键计算机 2 选择管理 3 选择本地用户和组 4 然后选择用户 5 然后选择Guest右键——属性——把账户已禁用勾掉,就可以了 6 然后点击桌面网络右键——属性 7 ...