.pyc的含义
解释语言是按照下图运行的:
上图中的Byte Code就是pyc文件。
python在运行过程中,如果对目录有写权限,会保留.pyc文件,但是如果没有写权限,这个.pyc文件会被丢弃。每当python脚本导入另一个模块时,那个模块的.pyc文件就会被存储起来。
如果一定要看到.pyc文件,可以运行以下shell命令:
python -m py_compile my_first_simple_script.py
密码模块
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import getpass
pwd = getpass.getpass("请输入密码")
print(pwd)
编码
Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了,基本上所有字符都编码成2个字节。
如果统一成Unicode 编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode 编码比 ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。
所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode 字符根据不同的数字大小编码成 1-6 个字节,常用的英文字母被编码成 1 个字节,汉字通常是3 个字节,只有很生僻的字符才会被编码成 4-6 个字节。如果你要传输的文本包含大量英文字符,用 UTF-8 编码就能节省空间 。
对于python,可以将UTF-8和unicode码之间进行相互转化。
# 将unicode转化为utf-8
u'ABC'.encode('utf-8')
u'中文'.encode('utf-8')
# 将utf-8转化为unicode
'abc'.decode('utf-8')
由于 Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8 编码。当 Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:
# -*- coding: utf-8 -*-
不过貌似Python3就不需要做这件事了,有待确认。