python模块和包

1、模块

在当前目录下,创建一个m1.py的文件

def say(word):
    print word
m1type="555"

在创建一个调用代码call.py

import m1

print __name__
print m1.__name__
m1.say("gg")
print m1.m1type

在命令行中执行python call.py

可以看到m1这个模块中的函数和变量都可以被调用。


2、包

在当前目录下创建一个文件夹p1,

在p1中创建一个空文件(__init__.py)标识这是一个包。

在p1中再创建一个模块m2.py

def say(word):
    print word
m1type="44444"

在命令行中执行python call2.py

结果如下:

__main__
p1.m2
gg
44444

可以看到p1.m2这个模块中的函数和变量都可以被调用。

3、包可以包含子包,和java的package相同。

     java在运行前可以指定classpath的位置,可以有多个位置

     python有一个sys.path变量,和classpath类似。

    当引用的包不在主类目录下时,需要先修改sys.path

   也可以在site-packages中方一个.pth文件,里面写上要增加的目录

    例子:

$ cat packagemain/main.py
#!python

import sys
sys.path.append("f:\\gaofeng\\python\\mypackage")
print sys.path

import package1.module1
import vm.vm, vm.vm2

print "a" "b"
print "a","b"
vm.vm.vm_f1("gaofeng")

vm.vm2.vm_f1("gaofeng")

package1.module1.f1()

运行结果:
$ packagemain/main.py
['F:\\gaofeng\\python\\mypackage\\packagemain', 'D:\\Python27\\lib\\site-package                                                                     s\\pip-9.0.1-py2.7.egg', 'C:\\Windows\\system32\\python27.zip', 'D:\\Python27\\D                                                                     LLs', 'D:\\Python27\\lib', 'D:\\Python27\\lib\\plat-win', 'D:\\Python27\\lib\\li                                                                     b-tk', 'D:\\Python27', 'D:\\Python27\\lib\\site-packages', 'f:\\gaofeng\\python\                                                                     \mypackage']
ab
a b
F:\gaofeng\python\mypackage\packagemain\vm\vm.pyc vm_f1 gaofeng
F:\gaofeng\python\mypackage\packagemain\vm\vm2.pyc vm_f1 gaofeng
f:\gaofeng\python\mypackage\package1\module1.pyc

F:\gaofeng\python>tree /f  mypackage

├─package1
│      module1.py
│      __init__.py
│
├─package2
└─packagemain
    │  main.py
    │  __init__.py
    │
    └─vm
            vm.py
            vm2.py
            __init__.py

4、

autotest/conf/m1.py
class A:
    def f1(self):
        print("ffff1111")
class B:
    def f2(self):
        print("ffff222")
import autotest.conf.m1
a = autotest.conf.m1.A()  #要带全package路径
a.f1()

from autotest.conf import m1 
x = m1.A() #需要模块名
x.f1()

from autotest.conf.m1 import B 
b=B() #只需要类名
b.f2()



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值