天天看点

[第二节]python字符编码,初识模块,字节码及交互式输入

一, python字符编码: 

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

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

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

2. Unicode字符编码: 

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

Unicode的出现解决了传统的字符编码方案的局限,但是却引出了另一个问题,即浪费空间;于是就又有了一种字符编码UTF-8. 

3. UTF-8字符编码 

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

注:

python2.7版本默认使用的是unicode编码. 

python3.x版本默认使用utf-8编码,不用再在代码前加"_*_ coding:utf-8 _*_ . 

二, Python代码书写格式:

第一行:解释器.

第二行:编码.

三,初识模块和字节码:

Python有大量的模块,从而使得开发Python程序非常简洁。类库有包括三中:

Python内部提供的模块

业内开源的模块

程序员自己开发的模块

示例:使用程序员自己开发的模块 

<code>root@Python:</code><code>/python/python3</code><code># ls</code>

<code>master.py   slave.py</code>

<code>root@Python:</code><code>/python/python3</code><code># cat master.py </code>

<code>#!/usr/bin/env python</code>

<code># _*_ coding:utf-8 _*_ </code>

<code>import</code> <code>slave</code>

<code>print(</code><code>"master"</code><code>) </code>

<code>root@Python:</code><code>/python/python3</code><code># cat slave.py </code>

<code>print(</code><code>"slave"</code><code>) </code>

<code>root@Python:</code><code>/python/python3</code><code># python slave.py </code>

<code>slave</code>

<code>root@Python:</code><code>/python/python3</code><code># python master.py </code>

<code>master</code>

<code>root@Python:</code><code>/python/python3</code><code># //模块导入成功.</code>

四,字节码 - pyc文件 

执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。

注:代码经过编译可以产生字节码;字节码通过反编译也可以得到代码。 

例:

<code>root@Python:</code><code>/python/python3</code><code># ls -a</code>

<code>.  ..  master.py  slave.py  slave.pyc</code>

注:.py文件和.pyc文件可以借助额外的工具反解.

五,交互式输入 

raw_input()与input(): 用于和用户交互,等待用户输入内容; 

注:raw_input()函数和input()函数在python2.X/3.x中的区别:

2.x版本:

raw_input(): 输入的str或int都会被转化为str type; 

input(): 只能识别到int type,对于str type会报错;

3.x版本:

raw_input(): input和raw_input 整合了,没有了raw_input().

input(): 输入的str或int都会被转化为str type;如果要得到int类型,需用int转换.

注:3.x版本中的input()函数,交互式输入的内容必须是int类型,即数字,它才能转换为相应的int类型;如果交互式输入的内容是str类型,则转换为int type时会报错. 

示例:

1)代码内容: 

<code>root@Python:</code><code>/python/python3</code><code># vim 01.py</code>

<code>name = input(</code><code>"Please input name:"</code><code>)</code>

<code>print(name)</code>

<code>ss = </code><code>type</code><code>(name)</code>

<code>print(ss)</code>

执行结果: 

<code>root@Python:</code><code>/python/python3</code><code># python 01.py</code>

<code>Please input name:yangbin </code><code>//</code><code>输入内容.</code>

<code>yangbin</code>

<code>&lt;class </code><code>'str'</code><code>&gt;  </code><code>//</code><code>执行结果.</code>

<code>Please input name:1212  </code><code>//</code><code>输入内容.</code>

<code>1212</code>

<code>root@Python:</code><code>/python/python3</code><code>#</code>

2)代码内容: 

<code>#!/usr/bin/env python </code>

<code>name = int(input(</code><code>"Please input name:"</code><code>))</code>

执行结果:

<code>Please input name:yangbin  </code><code>//</code><code>输入str类型后转换报错.</code>

<code>Traceback (most recent call last):</code>

<code>  </code><code>File </code><code>"01.py"</code><code>, line 4, </code><code>in</code> <code>&lt;module&gt;</code>

<code>    </code><code>name = int(input(</code><code>"Please input name:"</code><code>)) </code>

<code>ValueError: invalid literal </code><code>for</code> <code>int() with base 10: </code><code>'yangbin'</code>

<code>root@Python:</code><code>/python/python3</code><code># python  01.py</code>

<code>Please input name:1212  </code><code>//</code><code>输入int类型后转换成功.</code>

<code>&lt;class </code><code>'int'</code><code>&gt;</code>

在交互式模式下,当输入密码时,如果想要密码不可见,需要利用getpass模块中的getpass方法。

<code>#!/usr/bin/env python  </code>

<code>import</code> <code>getpass  </code>

<code>pwd</code> <code>= getpass.getpass(</code><code>"请输入密码:"</code><code>) </code>

<code>print(</code><code>pwd</code><code>)</code>

<code>root@Python:</code><code>/python/python3</code><code># python 02.py</code>

<code>请输入密码:   </code><code>//</code><code>此处输入密码不可见.</code>

<code>123456  </code><code>//print</code><code>显示出了密码.</code>

第二节完成!

本文转自 羽丰1995 51CTO博客,原文链接:http://blog.51cto.com/13683137989/1895528