文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-10-06 07:23

关注

🎉欢迎来到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 + b    d = 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 serialfrom time import sleepdef recv(serial):    while True:        data = serial.read_all().hex()        if data == '':            continue        else:            break        sleep(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 == '':            continue        else:            break        sleep(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 serialfrom time import sleepfrom DefSerial import defserial

文件main.py

import serialfrom time import sleepfrom 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

🧸结尾


来源地址:https://blog.csdn.net/m0_56262476/article/details/131710163

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