【Python】PyCharm中调用另一个文件的函数或类

🎉欢迎来到Python专栏~PyCharm中调用另一个文件的函数或类


  • ☆* o(≧▽≦)o *☆~我是小夏与酒🍹
  • 博客主页:小夏与酒的博客
  • 🎈该系列文章专栏:Python学习专栏
  • 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏
  • 📜 欢迎大家关注! ❤️
    图标

CSDN

🎉 目录-PyCharm中调用另一个文件的函数或类

  • 一、说明
  • 二、同一文件夹中的调用
  • 三、不同文件夹中的调用
  • 四、使用小例子

遇见未来

一、说明

Python技能树:Python入门技能树。
版本:Python 3.10。
IDE:PyCharm。

二、同一文件夹中的调用

新建一个项目,需要在main.py中调用add_method.py中的函数,注意文件的目录关系。main.pyadd_method.py是在同一个文件夹下:
目录1
先在add_method.py中编写我们需要使用的函数,为了演示方便,定义了一个两数求和的函数:

def adder(a,b):
    return  a + b

接下来在main.py中调用该函数:

import add_method

c = add_method.adder(1,2)

print(c)

三、不同文件夹中的调用

在不同文件夹之间调用时,需要设置对应文件夹的root路径。

先看一下不设置root路径导致的情况:
新建一个项目,在项目中新建两个文件夹分别存放main和函数:
2
先关注在main.py中调用adder.py中的函数,编写adder.py

def adder(a,b):
    return a + b

main.py中调用:

from fx import adder

c = adder.adder(2,2)

print(c)

结果发现是可以调用成功的。

叮叮叮~ 在如下情况中如果不设置root路径,将无法运行成功:

编写pow.py

def powplus(a,b):
    return a*b

我们在adder.py的函数中调用powplus()函数:

import pow

def adder(a,b):
    return a + b

def add_pow(a,b):
    c = a + b
    d = pow.powplus(a,b)
    return c,d

更改main.py

from fx import adder

c = adder.adder(2,2)
print(c)

_,e= adder.add_pow(1,1)
print(e)

注意调用格式:

from fx import adder

运行结果报错:
报错1
解决方法:将fx文件夹设置为root路径:
root
对于英文版的PyCharm,设置root路径参考:Pycharm中,python如何调用另一个文件的类或者函数。

设置好root之后,该程序即可正常运行。

取消root设置的步骤:
取消root

四、使用小例子

对于文章【Python】Python实现串口通信(Python+Stm32)中Python实现串口通信的代码:

import serial
from time import sleep

def recv(serial):
    while True:
        data = serial.read_all().hex()
        if data == '':
            continue
        else:
            break
        sleep(0.02)
    return data

def send(send_data):
    send_data_hex = bytes.fromhex(send_data)
    if (serial.isOpen()):
        serial.write(send_data_hex)  # 编码
        print("发送成功", send_data_hex)
    else:
        print("发送失败!")

if __name__ == '__main__':
    serial = serial.Serial('COM3', 9600, timeout=0.5)
    if serial.isOpen() :
        print("open success")
    else :
        print("open failed")

    #这里如果不加上一个while True,程序执行一次就自动跳出了
    while True:
        a = input("输入要发送的数据:")
        send(a)
        sleep(0.5)  # 起到一个延时的效果
        data =recv(serial)
        if data != '' :
            print("receive : ",data)

在代码中定义了函数,不方便我们进行整体的阅读,将定义的函数放到新的py文件中,注意文件的目录关系:
3
文件defserial.py

from time import sleep

def recv(serial):
    while True:
        data = serial.read_all().hex()
        if data == '':
            continue
        else:
            break
        sleep(0.02)
    return data

def send(serial,send_data):
    send_data_hex = bytes.fromhex(send_data)
    if (serial.isOpen()):
        serial.write(send_data_hex)  # 编码
        print("发送成功", send_data_hex)
    else:
        print("发送失败!")

导入调用:

import serial
from time import sleep
from DefSerial import defserial

文件main.py

import serial
from time import sleep
from DefSerial import defserial

if __name__ == '__main__':
    serial = serial.Serial('COM3', 9600, timeout=0.5)
    if serial.isOpen() :
        print("open success")
    else :
        print("open failed")

    #这里如果不加上一个while True,程序执行一次就自动跳出了
    while True:
        a = input("输入要发送的数据:")
        defserial.send(serial,a)
        sleep(0.5)  # 起到一个延时的效果
        data = defserial.recv(serial)
        if data != '' :
            print("receive : ",data)

