一, 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内部提供的模块
-
业内开源的模块
-
程序员自己开发的模块
示例:使用程序员自己开发的模块
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
root@Python:
/python/python3
# ls
master.py slave.py
root@Python:
/python/python3
# cat master.py
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
import
slave
print(
"master"
)
root@Python:
/python/python3
# cat slave.py
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
print(
"slave"
)
root@Python:
/python/python3
# python slave.py
slave
root@Python:
/python/python3
# python master.py
slave
master
root@Python:
/python/python3
# //模块导入成功.
|
四,字节码 - pyc文件
执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。
注:代码经过编译可以产生字节码;字节码通过反编译也可以得到代码。
例:
1
2
|
root@Python:
/python/python3
# ls -a
. .. master.py slave.py slave.pyc
|
注:.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)代码内容:
1
2
3
4
5
6
7
8
|
root@Python:
/python/python3
# vim 01.py
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
name = input(
"Please input name:"
)
print(name)
ss =
type
(name)
print(ss)
|
执行结果:
1
2
3
4
5
6
7
8
9
|
root@Python:
/python/python3
# python 01.py
Please input name:yangbin
//
输入内容.
yangbin
<class
'str'
>
//
执行结果.
root@Python:
/python/python3
# python 01.py
Please input name:1212
//
输入内容.
1212
<class
'str'
>
//
执行结果.
root@Python:
/python/python3
#
|
2)代码内容:
1
2
3
4
5
6
7
|
root@Python:
/python/python3
# vim 01.py
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
name = int(input(
"Please input name:"
))
print(name)
ss =
type
(name)
|
执行结果:
1
2
3
4
5
6
7
8
9
10
11
|
root@Python:
/python/python3
# python 01.py
Please input name:yangbin
//
输入str类型后转换报错.
Traceback (most recent call last):
File
"01.py"
, line 4,
in
<module>
name = int(input(
"Please input name:"
))
ValueError: invalid literal
for
int() with base 10:
'yangbin'
root@Python:
/python/python3
# python 01.py
Please input name:1212
//
输入int类型后转换成功.
1212
<class
'int'
>
root@Python:
/python/python3
#
|
在交互式模式下,当输入密码时,如果想要密码不可见,需要利用getpass模块中的getpass方法。
示例:
1
2
3
4
5
|
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
import
getpass
pwd
= getpass.getpass(
"请输入密码:"
)
print(
pwd
)
|
执行结果:
1
2
3
4
|
root@Python:
/python/python3
# python 02.py
请输入密码:
//
此处输入密码不可见.
123456
//print
显示出了密码.
root@Python:
/python/python3
#
|
第二节完成!
本文转自 羽丰1995 51CTO博客,原文链接:http://blog.51cto.com/13683137989/1895528