Python菜鸟学习手册07----模块

简介

        如果你想要在其他程序中重用很多函数,那么你该如何编写程序呢?答案是使用模块。模块是一个包含了所有你定义的函数和变量以.py结尾的文件。

定义并载入模块

首先来学习如何使用模块。
我在c:\test存放一个文件:Hello.py。存放的代码是:
print("hello"); 
接着我们执行下面代码
import sys                         #import的作用是导入模块,这里我们导入了sys模块
sys.path.append("c:\\test")        #这条语句的作用是告诉解释器从哪里寻找模块。   路径还可以这样写sys.path.append("c:/test")

import Hello                       #这时我们就可以导入自己的模块Hello(模块名为文件名)
输出结果
hello                              #值得注意的是,只有第一次导入模块会之行模块中的命令
这是可以在c:/test文件夹下看到多了一个新的文件夹__pycache__,在这个文件夹中出现了文件Hello.cpython-34.pyc。这个文件是与平台无关,且已经经过编译处理的。

包含函数的模块

我在c:\test存放一个文件:sayHello.py。存放的代码是:
def say():
    print("hello");
def cry()
    print("55555555")
 接着我们执行下面代码 
import sys
sys.path.append("c:\\test")         #如果被导入的模块与输入他的程序在同一个目录中,则不需要sys.path.append了
import sayHello

sayHello.say()                      #导入模块之后可以调用模块中的函数,但是需要以 模块名.函数  的格式sayHello.cry()
 与上面代码结果相同 
import sys
sys.path.append("c:\\test")
from sayHello import say ,cry       #直接导入模块中具体的函数,缺点是如果想使用模块中的其他函数,需要追加导入

say()                               #可以直接使用函数
cry()
 
 
 输出结果 
hello

模块的属性

__name__属性

1. 如果模块是 被导入,__name__的值为模块名字(文件名)
2. 如果模块是 被直接执行,__name__的值为’__main__’
def say():
    print("hello"); 
if __name__ == '__main__':         #每个Python模块都有它的__name__,如果它是'__main__',则输出“你好”
    print("你好")
输出结果
你好
以模块的形式被调用,则什么都不会输出
应用
当我们编写Python库模块的时候,我们往往运行一些测试语句。当这个程序作为库被import的时候,我们并不需要运行这些测试语句。一种解决方法是在import之前,将模块中的测试语句注释掉。而更优美的解决方法,就是使用__name__。

下面是一个简单的库程序TestLib.py。当直接运行TestLib.py时,__name__为"__main__"。如果被import的话,__name__为"TestLib"。
def lib_func(a):
    return a + 10

def lib_func_another(b):
    return b + 20

if __name__ == '__main__':
    test = 101
    print(lib_func(test))


__doc__属性

介绍模块的功能
>>> math.__doc__
'This module is always available.  It provides access to the\nmathematical functions defined by the C standard.'

模块包

可以将功能相似的模块放在同一个文件夹(比如说this_dir)中,构成一个模块包。通过
import this_dir.module
引入this_dir文件夹中的module模块。
该文件夹中必须包含一个__init__.py的文件,提醒Python,该文件夹为一个模块包。__init__.py可以是一个空文件。

小提示:

1.在编译器中可以通过dir()函数来查看模块中的属性和函数。
>>> import math
>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', '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', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']



欢迎收听我的微信公众号


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值