码迷,mamicode.com
首页 > 编程语言 > 详细

python 模块

时间:2017-09-14 10:37:48      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:python

python模块

Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。

模块让你能够有逻辑地组织你的 Python 代码段。

把相关的代码分配到一个模块里能让你的代码更好用,更易懂。

模块能定义函数,类和变量,模块里也能包含可执行的代码。

模块的倒入 :

import语句

import module1,module2,modulen

比如要引用模块 os,就可以在文件最开始的地方import os 来引入。在调用 math 模块中的函数时,必须这样引用:

模块名.函数名
os.mkdir()

一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。

From…import 语句

Python 的 from 语句让你从模块中导入一个指定的部分(eg:模块中的一个函数)到当前命名空间中。语法如下:

from os import mkdir

这个声明不会把整个 os 模块导入到当前的命名空间中,它只会将 os 里的 mkdir 单个引入到执行这个声明的模块的全局符号表。

From…import* 语句

这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用。

注:以上几种方法在倒入模块后,有些模块名字比较长,使用起来不方便,我们可以给他重命名方便使用:

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 由装在一个列表里的许多目录组成。PYTHONPATH 的语法和 shell 变量 PATH 的一样。

在 Windows 系统,典型的 PYTHONPATH 如下:

set PYTHONPATH=c:\python27\lib;

在 UNIX 系统,典型的 PYTHONPATH 如下:

set PYTHONPATH=/usr/local/lib/python

查看path的地址列表

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()函数

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() 函数

根据调用地方的不同,globals() 和 locals() 函数可被用来返回全局和局部命名空间里的名字。

如果在函数内部调用 locals(),返回的是所有能在该函数里访问的命名。

如果在函数内部调用 globals(),返回的是所有在该函数里能访问的全局名字。

两个函数的返回类型都是字典。所以名字们能用 keys() 函数摘取。

reload() 函数

当一个模块被导入到一个脚本,模块顶层部分的代码只会被执行一次。

因此,如果你想重新执行模块里顶层部分的代码,可以用 reload() 函数。该函数会重新导入之前导入过的模块。reload(模块)

模块的分类:

 1:系统模块:系统中自定义的

2:第三方模块:其他人写的,共享出来,我们可以用比如itchat

3:自定义模块:自己为了某些需要,自己写的

模块在后续会一一整理;这里不再弄辣,我要去整理包了,再会哦


本文出自 “12462896” 博客,请务必保留此出处http://12472896.blog.51cto.com/12462896/1965034

python 模块

标签:python

原文地址:http://12472896.blog.51cto.com/12462896/1965034

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!