【Python基础】模块化编程-包调用

news2024/11/16 13:44:15

datitle: Python Module&&Invoking
date: 2020-05-12 00:16:58
img: https://gitee.com/github-25970295/blogImage/raw/master/img/woman-3219507__340.webp
categories: 编程语言
reprintPolicy: cc_by
cover: false
tags:

  • python

​ 无论我们选择用何种语言进行程序设计时,都不可能只有一个文件(除了“hello world”),通常情况下,我们都需要在一个文件中调用另外一个文件的函数呀数据等等,总之要操作其他文件中的代码,在java中,只要在同一个文件目录下,我们就不需要通过import导入,但是在Python中,我们就需要通过import来进行导入,这样我们才能应用其他文件中定义的函数和数据等代码。

1. Python 调用

1.1. 同一目录

调用函数

# A.py
def add(x,y):
	print("xxx")
	
# B.py
import A
A.add(1,2)

#或者
from A import add
add(1,2)

调用类

# A.py
class A:
    def __init__(self,xx,yy):
        self.x=xx
        self.y=yy
    def add(self):
        print("x和y的和为:%d"%(self.x+self.y))
        
# B.py
from A import A
a=A(2,3)
a.add()

#或者
import A
a=A.A(2,3)
a.add()

1.2. 不同目录

若不在同一目录,python查找不到,必须进行查找路径的设置,将模块所在的文件夹加入系统查找路径

注意: import 是从项目文件夹开始的

import sys
sys.path.append(‘a.py所在的路径’)
import a
a.func()

2. 模块调用

而一个package跟一个普通文件夹的区别在于,package的文件夹中多了一个__init__.py文件。换句话说,如果你在某个文件夹中添加了一个__init__.py文件,则python就认为这个文件夹是一个python中的package。

# 假设 文件目录如下
- mod_a
    __init__.py     # 模块文件夹内必须有此文件
    aaa.py
- mod_b
    __init__.py     # 模块文件夹内必须有此文件
    bbb.py
- ccc.py

2.1. 调用同级模块

import sys
sys.path.append(os.path.join(os.path.dirname(__file__), '..')) # 扫除路径迷思的关键!
from mod_b.bbb import *

2.1. 调用上级模块

import sys
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
from ccc import *

3. 功能模块化编写

###################################################
#               智能小车1.0 -- 舵机模块
###################################################
 
import RPi.GPIO as GPIO
import time
class ServoModule:
    # 初始模块
    def __init__(self, PIN):
        print('Servo Module In Progress')
        GPIO.setmode(GPIO.BOARD)
        self.PIN = PIN
        #initial 是启动引脚设置初始 
    # 舵机左转
    def turnLeft(self):
        self.pwm = GPIO.PWM(self.PIN, 50)   
    # 舵机右转
    def turnRight(self):
        self.pwm = GPIO.PWM(self.PIN, 50)
        self.pwm.start(0)      
 
if __name__ == "__main__":
    try:
        # 19,21,23
        m = ServoModule(19)       
    except KeyboardInterrupt:
        pass
    GPIO.cleanup()
###################################################
#               智能小车1.0
###################################################
# 光敏传感器           红 黑 任意
# 超声波传感器-发送     红 黑  任意 * 2
# 超声波传感器-接收
# 红外避障传感器-左     红 黑  任意
# 红外避障传感器-右     红 黑  任意
# 无源蜂鸣器           红 黑   任意
# 寻迹传感器           红 黑   任意
# 七彩大灯R-G-B         黑 任意 * 3
# 超声波云台舵机-左右转   任意
# 摄像头云台舵机-左右转   红   黑   任意
# 摄像头云台舵机-上下转   红   黑   任意
# 左轮in1-in2         任意 * 2
# 右轮in1-in2         任意 * 2
 
# 接电:红 8
# 接地:黑 9
# 其他:17
 
import threading
import os
 
from PyCode.Modules.RGBLightModule import *
from PyCode.Modules.ServoModule import *
 
 
##----------小车对外提供的功能
class QQCar:
 
    def __init__(self):
        # 初始化智能小车使用控制脚--------------
        self.PIN_LIGHT = 8              # 01:光敏
        self.PIN_ULTRASON_TRIG = 11     # 02:超声波-发射
  
    # 超声波云台,右转
    def servoUltrasonicTurnRight(self):
        self.servoModule_U.turnRight()
 
    # 摄像头水平云台,左转
    def servoCameraHTurnLeft(self):
        self.servoModule_CH.turnLeft()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/134242.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022年度总结:凝神聚力 踔厉奋发

2021年底手里握了几份offer,有研究型大学,也有教学型大学。是选择去前者继续拼搏,还是选择去后者直接躺平?二者的权衡和取舍确实不太容易抉择。尽管也咨询了很多前辈,最后还是得自己做决定。尽管我还是很喜欢做研究工作…

spark理论

前言: 本文是之前19年学生时学习林子雨老师《Spark大数据 》网易公开课的中关于spark的理论部分的部分笔记。主要包括大数据产品与spark的一些概念与运行原理介绍。 目录 大数据产品与hadoop生态系统 Spark概念 MapReduce与spark的比较 Spark运行 Spark运行基本流程…

【Spring 系列】Spring Session 深度解析

文章目录Spring Session 架构及应用场景为什么要spring-sessionSR340规范与spring-session的透明继承Spring Session探索特点核心 APIservlet session 与 spring-session 关系webflux 与 spring session 的关系基于 Servlet 的 Spring Session 实现思考题背景1、注册到 Filter …

Pytorch—模型微调(fine-tune)

