当前位置: 代码网 > it编程>前端脚本>Python > 【Python】PyCharm中调用另一个文件的函数或类

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

2024年07月28日 Python 我要评论
讲解如何在PyCharm中调用另一个文件中的函数或类,同时以串口通信的例子对不同文件中的函数进行了调用。

csdn

遇见未来

一、说明

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

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com