【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_methodc = 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 adderc = adder.adder(2,2)print(c)

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

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

编写pow.py

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

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

import powdef adder(a,b):return a + bdef add_pow(a,b):c = a + bd = pow.powplus(a,b)return c,d

更改main.py

from fx import adderc = 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 sleepdef recv(serial):while True:data = serial.read_all().hex()if data == '':continueelse:breaksleep(0.02)return datadef 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 sleepdef recv(serial):while True:data = serial.read_all().hex()if data == '':continueelse:breaksleep(0.02)return datadef 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 defserialif __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多路支配关系-四足爬行机器人仿真与控制
    遇见未来

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【IMX6ULL驱动开发学习】18.中断下半部(tasklet、工作队列、中断线程化)

下图表述了Linux内核的中断处理机制,为了在中断执行时间尽量短和中断处理需完成的工作尽量大之间找到一 个平衡点, Linux将中断处理程序分解为两个半部: 顶半部(Top Half) 和底半部(Bottom Half&#xff09…

C语言a---b

C语言的编译遵循贪心读法,也就是说,对于有歧义的符号,编译器会一直读取,直到它的意思完结; a---b,是a-- -b还是a- --b,根据贪心法则,读到第二个减号,意思完结&#xff0c…

你知道mp3转换器怎么用吗?分享在线音频转换mp3怎么弄

飒飒:嘿,你有没有想过如何将在线音频转换为mp3格式? 潇潇:是的,我确实有过这个需求。在网上找到了一些工具和方法,可以帮助我们完成这个任务。 飒飒:那太好了!你能告诉我一些详细的…

【新版系统架构】系统架构设计师教程全篇知识点提炼

第一章-绪论 架构的定义: 1、架构体现在组件中的一个系统的基本组织、彼此的关系和环境的关系及指导它的设计和发展的原则 2、系统是组织起来完成某一特定功能或一组功能的组件集 3、环境或者上下文决定了对这个系统的开发、运作、政策以及会对系统造成其他影响的…

开放式耳机哪个好?开放式耳机选购推荐

相比入耳式耳机,近几年流行的开放式耳机似乎更受大众欢迎,不入耳的设计,佩戴稳固舒适不容易掉落,也不伤耳,不仅能够提升幸福感还能听到周围环境声,避免在长期佩戴后舒适度下降的问题,对于产生的…

nginx日志分析,实时可视化工具goaccess

一款可以实时分析NGINX访问日志,并且支持可视化的软件 GoAccess - Visual Web Log Analyzer github如下:GitHub - allinurl/goaccess: GoAccess is a real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems or th…

使用npm和nrm查看源和切换镜像

一、使用npm查看当前源、切换淘宝镜像、切换官方源 (1)npm查看当前源: npm get registry (2)npm设置淘宝镜像源: npm config set registry http://registry.npm.taobao.org (3)n…

mysql函数练习

创建表sch 向表中加入数据 1、创建一个可以统计表格内记录条数的存储函数 ,函数名为count_sch() CREATE DEFINERroot% FUNCTION count_sch() RETURNS int(11) BEGINDECLARE total INT DEFAULT 0;#Routine body goes here...SELECT count(1) into total from sch;IN…

Openlayers实战:加载高德地图

在国内地图市场上,高德地图占据了重要的地位。Openlayers可以加载高德地图,这其中根据不同的参数,可以显示遥感地图,矢量地图等,可以显示中文,英文。 效果图 源代码 /* * @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN) * @此源代码版权归大剑师兰特所有…

2023西安电子科技大学杭州研究院|实验室介绍|夏令营

招募通知 西安电子科技大学杭州研究院2023年优秀大学生夏令营招募通知 西电杭收集表 https://docs.qq.com/form/page/DR0Faa2NKQ0Rqc0pC#/fill-detail 西电杭今年太火爆了 1200个人申请 123人入营 嘎嘎被拒 往年双非rank1 进西电还是比较容易 我认识的两个双非…

The 2022 ICPC Asia Xian Regional Contest(C/E/F/G/J/L)

原题链接:Dashboard - The 2022 ICPC Asia Xian Regional Contest - Codeforces 目录 J. Strange Sum F. Hotel C. Clone Ranran G. Perfect Word E. Find Maximum L. Tree J. Strange Sum 题意:思路:当我们选择in时,我们则可以…

Idea 修改默认 Maven 为自己的

每次我们打开新项目时,都要去配置一遍 maven,很麻烦,其实可以去修改 idea 里面默认的 maven 配置,这样后面不管是打开新项目还是老项目,就都是用的自己的 maven 了. 1.文件->新项目设置->新项目的设置 File->Other Settings -> Settings for New Project 2.然后和…