zoukankan      html  css  js  c++  java
  • 自学Python6.1-模块简介

    自学Python之路-Python基础+模块+面向对象
    自学Python之路-Python网络编程
    自学Python之路-Python并发编程+数据库+前端
    自学Python之路-django

    自学Python6.1-模块简介

    在C语言中如果要引用sqrt这个函数,必须用语句"#include<math.h>"引入math.h这个头文件,否则是无法正常进行调用的。
    那么在Python中,如果要引用一些内置的函数,该怎么处理呢?在Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似
    比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块。

    模块,用一砣代码实现了某个功能的代码集合。 
    类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。
    而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块
    如:os 是系统相关的模块。

    模块分为三种:

    • 自定义模块
    • 第三方模块(开源模块)
    • 内置模块(标准库)

    一 、自定义模块与第三方模块(开源模块)

    1.1 如果你自己定义一个模块,想开源提供给他们使用,是一个开源模块的集散地 https://pypi.python.org/pypi 

    1.2 如何安装第三方模块?

     方式一:yum

                    pip  (python专用)

                   apt-get

    方式二:下载源码- 解压源码-进入目录-编译源码- 安装源码python setup.py install

            

    1.3 自定义一个模块

     举例,建设一个简单的web框架

    ①首先创建一个Python Package文件,而不是Directory , 区别是Python Package多了一个空的_init_.py空文件(包,该文件表示允许跨目录函数导入)

     

    ②在web 下面创建两个Package   

    Frontend 前端(页面相关的东西)

    Backend 后端逻辑处理 程序之间关联度/依赖性降低,松耦合/解耦,因为这样才能几个人并行负责单独的模块,互相调用提高开发效率、代码复用、专业人士开发专用模块 只要接口一致数据库交互查询搜索更改增加等处理结果。

         

         

     ③ 配置文件 存数据库连接信息相关、html代码(全局)

         

    在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字。
    比如有这样一个文件test.py,在test.py中定义了函数add:

    #test.py
    def add(a,b):
        return a+b

    那么在其他文件中就可以先import test,然后通过test.add(a,b)来调用了,当然也可以通过from test import add来引入。

    1.4 模块的导入

    ①将模块放置在同一级内

    ②通过路径添加

    在Python中用关键字import来引入某个模块,比如要引用模块math,就可以在文件最开始的地方用import math来引入。在调用math模块中的函数时,必须这样引用:

    模块名.函数名

    import math
    print sqrt(2)       #这样会报错
    print math.sqrt(2) #这样才能正确输出结果

    注释:为什么必须加上模块名这样调用呢?因为可能存在这样一种情况:在多个模块中含有相同名称的函数,此时如果只是通过函数名来调用,解释器无法知道到底要调用哪个函数。所以如果像上述这样引入模块的时候,调用函数必须加上模块名。

    导入模块有一下几种方法:

    import module
    from module.xx.xx import xx
    from module.xx.xx import xx as rename
    from module.xx.xx import *

    导入模块其实就是告诉Python解释器去解释那个py文件

    • 导入一个py文件,解释器解释该py文件
    • 导入一个包,解释器解释该包下的 __init__.py 文件 【py2.7】

    模块导入的路径 

        sys.path

    import sys
    print (sys.path)

    输出:

    ['D:\PyCharm Community Edition 2016.3.2', 'D:\PyCharm Community Edition 2016.3.2', 'C:\Users\carlos.jiang\AppData\Local\Programs\Python\Python36-32\python36.zip', 'C:\Users\carlos.jiang\AppData\Local\Programs\Python\Python36-32\DLLs', 'C:\Users\carlos.jiang\AppData\Local\Programs\Python\Python36-32\lib', 'C:\Users\carlos.jiang\AppData\Local\Programs\Python\Python36-32', 'C:\Users\carlos\AppData\Local\Programs\Python\Python36-32\lib\site-packages']

    安装的路径可能会有些不同,但是site-packages目录是最佳选择,故只要将模块放入site-packages这样的目录中,所有程序就都能将其导入了。

    如果sys.path路径列表没有你想要的路径,可以通过 sys.path.append('路径') 添加。

    import sys
    import os
    project_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    sys.path.append(project_path)  

    二、内置模块(见下节)

  • 相关阅读:
    Python sendemail txt,html,图片及附件
    python 3 requests库2个问题
    py37 unitest+html_sendmail
    python 3 unitest批量执行用例
    phthon 3 unittest模块使用
    python 之发送邮件
    ipad已停用 连接itunes怎么办
    Ubuntu 16.04系统挂载4T硬盘
    华硕RT-AC86U路由器 AP模式实现多路由器组网,扩展主路由器的无线网范围
    ubuntu 常用命令
  • 原文地址:https://www.cnblogs.com/yaoyaojcy/p/7420429.html
Copyright © 2011-2022 走看看