首页 > 编程语言 > 详细

python3 模块

时间:2020-03-31 17:45:19      阅读:63      评论:0      收藏:0      [点我收藏+]

  在Python中,一个.py文件就称之为一个模块(Module),包含所有你定义的函数和变量的文件。

  好处:最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。模块可以被其他地方引用。使用模块还可以避免函数名和变量名冲突。

  自己创建模块时要注意命名,不能和Python自带的模块名称冲突。模块名要遵循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行和第2行是标准注释,第1行注释可以让这个hello.py文件直接在Unix/Linux/Mac上运行,第2行注释表示.py文件本身使用标准UTF-8编码;

  第4行是一个字符串,表示模块的文档注释,任何模块代码的第一个字符串都被视为模块的文档注释;

  第6行使用__author__变量把作者写进去,这样当你公开源代码后别人就可以瞻仰你的大名;

  _name__属性来使该程序块仅在该模块自身运行时执行。每个模块都有一个__name__属性,当其值是‘__main__‘时,表明该模块自身在运行,否则是被引入。若是被引入,下面的代码则不运行。

  import sys:导入sys模块。

  from fibo import fib, fib2  两种导入模块的方法

  内置的函数 dir(xx) 可以找到模块内定义的所有名称。没有给定参数,那么 dir() 函数会罗列出当前定义的所有名称:

  作用域:

  正常的函数和变量名是公开的(public),可以被直接引用,比如:abcx123PI等;

  类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,我们自己的变量一般不要用这种变量名;

  类似_xxx__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc__abc等;(只是不应该,从编程习惯上不应该引用private函数或变量。)

  外部不需要引用的函数全部定义成private,只有外部需要引用的函数才定义为public。

def _private_1(name):
    return Hello, %s % name

def _private_2(name):
    return Hi, %s % name

def greeting(name):
    if len(name) > 3:
        return _private_1(name)
    else:
        return _private_2(name)

 

  为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。

  可以有多级目录,组成多级层次的包结构。

  若在pycharm中,导入包有问题,可能的一个问题,请参考:https://blog.csdn.net/whalefall/article/details/88317715,每一个包都做一下Mark Directory as Sources Root。

  用户可以每次只导入一个包里面的特定模块,比如:  import sound.effects.echo

  这将会导入子模块:sound.effects.echo。 他必须使用全名去访问:  sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)

  还有一种导入子模块的方法是:  from sound.effects import echo

  这同样会导入子模块: echo,并且他不需要那些冗长的前缀,所以他可以这样使用:  echo.echofilter(input, output, delay=0.7, atten=4)

  还有一种变化就是直接导入一个函数或者变量:  from sound.effects.echo import echofilter

  同样的,这种方法会导入子模块: echo,并且可以直接使用他的 echofilter() 函数:  echofilter(input, output, delay=0.7, atten=4)

  注意当使用 from package import item 这种形式的时候,对应的 item 既可以是包里面的子模块(子包),或者包里面定义的其他名称,比如函数,类或者变量。

  import 语法会首先把 item 当作一个包定义的名称,如果没找到,再试图按照一个模块去导入。如果还没找到,抛出一个 :exc:ImportError 异常。

  反之,如果使用形如 import item.subitem.subsubitem 这种导入形式,除了最后一项,都必须是包,而最后一项则可以是模块或者是包,但是不可以是类,函数或者变量的名字。

 

 

 参考自:菜鸟python3和廖老师的python3

 

python3 模块

原文:https://www.cnblogs.com/yunlong-study/p/12606312.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!