python模块

模块介绍

在python中,一个 集合代码的**.py** 文件就称之为一个模块,提高了代码的可维护性。在编写程序的时候也常引用其它模块,包括内置和第三方的模块。

编写模块的时候,要尽量不与内置函数名冲突,也不与系统模块名相同,可以利用import方式验证系统是否存在这样名称的模块,但不必考虑名字会与其它模块冲突,因为相同的函数名和变量名可以存在不同的模块中。 如果模块名也相同的话,python又引入了 目录 来组织模块的方法,称为 “包” 。如abc.py模块名就变成了mycompany.abc。

注意: 每个包的目录下都会有一个 __init__.py 文件,这个文件是必须存在的,否则python不会把这个目录当成包,而是当成普通的目录。同时,还可以设置多级层次的包结构。

模块的标准文件模板

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

' a test module '

__author__ = 'Michael Liao'

import sys

def test():
    args = sys.argv
    if len(args)==1:
        print('Hello, world!')
    elif len(args)==2:
        print('Hello, %s!' % args[1])
    else:
        print('Too many arguments!')

if __name__=='__main__':
    test()
  • 第1行注释可以让这个hello.py文件直接在Unix/Linux/Mac上 运行
  • 第2行注释表示.py文件本身使用标准UTF-8 编码;
  • 第4行是一个字符串,表示模块的 文档注释,任何模块代码的第一个字符串都被视为模块的文档注释;
  • 第6行使用__author__变量把 作者 写进去,这样当你公开源代码后别人就可以瞻仰你的大名;
  • 中间部分就是模块的核心内容了
  • 最后两行 __name__==’__main__’ 的作用由下面细讲:
__name__==’__main__’ 介绍:

python属于脚本语言,不像类似C、C++、Java这样的编译型语言将程序编译成二进制在运行,而是动态的逐行解释运行,也就是 脚本从第一行开始运行,没有统一的入口。

例子说明:

"""这个是const.py代码"""
PI=3.14
def main():
    print(PI)
main()
"""运行结果为:"""
3.14
"""这个是area.py的代码"""
from const import PI
def main():
    print(PI*2)
main()
"""在pycharm里右击该文件运行(不是Alt+Shift+E这样的运行)结果如下:"""
3.14
6.28
  • 可以看到 area.py 文件的运行把导入的 const.py 模块的内容也执行了,这个不是我们想要的,因此就利用到了__name__属性:
    • 自己运行自己的代码,不运行导入的模块:__name__ == ‘__main__’
    • if __name__==’__main__’:相当有python的程序入口

帮助理解:

朋友眼中你是小明(__name__ == ‘小明’),
你自己眼中你是你自己(__name__ == ‘__main__’),

你编程很好, 朋友调你去帮他写程序(import 小明, 这时你在朋友眼中: __name__ == ‘小明’),
但你晚上也会打开xx网站, 做一些自己的事情(直接运行小明 .py, __name__ == ‘__main__’)

模块中函数和变量

在一个模块中,部分函数和变量是希望被别人使用的,部分是希望只在模块内使用的。

  • 正常的函数和变量名是公开的public,如abc
  • 类似__xxx__格式的变量名是特殊变量,有特殊含义,如__author__、__name__
  • 类似__xxx和_xxx这样的函数和变量是非公开的private ,不能直接被引用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值