[第二节]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内部提供的模块

  • 业内开源的模块

  • 程序员自己开发的模块

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

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


相关文章
|
4月前
|
开发者 Python
如何在Python中管理模块和包的依赖关系?
在实际开发中,通常会结合多种方法来管理模块和包的依赖关系,以确保项目的顺利进行和可维护性。同时,要及时更新和解决依赖冲突等问题,以保证代码的稳定性和可靠性
173 62
|
12天前
|
人工智能 自然语言处理 Shell
[oeasy]python070_如何导入模块_导入模块的作用_hello_dunder_双下划线
本文介绍了如何在Python中导入模块及其作用,重点讲解了`__hello__`模块的导入与使用。通过`import`命令可以将外部模块引入当前环境,增强代码功能。例如,导入`__hello__`模块后可输出“Hello world!”。此外,还演示了如何使用`help()`和`dir()`函数查询模块信息,并展示了导入多个模块的方法。最后,通过一个实例,介绍了如何利用`jieba`、`WordCloud`和`matplotlib`模块生成词云图。总结来说,模块是封装好的功能部件,能够简化编程任务并提高效率。未来将探讨如何创建自定义模块。
32 8
|
10天前
|
缓存 Shell 开发工具
[oeasy]python071_我可以自己做一个模块吗_自定义模块_引入模块_import_diy
本文介绍了 Python 中模块的导入与自定义模块的创建。首先,我们回忆了模块的概念,即封装好功能的部件,并通过导入 `__hello__` 模块实现了输出 &quot;hello world!&quot; 的功能。接着,尝试创建并编辑自己的模块 `my_file.py`,引入 `time` 模块以获取当前时间,并在其中添加自定义输出。
21 4
|
3月前
|
Python
Python Internet 模块
Python Internet 模块。
140 74
|
4月前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
153 63
|
4月前
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性
|
4月前
|
Python
Python的模块和包
总之,模块和包是 Python 编程中非常重要的概念,掌握它们可以帮助我们更好地组织和管理代码,提高开发效率和代码质量
142 61
|
4月前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
|
4月前
|
持续交付 Python
如何在Python中自动解决模块和包的依赖冲突?
完全自动解决所有依赖冲突可能并不总是可行,特别是在复杂的项目中。有时候仍然需要人工干预和判断。自动解决的方法主要是提供辅助和便捷,但不能完全替代人工的分析和决策😉。
|
2月前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
40 3

热门文章

最新文章