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. 导入相对路径:
  • 相关阅读:
    Codeforces 1485C Floor and Mod (枚举)
    CodeForces 1195D Submarine in the Rybinsk Sea (算贡献)
    CodeForces 1195C Basketball Exercise (线性DP)
    2021年初寒假训练第24场 B. 庆功会(搜索)
    任务分配(dp)
    开发工具的异常现象
    Telink MESH SDK 如何使用PWM
    Telink BLE MESH PWM波的小结
    [LeetCode] 1586. Binary Search Tree Iterator II
    [LeetCode] 1288. Remove Covered Intervals
  • 原文地址:https://www.cnblogs.com/volcao/p/9081058.html
Copyright © 2011-2022 走看看