day2
一、模块初识
模块又可以叫做库,Python的强大之处在于他有非常丰富和强大的标准库和第三方库。标准库:不需要安装可以直接导入的库(getpass);第三方库:必须要下载安装才能使用。现在,我们先象征性的学2个简单的标准库。
注意:调用模块时先从当前目录下找sys文件,如果没有再在库文件夹中找,所以这里文件名和模块名不要一样,一样容易出错,Python3不会报错。但要注意。
1、sys
①、sys.path: 显示 存模块和自己内部调用的文件的 路径(也就是环境变量)

显示结果:

相关代码:
#调用模块时先从当前目录下找sys文件,如果没有再在库文件夹中找, #所以这里文件名和模块名不要一样,一样容易出错,Python3不会报错。但要注意。 #sys.path ------显示 存模块和自己内部调用的文件的 路径(也就是环境变量) #python标准库一般会存在安装目录下的 lib目录下。 #python第三方库一般会存在安装目录下的 lib\site-packages目录下。 import sys print(sys.path) #这个与import要在一个级别中。不然会出错。----打印环境变量
②、sys.argv: 取相对路径

执行结果:

相关代码:
import sys print(sys.argv) #打印相对路径。pycharm执行是相对路径。需要在cmd中运行。 print(sys.argv[2]) #取参数内容。需要在cmd中运行
2、os
①、os.system("命令”) --------------命令执行的结果只显示到当前界面,不保存结果。

显示结果:由于编码模式不一样,所以会显示乱码。------>0 表示命令执行成功, 0表示完成。

相关代码:
import os cmd_res = os.system("dir") #执行命令不保存结果 print("--->",cmd_res)
②、os.popen("命令").read()------------执行命令,保存结果,这个命令执行后只显示一个保存在内存的位置,需要通过 .read() 来读取内存的数据才行。

执行结果:

相关代码:
import os cmd_res = os.popen("dir").read() #执行命令,保存结果,这个命令执行后只显示一个保存在内存的位置, # 需要通过 .read() 来读取内存的数据才行。 print("--->",cmd_res)
③、os.mkdir("new_file") ----------------- 创建目录
代码:
import os os.mkdir("new_file") #创建目录
二、pyc是什么?
1、Python是一门解释性语言。
Python是一门解释性语言,发现有.pyc文件的存在,如果是解释性语言,那么生成的.pyc文件是什么呢?C应该是compiled的缩写才对。
以免学习python的人有所误解,来解释这件事。
2、解释型语言和编译型语言
出现的起因:计算机是不能够识别高级语言的,所以当我们运行一个高级语言时,需要一个“翻译机”来从事把高级语言转变成计算机能读懂的机器语言的过程。这个过程分为两类,于是就出现了,编译和解释这两种。
编译型语言:在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转变成机器语言,运行时就不需要翻译,而直接执行就可以了,最典型的例子就是C语言。
解释型语言:没有编译的过程,而是在程序运行的时候,通过解释器对程序逐行作出解释,然后直接运行,典型的例子是Ruby。
通过以上例子,我们来总结一下解释型语言和编译型语言的优缺点,因为编译型语言在程序运行之前就已经对程序做出了“翻译”,所以在运行时就少掉了“翻译”的过程,所以效率比较高,但是我们也不能一概而论,一些解释型语言也可以通过解释器的优化来对程序做出优化,从而在效率上超过编译语言。
此外,随着java等基于虚拟机的语言的兴起,我们又不能把语言村崔的分为解释型和编译型这两种。
用java来举例,java首先是通过编译器编译成字节码文件,然后在运行时通过解释器解释成机器文件,所以我们说java是一种先编译后解释的语言。
3、Python到底是什么:
其实python和java/c#一样,也是一门基于虚拟机的语言,我们先来从表面上简单的解释一下python程序的运行过程。
当我们在命令行输入python hello.py时,其实就是激活了python的“解释器”,告诉“解释器”:你要开始工作了,可是在“解释”之前,其实执行的第一项工作和java一样,是编译。
熟悉java的可以想一下,我们在命令行是如何执行java程序的:
javac hello.java
java hello
只是我们在eclipse之类的IDE时,将两部给融合成一步而已,其实python也一样,当我们执行python hello.py时,他也一样执行了这么一个过程,所以我们应该这样来描述python,python是一门先编译后解释的语言。
4、简述Python的运行过程。
在说这个问题之前,我们先来说两个概念,PyCodeObject和pyc文件。
我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObjet则是python编译器真正编译成的结果,我们先简单知道就可以了,继续向下看:
当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObjet中,当python程序运行结束时,Python解释器则将PyCodeObjet写回到pyc文件中。
当python程序的第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则检查该文件的时间,做对比,如果对比后发现是完整的文件则直接载入,如果时间对比有缺失,则重复上面的过程。
所以我们应该这样来定位PyCodeObjet和pyc文件,我们说pyc文件其实是PyCodeObjet的一种持久化保存方式。
三、数据类型初识
1、数字
2是一个整数。
长整数:大一些的整数
3.23和53.3E-1是浮点数。E:表示10的幂。在这里53.3E-1表示53.3*10-4
(-5+4)和(2.3-4.6j)是复数额例子,其中-5.4为实数,j为虚数,数学中表示复数是什么?
int(整型)
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位机器上,整数的位数为64位,取值范围为-2**63~2**63-1,即-92233720368547760-92233720368547759
long(长整型)
跟C语言不通,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意:自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L,也不会导致严重后果。也就是Python3以后没有长整型这个概念,只有整型。
float(浮点型)
浮点数用来处理实数,浮点数的表示形式是小数,但是小数不只包括浮点数,类似C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
complex(复数)
复数由实数部分和虚数部分组成,一般形式为x+yj。其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
注:Python中存在小数池:-5~257
2、布尔值
真或假
1或0
3、字符串
“hello world!”
字符串拼接:
四、数据运算
1、算数运算,
| + | 加 | |
| - | 减 | |
| * | 乘 | |
| / | 除 | |
| % | 取模:6%3返回除法的余数, | 6%3输出结果为0 |
| ** | 幂:3**2。就是3的2次幂。 | 3**2输出结果为3的2次方:9 |
| // | 取整数部分:返回商的整数部分。 | 9//2输入结果4,9.0//2.0输出结果为4.0 |
2、比较运算:
| == | 等于:比较对象是否相等 | a==b 返回False | |
| != | 不等于:比较两个对象是否不相等。 | a!=b返回True | |
| <> | 不等于:比较两个对象是否不相等。 |
|
|
| > | 大于:a>b 返回a是否大于b | a>b返回False。 | |
| < | 小于:a<b 返回a是否小于b | a<b返回True。 | |
| >= | 大于等于:a>=b返回a是否大于等于b | a>=b返回False | |
| <= | 小于等于:a<=b返回a是否小于等于b | a<=b返回True |
赋值运算:
| = | 简单的赋值运算符 | c=a+b,将a+b的结果赋值给a |
| += | 加法赋值运算符 | c+=a 等效于:c=c+a |
| -= | 减法赋值运算符 | c-=a 等效于:c=c-a |
| *= | 乘法赋值运算符 | c*=a 等效于:c=c*a |
| /= | 除法赋值运算符 | c/=a 等效于:c=c/a |
| %= | 取模赋值运算符 | c%=a 等效于:c=c%a |
| **= | 幂赋值运算符 | c**=a 等效于:c=c**a |
| //= | 取整除赋值运算符 | c//=a 等效于:c=c//a |
逻辑运算:
| and | 布尔“与”:如果a为False a and b 返回False。 | |
| or | 布尔“或":如果a为True,a or b 返回True。 | |
| not | 布尔“非":如果a为True,not a ,返回False。 |
成员运算:
| in | 如果在指定的序列中找到值返回True,否则返回False。 | |
| not in | 如果在指定的序列中没有找到值返回True,否则返回False。 |
例:

显示结果:

代码:
a = [1,2,3,4,5,6] if 1 in a: print("1在a中") if 22 not in a : print("22不在a中")
身份运算:
| is | is是判断两个标识符是不是引用自一个对象 | |
| is not | is not是判断两个标识符是不是引用自不同对象 |
例如:
a是一个列表,b是一个整数型。
a是列表,返回结果为True。b是整数型返回结果为True
a不是整数型,返回结果True。a不是列表返回结果False。

位运算:
| & | 按位与运算符 | |
| | | 按位或运算符 | |
| ^ | 按位异或运算符 | 相同为0,不同为1 |
| ~ | 按位取反预算福 | |
| << | 左移动运算符 | 15<<2,返回值为60,即15乘以2的2次方。也就是15乘以4,15<<6,返回值960,即15乘以2的6次方。 |
| >> | 右移动运算符 | 15>>2,返回值为3,即15/4,取整数部分。 |


五、入门知识拾遗
1、bytes类型
Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes,,你不能拼接字符串和字节流,也无法在字节流里搜索字符串(反之亦然),也不能将字符串传入参数为字节流的函数(反之亦然)。
字符串string与字节bytes类型的转换。(字符串可被编码为字节,字节可被解码为字符串)

通过实际的例子来学习解码和编码的过程:

执行结果:

代码:
msg= "学习Python" #string---->bytes 解码过程encode:字符串转换为二进制,encoding="编码类型"指定解码类型 print("utf-8编码模式解码后结果:",msg.encode(encoding="utf-8")) print("gbk编码模式解码后结果:",msg.encode(encoding="gbk")) #bytes---> string 编码过程decode:utf-8解码,使用utf-8编码以及使用utf-8解码,使用gbk编码后的结果: print("utf-8解码,使用utf-8编码:",msg.encode(encoding="utf-8").decode(encoding="utf-8")) print("utf-8解码,使用gbk编码:",msg.encode(encoding="utf-8").decode(encoding="gbk")) print(msg)
2、三元运算
result = 值1 if 条件 else 值2
如果条件为真:result=值1
如果条件为假:result=值2
例:首先给abc三个变量赋值。
如果条件a>b成立则结果等于if前面的。即:a>b成立那么d=a.
如果条件a>b不成立则结果等于else后面的。即:a>b不成立那么d=c
由于a=1 b=3,a<b,if条件不成立,所以d=c=5

3、进制
二进制:0 1
八进制:0 1 2 3 4 5 6 7
十进制:0 1 2 3 4 5 6 7 8 9
十六进制:0 1 2 3 4 5 6 7 8 9 A B C D E F
二进制到十六进制的转换方法:
方法/步骤
-
首先呢,先要看看十六位数的表示方法,如图1所示。
-
再来掌握二进制数与十六进制数之间的对应关系表,如图2所示。只有牢牢掌握的对应关系,在转换的过程中才会事半功倍。
-
二进制转换成十六进制的方法是,取四合一法,即从二进制的小数点为分界点,向左(或向右)每四位取成一位,如图3所示。
-
组分好以后,对照二进制与十六进制数的对应表(如图2中所示),将四位二进制按权相加,得到的数就是一位十六进制数,然后按顺序排列,小数点的位置不变哦,最后得到的就是十六进制数哦,如图4所示。
-
注意16进制的表示法,用字母H后缀表示,比如BH就表示16进制数11;也可以用0X前缀表示,比如0X23就是16进制的23.直观表示法如图5所示。
-
这里需要注意的是,在向左(或向右)取四位时,取到最高位(最低位)如果无法凑足四位,就可以在小数点的最左边(或最右边)补0,进行换算,如图6所示。
-
下面看看将16进制转为二进制,反过来啦,方法就是一分四,即一个十六进制数分成四个二进制数,用四位二进制按权相加,最后得到二进制,小数点依旧就可以啦。如图7所示。
posted on 2017-04-06 23:58 aptech2017 阅读(243) 评论(0) 收藏 举报







浙公网安备 33010602011771号