随着深度学习的发展,在大模型的训练上都是在一些较大数据集上进行训练的,比如Imagenet-1k,Imagenet-11k,甚至是ImageNet-21k等。但我们在实际应用中,我们自己的数据集可能比较小,只有几千张照片,这时从头训…

RHCE——ansible环境配置(1)

配置ansible学习环境实现以下要求: 1.控制主机和受控主机通过root用户通过免密验证方式远程控住受控主机实施对应(普通命令,特权命令)任务 2.控制主机连接受控主机通过普通用户以免密验证远程控住受控主机实施指定(普通…

雪花算法详解

背景 需要选择合适的方案去应对数据规模的增长,以应对逐渐增长的访问压力和数据量。 数据库的扩展方式主要包括:业务分库、主从复制,数据库分表。 数据库分表 将不同业务数据分散存储到不同的数据库服务器,能够支撑百万甚至千万…

计算机网络学习笔记

前言 本篇笔记方便本人用于复习回顾知识点,内容庞杂,见谅。含有目录方便大家跳转复习! 此复习笔记总结于 湖科大教书匠出品:深入浅出计算机网络 微课视频 此笔记尚未完结,持续更新中… 文章目录前言第一章 概述1.1 …

数学建模学习笔记-概况

目录 1概况. 数学建模: 数学建模的模块: 一般步骤: 全过程: 论文的基本流程 模块学习: 1.题目备战:掌握固定模式 2.摘要备战:总结归纳能力,通过看高水平论文掌握。 3.问题重…

Mybatis源码分析(五)SqlSession的创建

目录一 SqlSession的创建1.1 获取environments配置元素1.2 获取事务工厂1.3 获取执行器Executor1.4 构建DefaultSqlSession官网:mybatis – MyBatis 3 | 简介 参考书籍:《通用源码阅读指导书:MyBatis源码详解》 易哥 参考文章: M…

彩色图像灰度化

灰度图像能以较少的数据表征图像的大部分特征,因此在某些算法的预处理阶段需要进行彩色图像灰度化,以提高算法的效率。将彩色图像转化为灰度图像的过程称为彩色图像灰度化。 常用RGB图像灰度化,在RGB模型中,位于空间位置(x,y)的像…

MAX78000一些AI例程测试

进入Demo所在目录 cd /E/MAX78000/MAXSDK/Examples/MAX78000/CNN/kws20_demo 执行编译 make 如果之前已经被编译过了,可以先清除,再make make distclean 选择板型 根据自己用的开发板不一样,注释掉BOARDEvKit_V1 To compile code for …

视频处理系列︱利用达摩院ModelScope进行视频人物分割+背景切换(一)

做了一个简单的实验,利用modelscope的人像抠图模型对视频流进行抠像并更换背景。 文章目录1 视频人像抠图(Video human matting)2 更换背景1 视频人像抠图(Video human matting) 地址链接:视频人像抠图模型…

2022定格 以史为鉴 擘画未来 砥砺2023

回望2022思绪万千 我们的家国情怀和社会担当,让我们与众不同。 每一个个体,每一天,每一月,每一年,都能且应该成为更好的自己。 我们要做未来的创造者,驱动他人最好的方式是点燃自己。 不放弃就会有光&a…

Js Promise理解和使用

js中的promise是一个异步编程的解决方案,语法层面上他是一个构造函数,名字为Promise()。 它的作用就是将一个任务task封装为一个Promise类的实例对象,这个对象会将任务自动运行并得到任务结果,而且在得到结果的过程中并不会影响到…

区间预测 | MATLAB实现Lasso分位数回归时间序列预测

区间预测 | MATLAB实现Lasso分位数回归时间序列预测 目录 区间预测 | MATLAB实现Lasso分位数回归时间序列预测效果一览基本描述模型描述程序设计学习总结参考资料效果一览 基本描述 LASSO回归的特点是在拟合广义线性模型的同时进行变量筛选(variable selection)和复杂度调整(…

D2. RGB Substring (hard version)(尺取)

Problem - 1196D2 - Codeforces 通用领域 医学 计算机 金融经济 你有一个包含n个字符的字符串s,每个字符是R, G或B。 你还得到一个整数k。你的任务是改变初始字符串s中的最小字符数,这样在改变之后,将会有一个长度为k的字符串…

C语言及算法设计课程实验三:最简单的C程序设计——顺序程序设计(一)

C语言及算法设计课程实验三:最简单的C程序设计——顺序程序设计一、实验目的二、 实验内容2.1、实验内容1:通过下面的程序掌握各种格式转换符的正确使用方法三、 实验步骤3.1、顺序程序设计实验题目1:通过下面的程序掌握各种格式转换符的正确…

[OC学习笔记]启动流程

我们的app是如何从桌面图标被启动的嘞?这个问题值得探究。 冷启动与热启动 这两个启动的区别其实很简单,就看启动之前手机后台是否有app存活。 名称区别冷启动启动时,App的进程不在系统里,需要开启新进程。热启动启动时&#x…

前端学习笔记006:React.js

(前面学了那么多,终于到 React 了~) React.js 大家应该听说过,是用于构建前端网页的主流框架之一。本文会把 React.js 开发中会用到的东西(包括 React 核心,React 脚手架,React AJAX&#xff0…

nodejs接收时get请求参数

在http协议中,一个完整的url路径如下图 通过下图我们可以得知,get请求的参数是直接在url路径中显示。 get的请求参数在path资源路径的后面添加,以?表示参数的开始,以keyvalue表示参数的键值对,多个参数以&符号分…