基础学习之初始模块

---恢复内容开始---

之前学习C语言时,就是在模块这个环节放弃的。因为没有开发语言基础,在学习过程中越往后越难理解,放弃也就成了常事。但也许是因为有了之前C语言的基础,这次在学习python时碰到模块这个概念时,却发现有几分熟悉。先声明:以下内容仅是个人理解。

什么是模块?

在编程过程中,随着代码越写越多,在一个文件里的代码就会越来越长,越来越不容易阅读和维护。

针对这种情况,我们将代码分为了很多个组,分别放到不同的文件里,很多编程语言都采用这样的编程方式。在python中,一个.py文件就是一个模块(Module)。

比如,一个abc.py的文件就是一个名叫abc的模块,一个xyz.py的文件就是一个名叫xyz的模块

使用模块有什么好处?

1.便于阅读。大家都知道,在长篇幅的内容中去寻找一个点,是一件很困难的事情。如果使用分模块方法,只需要知道我们要寻找的点是属于哪一个包下面下一个模块,就能大大的节省时间。

2.便于维护。道理同1一样,都是因为数量的减少而更加方便维护。

3.减少代码工作量。在编程过程中,对代码进行分模块,当其他地方需要这段代码时,不需要整段代码复制过去,只需要进行一个引用就行。在python中我们可以使用到丰富的内置模块与第三方模块。

4.避免函数名与变量名冲突。因为我们可以将相同名字的函数与变量存到不同的模块中,这样就能避免二者的冲突。但是需要注意的是,尽量不要与内置函数名相同。你也许会想,函数名与变量名相同时可以将他们存入不同的模块之中,那如果模块名相同该怎么办?这里就要提到另一个概念:包(Package)。包可以用来管理和组织模块,在这里模块是包的子集。继续上面的abc.py和xyz.py距离。现在我们将abc.py存入一个名叫hello_world的包,abc.py的名字就成了hello_world.abc,相似的,xyz.py的名字也成了hello_world.xyz。这样,只要上层的包的名称不重复,那其包含的所有模块都不会和别人冲突。

 

模块分为两种,一种是标准库,一种是第三方库。

标准库就是,我们不需要安装就能使用。就是说,安装好python这个软件后,就能直接在编程时使用。比如sys,os等。

第三方库就是,需要安装。

 

今天的学习设计了两个标准库:sys,OS

先来讲讲sys模块

import sys  #导入sys模块
    print(sys.path) #打印sys模块路径

improt 就是用来导入模块的,它可以出现在程序的任何位置。如果需要导入多个模块,直接‘,’分隔就行。比如:

import sys,os,shell

sys.path,指的是sys模块下的‘PATH’功能方法,‘.’就能显示除sys模块后的功能方法。这里的sys.path程序会去当前目录下寻找,接着再去系统里寻找。

下面就是打印出来的sys模块的路径。也就是说sys模块必须存在在这几个文件里,不然的话就说显示未找到。

'C:\\Users\\Administrator\\PycharmProjects\\untitled4\\Hello_world', 
'C:\\Users\\Administrator\\PycharmProjects\\untitled4', 
'C:\\Users\\Administrator\\PycharmProjects\\untitled4\\venv\\Scripts\\python36.zip',
'C:\\Users\\Administrator\\PycharmProjects\\untitled4\\venv\\DLLs', 
'C:\\Users\\Administrator\\PycharmProjects\\untitled4\\venv\\lib', 
'C:\\Users\\Administrator\\PycharmProjects\\untitled4\\venv\\Scripts',
'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36-32\\Lib', 
'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36-32\\DLLs',
'C:\\Users\\Administrator\\PycharmProjects\\untitled4\\venv',
'C:\\Users\\Administrator\\PycharmProjects\\untitled4\\venv\\lib\\site-packages', 
'C:\\Program Files\\JetBrains\\PyCharm 2017.3.1\\helpers\\pycharm_matplotlib_backend']

回到刚刚那段代码:

import sys
print(sys.argv)

执行后出来的结果是

['C:/Users/Administrator/PycharmProjects/untitled4/Hello_world/abc.py']

这里执行的就是查找到当前文件的绝对路径。

再来看看OS模块

import os
os.system('dir')

得到的结果是

C:\Users\Administrator\PycharmProjects\untitled4\venv\Scripts\python.exe C:/Users/Administrator/PycharmProjects/untitled4/Hello_world/abc.py
 ������ C �еľ�û�б�ǩ��
 �������� D874-2252

 C:\Users\Administrator\PycharmProjects\untitled4\Hello_world ��Ŀ¼

2018/01/17  10:42    <DIR>          .
2018/01/17  10:42    <DIR>          ..
2018/01/17  10:42               164 abc.py
2018/01/16  18:06                37 __init__.py
               2 ���ļ�            201 �ֽ�
               2 ��Ŀ¼ 28,550,250,496 �����ֽ�

可以看到,它直接将结果打印出来了,并没有进行保存。我们将结果存进一个变量并且打印出来。

import os
cmd_res=os.system('dir')
print(cmd_res)
 ������ C �еľ�û�б�ǩ��
 �������� D874-2252

 C:\Users\Administrator\PycharmProjects\untitled4\Hello_world ��Ŀ¼

2018/01/17  10:50    <DIR>          .
2018/01/17  10:50    <DIR>          ..
2018/01/17  10:50               188 abc.py
2018/01/16  18:06                37 __init__.py
               2 ���ļ�            225 �ֽ�
               2 ��Ŀ¼ 28,548,288,512 �����ֽ�
0

前面一模一样,只是后面多了一个0,这个0 其实就是程序是否正确执行的标志。但是这样的话他依然没有将结果保存,要想将结果保存我们需要使用另外的方法popen()

import os
cmd_res=os.popen("dir")
print(cmd_res)
<os._wrap_close object at 0x030D1930>

诶,这是什么结果,这是打印对象的内存地址。上面代码执行完毕后,系统会将结果存入一个临时地址,返给我们的就是这个临时地址。但我们的目的不是需要内存地址,而是得到结果,那就需要加上另一个方法read()

import os
cmd_res=os.popen("dir").read()
print(cmd_res)

加上read(),就是去读取这个地址下面的内容,看现在结果是不是出来了。

 驱动器 C 中的卷没有标签。
 卷的序列号是 D874-2252

 C:\Users\Administrator\PycharmProjects\untitled4\Hello_world 的目录

2018/01/17  10:57    <DIR>          .
2018/01/17  10:57    <DIR>          ..
2018/01/17  10:57               252 abc.py
2018/01/16  18:06                37 __init__.py
               2 个文件            289 字节
               2 个目录 28,547,301,376 可用字节

 

posted @ 2018-01-17 11:08  颜不胖  阅读(156)  评论(0编辑  收藏  举报