标签:python
python模块
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
模块让你能够有逻辑地组织你的 Python 代码段。
把相关的代码分配到一个模块里能让你的代码更好用,更易懂。
模块能定义函数,类和变量,模块里也能包含可执行的代码。
模块的倒入 :
import语句
import module1,module2,modulen
比如要引用模块 os,就可以在文件最开始的地方用 import os 来引入。在调用 math 模块中的函数时,必须这样引用:
模块名.函数名 os.mkdir()
一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。
Python 的 from 语句让你从模块中导入一个指定的部分(eg:模块中的一个函数)到当前命名空间中。语法如下:
from os import mkdir
这个声明不会把整个 os 模块导入到当前的命名空间中,它只会将 os 里的 mkdir 单个引入到执行这个声明的模块的全局符号表。
这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用。
注:以上几种方法在倒入模块后,有些模块名字比较长,使用起来不方便,我们可以给他重命名方便使用:
eg:
from os import mkdir as mkdir mkdir("hahaha")
其他倒入方法重命名也直接后面加as name
当你导入一个模块,Python 解析器对模块位置的搜索顺序是:
1、当前目录
2、如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
3、如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。
模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
cacl.py模块为自定义模块,他的文件地址为/root/PycharmProjects/untitled/模块/cacl.py,模块i内容为以下
#!/usr/bin/env python class Cacl(object): def add(self,x,y): return x+y def jian(self,x,y): return x-y
相同路径下的模块倒入,/root/PycharmProjects/untitled/模块/text.py.py为脚本地址,此脚本需要倒入模块~~~~~~~
#!/usr/bin/env python # coding=utf-8 import cacl ##由于两个文件在同一路径下,所以在倒入的时候只需要写入模块名即可 c = cacl.Cacl() print c.add(1,3)
不同路径下的模快倒入,/root/PycharmProjects/untitled/diaoyong.py为脚本地址,很明显,此脚本和模块文件不在同一个目录下~~~~~~~
#!/usr/bin/env python # coding=utf-8 import sys print sys.path ##此处就设计上面说的查找路径如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录,通过查看print sys.path,可知,path将所有模块路径生成一个列表, 在倒入模块的时候通过查找列表,找到模块地址,从而倒入 sys.path.append(‘/root/PycharmProjects/untitled/模块‘) ##在列表内追加模块地址 print sys.path import cacl #倒入 c = cacl.Cacl() print c.add(1,3)
作为环境变量,PYTHONPATH 由装在一个列表里的许多目录组成。PYTHONPATH 的语法和 shell 变量 PATH 的一样。
在 Windows 系统,典型的 PYTHONPATH 如下:
set PYTHONPATH=c:\python27\lib;
在 UNIX 系统,典型的 PYTHONPATH 如下:
set PYTHONPATH=/usr/local/lib/python
import sys print sys.path
[‘/root/PycharmProjects/untitled‘, ‘/root/PycharmProjects/untitled‘, ‘/usr/lib64/python27.zip‘, ‘/usr/lib64/python2.7‘, ‘/usr/lib64/python2.7/plat-linux2‘, ‘/usr/lib64/python2.7/lib-tk‘, ‘/usr/lib64/python2.7/lib-old‘, ‘/usr/lib64/python2.7/lib-dynload‘, ‘/usr/lib64/python2.7/site-packages‘, ‘/usr/lib64/python2.7/site-packages/gtk-2.0‘, ‘/usr/lib/python2.7/site-packages‘]
dir() 函数一个排好序的字符串列表,内容是一个模块里定义过的名字。
返回的列表容纳了在一个模块里定义的所有模块,变量和函数。如下一个简单的实例
import os a = dir(os) print a
[ ‘EX_CANTCREAT‘, ‘EX_CONFIG‘, ‘EX_DATAERR‘, ‘EX_IOERR‘, ‘EX_NOHOST‘, ‘EX_NOINPUT‘, ‘EX_NOPERM‘, ‘EX_NOUSER‘, ‘EX_OK‘, ‘EX_OSERR‘, ‘EX_OSFILE‘, ‘EX_PROTOCOL‘, ‘EX_SOFTWARE‘, ‘EX_TEMPFAIL‘, ‘EX_UNAVAILABLE‘, ‘EX_USAGE‘, ‘F_OK‘, ‘NGROUPS_MAX‘, ‘O_APPEND‘, ‘O_ASYNC‘, ‘O_CREAT‘, ‘O_DIRECT‘, ‘O_DIRECTORY‘, ‘O_DSYNC‘, ‘O_EXCL‘, ‘O_LARGEFILE‘, ‘O_NDELAY‘, ‘O_NOATIME‘, ‘O_NOCTTY‘, ‘O_NOFOLLOW‘, ‘O_NONBLOCK‘, ‘O_RDONLY‘, ‘O_RDWR‘, ‘O_RSYNC‘, ‘O_SYNC‘, ‘O_TRUNC‘, ‘O_WRONLY‘, ‘P_NOWAIT‘, ‘P_NOWAITO‘, ‘P_WAIT‘, ‘R_OK‘, ‘SEEK_CUR‘, ‘SEEK_END‘, ‘SEEK_SET‘, ‘ST_APPEND‘, ‘ST_MANDLOCK‘, ‘ST_NOATIME‘, ‘ST_NODEV‘, ‘ST_NODIRATIME‘, ‘ST_NOEXEC‘, ‘ST_NOSUID‘, ‘ST_RDONLY‘, ‘ST_RELATIME‘, ‘ST_SYNCHRONOUS‘, ‘ST_WRITE‘, ‘TMP_MAX‘, ‘UserDict‘, ‘WCONTINUED‘, ‘WCOREDUMP‘, ‘WEXITSTATUS‘, ‘WIFCONTINUED‘, ‘WIFEXITED‘, ‘WIFSIGNALED‘, ‘WIFSTOPPED‘, ‘WNOHANG‘, ‘WSTOPSIG‘, ‘WTERMSIG‘, ‘WUNTRACED‘, ‘W_OK‘, ‘X_OK‘, ‘_Environ‘, ‘__all__‘, ‘__builtins__‘, ‘__doc__‘, ‘__file__‘, ‘__name__‘, ‘__package__‘, ‘_copy_reg‘, ‘_execvpe‘, ‘_exists‘, ‘_exit‘, ‘_get_exports_list‘, ‘_make_stat_result‘, ‘_make_statvfs_result‘, ‘_pickle_stat_result‘, ‘_pickle_statvfs_result‘, ‘_spawnvef‘, ‘abort‘, ‘access‘, ‘altsep‘, ‘chdir‘, ‘chmod‘, ‘chown‘, ‘chroot‘, ‘close‘, ‘closerange‘, ‘confstr‘, ‘confstr_names‘, ‘ctermid‘, ‘curdir‘, ‘defpath‘, ‘devnull‘, ‘dup‘, ‘dup2‘, ‘environ‘, ‘errno‘, ‘error‘, ‘execl‘, ‘execle‘, ‘execlp‘, ‘execlpe‘, ‘execv‘, ‘execve‘, ‘execvp‘, ‘execvpe‘, ‘extsep‘, ‘fchdir‘, ‘fchmod‘, ‘fchown‘, ‘fdatasync‘, ‘fdopen‘, ‘fork‘, ‘forkpty‘, ‘fpathconf‘, ‘fstat‘, ‘fstatvfs‘, ‘fsync‘, ‘ftruncate‘, ‘getcwd‘, ‘getcwdu‘, ‘getegid‘, ‘getenv‘, ‘geteuid‘, ‘getgid‘, ‘getgroups‘, ‘getloadavg‘, ‘getlogin‘, ‘getpgid‘, ‘getpgrp‘, ‘getpid‘, ‘getppid‘, ‘getresgid‘, ‘getresuid‘, ‘getsid‘, ‘getuid‘, ‘initgroups‘, ‘isatty‘, ‘kill‘, ‘killpg‘, ‘lchown‘, ‘linesep‘, ‘link‘, ‘listdir‘, ‘lseek‘, ‘lstat‘, ‘major‘, ‘makedev‘, ‘makedirs‘, ‘minor‘, ‘mkdir‘, ‘mkfifo‘, ‘mknod‘, ‘name‘, ‘nice‘, ‘open‘, ‘openpty‘, ‘pardir‘, ‘path‘, ‘pathconf‘, ‘pathconf_names‘, ‘pathsep‘, ‘pipe‘, ‘popen‘, ‘popen2‘, ‘popen3‘, ‘popen4‘, ‘putenv‘, ‘read‘, ‘readlink‘, ‘remove‘, ‘removedirs‘, ‘rename‘, ‘renames‘, ‘rmdir‘, ‘sep‘, ‘setegid‘, ‘seteuid‘, ‘setgid‘, ‘setgroups‘, ‘setpgid‘, ‘setpgrp‘, ‘setregid‘, ‘setresgid‘, ‘setresuid‘, ‘setreuid‘, ‘setsid‘, ‘setuid‘, ‘spawnl‘, ‘spawnle‘, ‘spawnlp‘, ‘spawnlpe‘, ‘spawnv‘, ‘spawnve‘, ‘spawnvp‘, ‘spawnvpe‘, ‘stat‘, ‘stat_float_times‘, ‘stat_result‘, ‘statvfs‘, ‘statvfs_result‘, ‘strerror‘, ‘symlink‘, ‘sys‘, ‘sysconf‘, ‘sysconf_names‘, ‘system‘, ‘tcgetpgrp‘, ‘tcsetpgrp‘, ‘tempnam‘, ‘times‘, ‘tmpfile‘, ‘tmpnam‘, ‘ttyname‘, ‘umask‘, ‘uname‘, ‘unlink‘, ‘unsetenv‘, ‘urandom‘, ‘utime‘, ‘wait‘, ‘wait3‘, ‘wait4‘, ‘waitpid‘, ‘walk‘, ‘write‘]
在这里,特殊字符串变量__name__指向模块的名字,__file__指向该模块的导入文件名。
根据调用地方的不同,globals() 和 locals() 函数可被用来返回全局和局部命名空间里的名字。
如果在函数内部调用 locals(),返回的是所有能在该函数里访问的命名。
如果在函数内部调用 globals(),返回的是所有在该函数里能访问的全局名字。
两个函数的返回类型都是字典。所以名字们能用 keys() 函数摘取。
当一个模块被导入到一个脚本,模块顶层部分的代码只会被执行一次。
因此,如果你想重新执行模块里顶层部分的代码,可以用 reload() 函数。该函数会重新导入之前导入过的模块。reload(模块)
模块的分类:
1:系统模块:系统中自定义的
2:第三方模块:其他人写的,共享出来,我们可以用比如itchat
3:自定义模块:自己为了某些需要,自己写的
模块在后续会一一整理;这里不再弄辣,我要去整理包了,再会哦
本文出自 “12462896” 博客,请务必保留此出处http://12472896.blog.51cto.com/12462896/1965034
标签:python
原文地址:http://12472896.blog.51cto.com/12462896/1965034