🎉欢迎来到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
中编写我们需要使用的函数,为了演示方便,定义了一个两数求和的函数:
python
def adder(a,b):
return a + b
接下来在main.py中调用该函数:
python
import add_method
c = add_method.adder(1,2)
print(c)
三、不同文件夹中的调用
在不同文件夹之间调用时,需要设置对应文件夹的root路径。
先看一下不设置root路径导致的情况:
新建一个项目,在项目中新建两个文件夹分别存放main和函数:
先关注在main.py
中调用adder.py
中的函数,编写adder.py
:
python
def adder(a,b):
return a + b
在main.py
中调用:
python
from fx import adder
c = adder.adder(2,2)
print(c)
结果发现是可以调用成功的。
叮叮叮~ 在如下情况中如果不设置root路径,将无法运行成功:
编写pow.py
:
python
def powplus(a,b):
return a*b
我们在adder.py
的函数中调用powplus()
函数:
python
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
:
python
from fx import adder
c = adder.adder(2,2)
print(c)
_,e= adder.add_pow(1,1)
print(e)
注意调用格式:
python
from fx import adder
运行结果报错:
解决方法:将fx文件夹设置为root路径:
对于英文版的PyCharm,设置root路径参考:Pycharm中,python如何调用另一个文件的类或者函数。
设置好root之后,该程序即可正常运行。
取消root设置的步骤:
四、使用小例子
对于文章【Python】Python实现串口通信(Python+Stm32)中Python实现串口通信的代码:
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
:
python
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("发送失败!")
导入调用:
python
import serial
from time import sleep
from DefSerial import defserial
文件main.py
:
python
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)
运行结果:
注意:在调试运行的时候,需要保证串口正确打开。
🧸结尾