zoukankan      html  css  js  c++  java
  • python3 模块

      在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 这种导入形式,除了最后一项,都必须是包,而最后一项则可以是模块或者是包,但是不可以是类,函数或者变量的名字。

      安装第三方模块,可以使用pip: pip install Pillow

      也可以安装Anaconda,若每次要激活,参考这个:

      解决办法:

      1,在命令行输入conda info --envs后有如下提示:

      E:pythonConda>conda info --envs

      # conda environments:

      base  *  E:pythonConda

      2,在命令行输入conda activate +(base后面的路径),按照我的就是输入conda activate  E:pythonConda,回车解决问题!!!

      __name__属性

    #!/usr/bin/python3
    # Filename: using_name.py
    
    if __name__ == '__main__':
       print('程序自身在运行')
    else:
       print('我来自另一模块')

      说明: 每个模块都有一个__name__属性,当其值是'__main__'时,表明该模块自身在运行,否则是被引入。

      说明:__name__ 与 __main__ 底下是双下划线, _ _ 是这样去掉中间的那个空格。

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

  • 相关阅读:
    Ubuntu18.04 修改DNS
    windows系统如何通过Xshell 客户端连接 linux系统(主要介绍ubuntu系统)
    如何获取 docker 容器(container)的 ip 地址(转)
    基于Docker搭建LNMP环境(转)
    高并发处理【电商抢购】(转)
    [golang] Glide 包管理
    如何查看2to3.PY的帮助文档
    python模块之lib2to3(py2转py3自动化工具)
    python模块之keyword
    python模块之JSON
  • 原文地址:https://www.cnblogs.com/yunlong-study/p/12606312.html
Copyright © 2011-2022 走看看