zoukankan      html  css  js  c++  java
  • Python:包、模块、类、函数的调用

    一、关系

    1. 包一般指文件夹或者安装包(安装包一般也是压缩后的文件夹),里面包含多个.py文件(必须有一个__init__.py文件),一般也含有多个子包(或子文件夹);
    2. 一般一个.py文件就是一个模块,一个模块可以包含多个类或函数,一般只有一个类或函数
    3. 一个类里一般包含多个函数
    4. 一个函数一般包含7~15行代码
    5. 模块的名字不能与其下的类和函数的名字相同,导入时容易出现位置错误

    二、调用

     # 一般都是调用其它包中的模块下的类或者函数;

     # print(__file__):查看当前模块的绝对路径;

    1. 导入包下的模块中的类/函数:当前工作目录下;
      # 1)路径,工作目录下:ALG/kNN.py
      # KNNClassifier是kNN.py文件里的类
      from ALG.kNN import KNNClassifier
      
      # 2)路径,工作目录下:ALG/train_test_split.py
      # train_test_split是train_test_split.py文件中的函数
      from ALG.kNN import train_test_split

       # 导入类后,可直接调用类的方法:类.func()

    2. 导入其它包下的模块中的类/函数(非当前工作目录下):将模块所在的上级文件夹路径临时加入到系统变量sys.path的列表中;(此处导入的路径为绝对路径)
      # E:/pythonwj/ALG/kNN.py
      # 导入kNN.py模块
      # KNNClassifier是kNN.py内的类
      
      import sys
      
      # 将kNN.py模块的上级文件夹路径导入临时系统变量
      sys.path.append(r"E:pythonwj")
      from ALG import kNN
      
      # 实例化kNN.py模块下的KNNClassifier类
      my_knn_clf = kNN.KNNClassifier

      # A/B/C/kNN.py,B文件夹为kNN.py文件的上级文件夹;(之所以导入上一级文件夹路径,可能为了避免后面使用子包外的其它模块;

    3. 问题:sys.path.append(r"E:pythonwj"),此为导入绝对路径;如果将代码复制到其它电脑上,将无法使用;

    4. 导入相对路径:
  • 相关阅读:
    《ASP.NET Core 高性能系列》致敬伟大的.NET斗士甲骨文!
    ThreadLocal<T>的是否有设计问题
    从.NET和Java之争谈IT这个行业
    自建型呼叫中心
    托管型呼叫中心
    数字语音记录仪3.0
    模拟电话录音系统2.0
    easyui-combobox 下拉菜单 多选 multiple
    利用easyui-combotree实现 下拉菜单 多选功能(带多选框)
    eclipse项目导入 idea中
  • 原文地址:https://www.cnblogs.com/volcao/p/9081058.html
Copyright © 2011-2022 走看看