【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中编写我们需要使用的函数,为了演示方便,定义了一个两数求和的函数:

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)

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

🧸结尾


相关推荐
用户9562562542917 小时前
跟做:Firecrawl 单页转 Markdown 再丢进沙箱总结
python·api
威哥爱编程17 小时前
模拟面试智能体开发实战 02:回答等半分钟,谁还愿意练?把服务端和流式输出搭起来
python·agent·harmonyos
威哥爱编程17 小时前
模拟面试智能体开发实战 01:面试挂了都不知道挂在哪?用 Python 给自己造一个随叫随到的 AI 面试官
python·agent·harmonyos
2601_9679801117 小时前
Python行情API量化 02:顺序拉 20 要 2 秒?并发批量把时间压到 0.5 秒
python·api·限流·并发·量化
伞伞悦读17 小时前
【第81期】特征缩放怎么选:标准化、MinMax 与 Robust 的原理、泄漏对照和完整实验
人工智能·python·深度学习·机器学习
新*18 小时前
从一段 WebSocket 代码聊开:bytes 不是 zlib、binaryType 决定一切,15MB 大消息的零拷贝优化
javascript·python·websocket·性能优化·blob·zlib·arraybuffer
卷无止境20 小时前
mathmodel-figure-templates 以及两个上手案例
后端·python
锋行天下21 小时前
服务器 Python 2.7 装不了 langgraph-cli?用本地生成 Dockerfile 曲线救国
人工智能·后端·python
一条大祥脚21 小时前
深入理解 PyTorch FlexAttention:从 Score Mod 到 Mask Mod 的稀疏加速之道
人工智能·pytorch·python·注意力机制·flex attention·可编程注意力
2601_967980111 天前
Python自动化办公:模块、库与样式调整教程
python·excel·自动化办公·openpyxl·样式调整