python模块介绍

python模块就是个python文件

相关的代码合到一个模块里可以让代码更好用,更易懂

一、

如何引入模块

如:引入math包 import math

一个模块只会被导入一次,防止被一遍遍执行

from  import语句

从模块中导入一个指定的部分到当前的命名空间中,语法如:

from fib import fibonacci

只会将fib的fibonacci单个引入到执行这个声明的模块的全局符号表

from... import *

将一个模块的内容全部引入到当前引用空间

简单说下import和from...import的区别:

存在一个s1.py,功能如下:

def print_func( par ):
   print "Hello : ", par
   return

使用import引入并调用s1模块的方法如下(导入文件夹,是个相对路径):

# 导入模块
import s1
 
# 现在可以调用模块里包含的函数了
s1.print_func("Runoob")

所以不能直接使用print_func()函数调用,必须将引入的模块名称当成一个对象,然后调用这个对象的方法,从而实现调用;

如果使用from s1 import *的方法(导入一个文件夹中的文件,是个绝对路径)呢?

# 导入模块
from s1 import *
 
# 现在可以调用模块里包含的函数了
print_func("Runoob")

这样就可以直接调用print_func方法了。

一般建议尽量使用import * ,这样更易读,也可以避免名称冲突

二、

python解释器如何搜索模块:

1.首先是当前目录

2.不在当前目录,则在shell变量pythonpath下的每个目录搜索

3.之后再去默认目录下

补充下:如果一个局部变量和一个全局变量重名,则局部变量会覆盖全局变量

再介绍一些常用的模块和函数:

dir()      ------返回一个列表,包含一个模块内定义的所有模块,变量和函数

import math

print dir(math)

['__doc__', '__file__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']

reload()   ------重新导入之前导入过的模块

 

讲一下python的包

包是一个分层次的文件目录结构,包就是个文件夹,必须存在__init__.py文件,该文件内容可以为空,它标识当前文件夹是个包

 

三、系统常用模块

import sys  ------系统相关

sys.argv 是一个 list,包含所有的命令行参数.    
sys.stdout sys.stdin sys.stderr 分别表示标准输入输出,错误输出的文件对象.    
sys.stdin.readline() 从标准输入读一行 sys.stdout.write("a") 屏幕输出a    
sys.exit(exit_code) 退出程序    
sys.modules 是一个dictionary,表示系统中所有可用的module    
sys.platform 得到运行的操作系统环境    
sys.path 是一个list,指明所有查找module,package的路径.  

imoprt os   ------操作系统相关

os.environ 一个dictionary 包含环境变量的映射关系   
os.environ["HOME"] 可以得到环境变量HOME的值     
os.chdir(dir) 改变当前目录 os.chdir('d:\\outlook')   
注意windows下用到转义     
os.getcwd() 得到当前目录     
os.getegid() 得到有效组id os.getgid() 得到组id     
os.getuid() 得到用户id os.geteuid() 得到有效用户id     
os.setegid os.setegid() os.seteuid() os.setuid()     
os.getgruops() 得到用户组名称列表     
os.getlogin() 得到用户登录名称     
os.getenv 得到环境变量     
os.putenv 设置环境变量     
os.umask 设置umask     
os.system(cmd) 利用系统调用,运行cmd命令   

内置函数:

help(obj) 在线帮助, obj可是任何类型    
callable(obj) 查看一个obj是不是可以像函数一样调用    
repr(obj) 得到obj的表示字符串,可以利用这个字符串eval重建该对象的一个拷贝    
eval_r(str) 表示合法的python表达式,返回这个表达式    
dir(obj) 查看obj的name space中可见的name    
hasattr(obj,name) 查看一个obj的name space中是否有name    
getattr(obj,name) 得到一个obj的name space中的一个name    
setattr(obj,name,value) 为一个obj的name   
space中的一个name指向vale这个object    
delattr(obj,name) 从obj的name space中删除一个name    
vars(obj) 返回一个object的name space。用dictionary表示    
locals() 返回一个局部name space,用dictionary表示    
globals() 返回一个全局name space,用dictionary表示    
type(obj) 查看一个obj的类型    
isinstance(obj,cls) 查看obj是不是cls的instance    
issubclass(subcls,supcls) 查看subcls是不是supcls的子类

 

posted on 2018-11-20 14:03  testzhangcs  阅读(139)  评论(0编辑  收藏  举报

导航