Last active
December 30, 2018 11:42
-
-
Save caoya171193579/4c116ec6a7b53a82dfa264a9085b272e to your computer and use it in GitHub Desktop.
进阶
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
模块:(代码封装在一起,可以拿出来做调用 py文件) | |
模块好似PYTHON 组织代码的基本方式。 | |
python 的脚本都是用扩展名为.py 的文本文件保存的,一个脚本可以单独运行,也可以导入另一个脚本中运行,当脚本被导入运行时,我们将其称为模块 (module# 马久儿) | |
#模块名与脚本的文件名相同: | |
例如我们编写了一个名为ltems.py的脚本,则可以在另外一个脚本中用(调用函数)import ltems语句来导入我们编写的脚本为模块。 | |
root@kali:~/xuexi# ls | |
10.py 1.py 3.py 6.py 8.py jisuanfu.py new.py | |
111.py 2.py 4.py 7.py 9.py jisuanfu.pyc return.py | |
#在同一目录下的每个.py文件都是一个模块,运用内置调用函数import 文件名 不用加.py 来直接把文件做为模块导入到另一个文件里面使用。 | |
root@kali:~/xuexi# vi new.py | |
 | |
#在使用模块的时候执行的命令前面要加上 模块名也就是文件名 ( jisuanfu. ) | |
root@kali:~/xuexi# python new.py | |
72 | |
#当我们在模块文件里面最后加上( print __name__) 内置属性 | |
 | |
 | |
root@kali:~/xuexi# python jisuanfu.py #执行原文件的时候返回__main__ | |
__main__ | |
root@kali:~/xuexi# python lixi.py #修改过后执行调用模块 会返回模块名,然后是调用方执行的结果 | |
jisuanfu | |
2.5 | |
root@kali:~/xuexi# python new.py | |
jisuanfu | |
72 | |
root@kali:~/xuexi# | |
#在模块内加上一些代码然后直接执行模块本身的时候会执行我们增加的代码,如果是间接被调用为模块执行的时候下面的代码不执行。 | |
我们加上了 | |
if __name__ == "__main__": 来做判断是直接,还是间接调用 | |
f(8,'*'8) | |
 | |
root@kali:~/xuexi# python jisuanfu.py #直接调用 | |
64 | |
root@kali:~/xuexi# python new.py #间接调用 | |
72 | |
root@kali:~/xuexi# python lixi.py #间接调用 | |
2.5 | |
root@kali:~/xuexi# | |
######################################################## | |
重点: | |
 | |
当jisuanfu.py文件被当作模块调用后当前目录会自动生成一个.pyc 的编译文件。。 | |
如果我们在当前目录调用pyrhon的内置的其它类型函数 , 系统会先在当前文件所在目录遍历一遍,如果有和内置函数名字一样的文件,就会优先调用,而不是先调用内置函数模块。 | |
例子: | |
 | |
root@kali:~/xuexi# python new.py | |
Hello,world | |
root@kali:~/xuexi# ls | |
10.py 1.py 3.py 6.py 8.py jisuanfu.py lixi.py return.py | |
111.py 2.py 4.py 7.py 9.py jisuanfu.pyc new.py | |
因为这里我们调用的是python的内置函数模块,所以在当前目录没有生成.pyc编译文件 。 | |
注意了: | |
当我们把new.py 改为和内置函数string 想同的名字 再来做调用就会报错了,因为系统会优先在当前目录需找我们调用的模块在不再,然后才会在系统查找。 | |
 | |
提示当前模块没有capitalize 这个参数。 | |
因为模块直接在当前目录调用了和内置函数同名的string.py文件所以目录下会生成.pyc文件,如果我们想要调用系统函数就要把string.py | |
string.pyc 文件全部删除,我们才能调用系统内置函数。 | |
 | |
删除后我们把模块重新更名调用。 | |
 | |
############################################## | |
包: | |
python 的模块可以按目录形式的组织成一个包,也就是说一整个目录下的所有文件模块的集合。 | |
创建一个包的步骤是: | |
建立一个名字为包名字的目录, | |
在该目录下创建一个 (__init__.py)的文件,文件可以是空的,但必须要有,才能随时调用这个包。 | |
根据需要在该文件夹下存放脚本文件、已编译的扩展及子包。 | |
子包:(包目录下的包目录,里面也得有__init__.py的文件) | |
import 来调用。 | |
import pack.module1 pack.module2 pack.module3 #包名.模块名 | |
#这里我们在xuexi这个目录下用 | |
touch __init__.py 建立了一个空文件。 | |
这样这个目录就可以成为一个可被调用的python模块包。 | |
 | |
#我们再到其它目录建立一个.py的文件来调用这个模块包里面的模块: | |
 | |
 | |
 | |
#在我们调用完模块包之后,会在包的目录下生成一个__init__.pyc的编译文件。 | |
 | |
总结: | |
模块是一个可以导入的python脚本文件; | |
包是一推按目录组织的模块和子包,目录下__init__.py文件存放了包的信息。 | |
可以用import , import as , form import 等语句导入模块和包。 | |
import as : 把模块调用的时候更改一个自己容易记的名字 | |
root@kali:~/xuexi/zibao# vi importyongfa.py | |
 | |
 | |
#我们用import 模块名 as 新模块名 把模块改名字,一般改成单个字符容易出错,所以我们尽量改的是方便我们记忆的名字。 | |
root@kali:~/xuexi/zibao# python importyongfa.py | |
4.6 | |
from import:具体到直接调用模块内的某个函数。 | |
 | |
#当我们只需要模块中的某个函数的话,用这种方法,会很方便。 | |
from 模块名 import 模块中定义的函数名 | |
我们做的是23除以5 | |
 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment