【Python】PyCharm中调用另一个文件的函数或类 | 您所在的位置:网站首页 › pycharmif中变量标红 › 【Python】PyCharm中调用另一个文件的函数或类 |
🎉欢迎来到Python专栏~PyCharm中调用另一个文件的函数或类 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒🍹 ✨博客主页:小夏与酒的博客 🎈该系列文章专栏:Python学习专栏 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏📜 欢迎大家关注! ❤️ 🎉 目录-PyCharm中调用另一个文件的函数或类 一、说明二、同一文件夹中的调用三、不同文件夹中的调用四、使用小例子 一、说明Python技能树:Python入门技能树。 版本:Python 3.10。 IDE:PyCharm。 二、同一文件夹中的调用新建一个项目,需要在main.py中调用add_method.py中的函数,注意文件的目录关系。main.py和add_method.py是在同一个文件夹下: 先在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和函数: 先关注在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运行结果报错: 解决方法:将fx文件夹设置为root路径: 对于英文版的PyCharm,设置root路径参考:Pycharm中,python如何调用另一个文件的类或者函数。 设置好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文件中,注意文件的目录关系: 文件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)运行结果: 注意:在调试运行的时候,需要保证串口正确打开。 🧸结尾 ❤️ 感谢您的支持和鼓励! 😊🙏 📜您可能感兴趣的内容:【Python】Python实现串口通信(Python+Stm32)【Verilog HDL】FPGA-testbench基础知识 【Arduino TinyGo】【最新】使用Go语言编写Arduino-环境搭建和点亮LED灯【全网首发开源教程】【Labview机器人仿真与控制】Labview与Solidworks多路支配关系-四足爬行机器人仿真与控制 |
CopyRight 2018-2019 实验室设备网 版权所有 |