java程序员的python之路(模块)

模块

python可以通过python解释器来进行编程,也就是编写一些小程序。当编写大程序的时候,我们就会把我们的代码定义到.py文件中。这个文件就被成为模块。模块就是包含所有你定义的函数和变量的文件。模块可以被别的程序引入,以使用该模块中的函数等功能。在使用python标准库的时候我们常常需要导入一些模块,导入模块使用import,看下面的例子:

#导入sys模块
import sys
#sys.path包含了一个 Python 解释器自动查找所需模块的路径的列表
print(sys.path)

输出结果:

['E:\\workspace-python\\firstpython', 'E:\\workspace-python\\firstpython', 'D:\\python3.5\\DLLs', 'D:\\python3.5\\lib', 'D:\\python3.5', 'D:\\python3.5\\lib\\site-packages', 'D:\\python3.5\\python35.zip']

import语句

import语句的基本用法如下

import module1[, module2[,... moduleN]

import语句会在sys.path的列表中搜索要导入的的模块,如果找到就导入,如果没找到就报错。
下面我们定义两个个模块main.py和mymoudule.py,如下:
这里写图片描述

mymoudule.py代码如下:

def hello():
    print("hello")

在main.py导入py和mymoudule.py并调用其方法。如下:

import mymoudule
mymoudule.hello()

from…import语句

import语句是导入整个模块,然后通过模块名加“.”的方法调用模块中的变量和方法。有时候我们只需要导入模块中的一部分。这时候就需要使用from…import语句,结构如下:

from modname import name1[, name2[, ... nameN]]

我们修改mymoudule.py代码如下:

def hello():
    print("hello")

def go():
    print("go go go")

class People:
    def eat(self):
        print("eat")  

修改main.py代码如下:

from mymoudule import go
from mymoudule import People
go()
p = People()
p.eat()

输出结果:

go go go
eat

另外,把一个模块的所有部分导入,也是可行的,使用From…import * 就可以了。
修改代码如下:

from mymoudule import *
go()
p = People()
p.eat()

输出结果完全一致。

_name_属性

一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用name属性来使该程序块仅在该模块自身运行时执行。修改mymoudule.py代码:

if __name__ == "__main__":
    print("自身执行")
else:
    print("其他模块执行")   

直接执行mymoudule.py以及在main.py中导入,查看结果。

如果我们需要编写很多的模块,众多的模块堆积在一起虽然是可行的,但是很不方便管理。所以就引入了包,包用来管理模块。我们创建一个包,并在包下创建一个模块,我们看到创建包时会自动生成一个init.py的模块,这个模块时用来初始化包的,只会执行一次。在导入包下的模块时我们可以使用import 包名.模块名 as 的形式。看下面的例子:
这里写图片描述
_init_.py代码:

print("init animal pakage")

bird.py代码:

def fly():
    print("fly")

main.py代码:

import animal.bird as bird
bird.fly()

#也可以使用 from.... import 的形式
from animal.bird import fly
fly()

输出结果如下:

init animal pakage
fly
fly
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值