运行结果:
注意:在调试运行的时候,需要保证串口正确打开。

运行结果

csdn

🧸结尾


  • ❤️ 感谢您的支持和鼓励! 😊🙏
  • 📜您可能感兴趣的内容:
  • 【Python】Python实现串口通信(Python+Stm32)
  • 【Verilog HDL】FPGA-testbench基础知识
  • 【Arduino TinyGo】【最新】使用Go语言编写Arduino-环境搭建和点亮LED灯
  • 【全网首发开源教程】【Labview机器人仿真与控制】Labview与Solidworks多路支配关系-四足爬行机器人仿真与控制
    遇见未来

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Langchain-ChatGLM配置文件参数测试

1 已知可能影响对话效果的参数(位于configs/model_config.py文件): # 文本分句长度 SENTENCE_SIZE 100# 匹配后单段上下文长度 CHUNK_SIZE 250 # 传入LLM的历史记录长度 LLM_HISTORY_LEN 3 # 知识库检索时返回的匹配内容条数 VECTO…

leetcode 9 回文数

class Solution {public boolean isPalindrome(int x) {if(x < 0){return false;}int num x;int value 0;while(num > 0){value value * 10 num % 10;num num / 10;}return value x;} }

golang 日志库logrus和lumberjack 日志切割库实践

