zoukankan      html  css  js  c++  java
  • python — 模块(二)

    1 第三方模块

    先从网上下载,再安装,安装完成后才可以使用。

    第三方模块安装的路径:python36Libsite-packages

    把pip.exe 所在的路径添加到环境变量中。

    安装:

    • pip包管理工具: pip install xlrd

    • 源码安装:

      • 下载源码包:压缩文件。

      • 解压文件

      • 打开cmd窗口,并进入此目录:cd C:Python36Libsite-packages

      • 执行:python36 setup.py build

      • 执行:python36 setup.py install

    pip install 要安装的模块名称 # pip install xlrd (在命令执行窗口去下载安装)

    • 网慢

    • python36 -m pip install --upgrade pip(pip安装路径问题报错执行前面这句话)

      安装完成后需要更新版本的

    • 安装完成后,如果导入不成功。

      • 重启pycharm。

      • 安装错了。

    2 自定义模块

    1. 自定义模块安装的路径:当前执行python的路径

    • xxxx.py

      def f1():
          print('f1')
      ​
      def f2():
          print('f2')
    • x1.py

      # 调用自定义模块中的功能
      import xxxx
      xxxx.f1()
      xxxx.f2()
    • 运行

      python x1.py 
    1. 定义模块

      定义模块时可以把一个py文件或一个文件夹(包)当作一个模块,以方便于以后其他py文件的调用

    2. 对于包的定义:

      py2:文件夹中必须有_ _ init _ _.py

      py3:不需要_ _ init _ _.py

      推荐:以后写代码时,都要加上此文件。

      什么是包?

      1.文件夹 存储了多个py文件的文件夹
      2.如果导入的是一个包,这个包里的模块默认是不能用的
      3.导入一个包相当于执行 __init__.py文件中的内容

    3 模块的调用

    导入模块,加载此模块中所有的值到内容中。

    3.1 示例一

    # lizhongwei.py   模块文件
    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    def show():
        print('我司里种种')
    ​
    def func():
        passprint(456)
    # 导入模块,加载此模块中所有的值到内存。
    import lizhongwei
    ​
    print(123)
    # 调用模块中的函数
    lizhongwei.func()
    # 导入模块
    # 方法一
    from lizhongwei import func,show   # 1  该方法有弊端:容易重名
    from lizhongwei import func
    from lizhongwei import show   # 2    1和2执行结果一样
    # 方法二
    from lizhongwei import *   # 导入lizhongwei中所有的函数   
    ​
    func()
    
    
    # 导入模块
    # 方法三
    from lizhongwei import func as f  # 给lizhongwei中的func重新命名为f
    def func():
        print(123)
    f()    # 函数中的func与模块中的func重名了,需要给模块中的func重新命名后再执行。

    导入模块:

    • import 模块 模块.函数()

    • from 模块 import 函数 函数() 【as起别名 / *】

    • from 模块 import 函数 as 别名 别名()

    3.2 示例二

    lizohng
        - jd.py
        - pdd.py
        - tb.py
    包.py
    import lizhong.jd
    lizhong.jd.f1()
    from lizhong import jd
    jd.f1()
    from lizhong.jd import f1
    f1()

    3.3 总结(普通导入)

    • 模块和要执行的py文件在同一目录 且 需要 模块中的很多功能时,推荐用: import 模块

    • 其他推荐:from 模块 import 模块 模块.函数()

    • 其他推荐:from 模块.模块 import 函数 函数()

    导入:

    • 绝对导入:

      • import 模块

      • from 模块.模块 import 模块

      • from 模块.模块.模块 import 函数

    • 相对导入【不推荐】

      from . import xxx
      from .. import xxx

    调用模块内部元素

    • 函数()

    • 模块.函数()

    3.4 多次导入

    多次导入不会再重新加载

    # jd.py ===> print(123)
    import jd # 第一次加载:会加载一遍jd中所有的内容。   
    import jd # 由于已经加载过,就不再重新加载。
    print(456)  # 123  /n   456
    import importlib
    import jd
    importlib.reload(jd)  # 重新加载一遍jd中所有的内容
    print(456)

    通过模块导入的特性也可以实现单例模式:

    # jd.py
    class Foo(object):
        pass
    ​
    obj = Foo()
    # app.py
    import jd # 加载jd.py,加载最后会实例化一个Foo对象并赋值给obj
    print(jd.obj)

     

  • 相关阅读:
    (01)Docker简介
    Gym-101242B:Branch Assignment(最短路,四边形不等式优化DP)
    2019牛客暑期多校训练营(第三场)G: Removing Stones(启发式分治)
    POJ
    高维前缀和
    HDU
    BZOJ
    HDU
    POJ
    Gym-100648B: Hie with the Pie(状态DP)
  • 原文地址:https://www.cnblogs.com/yangjie0906/p/10677445.html
Copyright © 2011-2022 走看看