package mainimport (log "github.com/Sirupsen/logrus""gopkg.in/natefinch/lumberjack.v2" )func main() {logger : &lumberjack.Logger{// 日志输出文件路径Filename: "/var/log/myapp/foo.log",// 日志文件最大 size, 单位是 MBMaxSiz…

【问题解决】VSCode 远程安装插件特别慢

【问题描述】 我要配置 VSCode WSL 的开发环境&#xff0c;需要在 WSL 里也装上 C、CMake 系列的插件&#xff0c;如下图的直接下载方式特别慢&#xff1a; 【解决方法】 先去网站下载插件&#xff1a;https://marketplace.visualstudio.com/&#xff0c;后缀名&#xff1a;…

re学习(18)[ACTF新生赛2020]rome1(Z3库+window远程调试)

参考视频: Jamiexu793的个人空间-Jamiexu793个人主页-哔哩哔哩视频 代码分析&#xff1a; 其主要内容在两个while循环中&#xff08;从定义中可知flag位16个字符&#xff09;。 看第二个循环&#xff0c;可知是比较result和经过第一个循环得到的v1比较&#xff08;就是flag…

Django MultiValueDictKeyError 表单数据用request.POST 非表单数据用request.body

表单数据&#xff1a;Content-Type(请求头)为application/x-www-form-urlencoded的数据。 用request.POST获取 a request.POST.get(a) a request.POST[a] alist request.POST.getlist(a) 非表单数据&#xff1a;Content-Type(请求头)为非application/x-www-form-urlenco…

Ghost Buster Pro for mac(快速清理卸载的应用残存文件)

Ghost Buster Pro for mac可从您已卸载的应用程序中查找并删除文件。该应用程序速度快如闪电&#xff0c;可立即释放内存。 许多应用程序都安装在计算机上&#xff0c;但它们通常只会在您的计算机上停留很短的时间。每个应用程序都会创建文件&#xff0c;但删除应用程序不会删…

create database创建数据库失败

瀚高数据库 目录 环境 症状 问题原因 解决方案 环境 系统平台&#xff1a;Linux x86-64 Red Hat Enterprise Linux 7 版本&#xff1a;4.5.7 症状 1、执行如下sql语句创建数据库报错。 create database printcdburn with encodingUTF8 OWNERprintcdburn LC_COLLATEzh_CN.UTF-…

第八十八回:创建一个调色板

文章目录 概念介绍实现方法整体思路具体步骤 示例代码 我们在上一章回中介绍了打印日志相关的内容&#xff0c;本章回中将介绍 如何创建一个调色板.闲话休提&#xff0c;让我们一起Talk Flutter吧。 概念介绍 我们在本章回中介绍的调色板是一个具有各种颜色的窗口&#xff0c…

Taurus .Net Core 微服务开源框架:Admin 插件【4-3】 - 配置管理-Mvc【Plugin-MicroService 微服务】

目录 1、系统配置节点&#xff1a;Mvc - Plugin - MicroService 配置界面&#xff1a;注册中心 2、系统配置节点&#xff1a;Mvc - Plugin - MicroService 配置界面&#xff1a;注册中心&#xff08;从&#xff09; 3、系统配置节点&#xff1a;Mvc - Plugin - MicroService…

【C语言初阶(18)】结构体

文章目录 前言Ⅰ结构体的声明Ⅱ 结构体的定义Ⅲ 结构体初始化Ⅳ 访问结构体成员⒈结构体变量访问结构体成员⒉结构体指针访问结构体成员 Ⅴ 结构体的嵌套Ⅵ 结构体传参 前言 C 语言提供了一些非常基本的数据类型&#xff0c;如 int、float、double、char 等&#xff0c;这些不同…

基于R语言的水文、水环境模型优化技术及快速率定方法与多模型案例实践

目录 专题一、最速上升法、岭分析以及响应曲面模型 专题二、Kriging插值与优化方法 专题三、启发式算法 专题四、采样方法 专题五、高斯过程回归 专题六、基于模型的高斯过程/贝叶斯优化设计 专题七、最优化的快速化 专题八、高级高斯过程模型 专题九、异方差性 专题…

动手学深度学习——图像分类数据集(代码详解)

目录 1. 图像分类数据集1.1 读取数据集1.2 读取小批量1.3 整合所有组件1.4 小结 1. 图像分类数据集 这里采用Fashion-MNIST数据集 torchvision&#xff1a;torch类型的可视化包&#xff0c;一般计算机视觉和数据可视化需要使用from torchvision import transforms&#xff1a;…

基于单片机的智能台灯 灯光控制系统人体感应楼梯灯系统的设计与实现

功能介绍 以STM32单片机作为主控系统&#xff1b;主通过光敏采集当前光线强度&#xff1b;通过PMW灯光调节电路&#xff0c;我们可以根据不同的光线亮度&#xff0c;进行3挡调节&#xff1b;通过人体红外检测当前是否有人&#xff1b;通过不同光线情况下使用PWM脉冲电路进行调节…

13matlab数据分析多项式的求值(matlab程序)

1.简述 统计分析常用函数 求最大值 max 和 sum 积 prod 平均值&#xff1a;mean 累加和&#xff1a;cumsum 标准差&#xff1a;std 方差&#xff1a;var 相关系数&#xff1a;corrcoef 排序&#xff1a;sort 四则运算 1.多项式的加减运算就是所对应的系数向量的加减运算&#…

使用jQuery的ajax提交图片信息

1 设置图片id&#xff08;html&#xff09; 首先&#xff0c;定义上传图片的id&#xff0c;根据上传文件的id获取图片信息&#xff1a; 注&#xff1a;图片的id应该设置在input标签里面 2 发送ajax请求&#xff08;js&#xff09; var formData new FormData(); formData.ap…

day40-Mybatis(resultMap拓展)

0目录 Mybatis-resultMap拓展 1.2.3 1.数据库字段和javabean实体类属性不一致时 解决方案1&#xff1a;将sql语句中给予别名&#xff08;别名同javabean中实体类保持一致&#xff09; 解决方案2&#xff1a;使用resultMap 2.两表关联&#xff08;用户表和角色表关联查询&…

【算法基础:数据结构】2.2 字典树/前缀树 Trie

文章目录 知识点cpp结构体模板 模板例题835. Trie字符串统计❤️❤️❤️❤️❤️&#xff08;重要&#xff01;模板&#xff01;&#xff09;143. 最大异或对&#x1f62d;&#x1f62d;&#x1f62d;&#x1f62d;&#x1f62d;&#xff08;Trie树的应用&#xff09; 相关题目…

【UE4 塔防游戏系列】06-炮塔发射子弹攻击敌人

效果 步骤 1. 新建一个Actor蓝图类&#xff0c;命名为“TotalBulletsCategory”&#xff0c;用来表示子弹蓝图总类&#xff0c;后面会有很多不同类型的子弹会继承该类 打开“TotalBulletsCategory”&#xff0c;添加粒子系统组件、盒体碰撞组件和发射物移动组件 调整发射物重力…

电压放大器在超声波焊接中的作用以及应用

电压放大器是一种运用于电子设备中的信号放大器&#xff0c;主要作用是将小信号放大为更高幅度的信号。在超声波焊接中&#xff0c;电压放大器起到了重要的作用&#xff0c;它可以将从传感器采集到的微小信号放大为能够被检测和处理的合适大小的信号。 超声波焊接是现代工业生产…