爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 9155|回复: 1

[混合编程] [已收纳]python之工程模式初体验

[复制链接]

新浪微博达人勋

发表于 2019-8-16 19:50:08 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 15195775117 于 2021-1-31 18:34 编辑

无论IDL、Java等,实现工程模式,是代码发布成软件的必由之路

--------------------------------------------
新建个工程/项目---example
其中包括2个包,每个包里有2个模块
main.py是主程序
(主程序命名无所谓?只要是项目最高目录层级的py文件即可?)
飞鸽截图20190816193449.png
新建包和模块的时候注意不要选错了,不是file和fold,而是module和package:

py工程.png

新建包后,其中会自动生成__init__.py文件(和其他什么的)
该文件可以是空的,也可以写代码,
在导入包时会自动执行这些代码。
__init__.py的模块名就是包名!
该文件类似于实例化类就会执行的“构造方法”。
--------------------------------------------
plus_and_minus包的__init__.py的内容:
print('导入了加减法py包!')
--------------------------------------------
Multiplication_and_division包的__init__.py的内容:
print('导入了乘除法py包!')
--------------------------------------------
plus.py内容:
#加法模块
class class1:
    def __init__(self,x,y):
        print('导入了加法模块!')
        self.x=x
        self.y=y
    def f(self,x,y):
        return self.x+self.y
if __name__=='__main__':
    c=class1(2,3)
    print(c.f(2,3))

--------------------------------------------
minus.py内容:
#减法模块:
class class2:
    def __init__(self,x,y):
        print('导入了减法模块!')
        self.x=x
        self.y=y
    def f(self,x,y):
        return self.x-self.y
if __name__=='__main__':
    c=class2(2,3)
    print(c.f(2,3))

--------------------------------------------
Multiplication.py内容:
#乘法模块:
class class3:
    def __init__(self,x,y):
        print('导入了乘法模块!')
        self.x=x
        self.y=y
    def f(self,x,y):
        return self.x*self.y
if __name__=='__main__':
    c=class3(2,3)
    print(c.f(2,3))

--------------------------------------------
division.py内容:
#除法模块:
class class4:
    def __init__(self,x,y):
        print('导入了除法模块!')
        self.x=x
        self.y=y
    def f(self,x,y):
        return self.x/self.y
if __name__=='__main__':
    c=class4(2,3)
    print(c.f(2,3))

--------------------------------------------
main.py内容:
#主程序:
from plus_and_minus.plus import class1
from plus_and_minus.minus import class2
from Multiplication_and_division.Multiplication import class3
from Multiplication_and_division.division import class4
c1=class1(3,2)
print('加法结果:',c1.f(3,2))
c2=class2(3,2)
print('减法结果:',c2.f(3,2))
c3=class3(3,2)
print('乘法结果:',c3.f(3,2))
c4=class4(3,2)
print('除法结果:',c4.f(3,2))

--------------------------------------------
主程序运行结果:
导入了加减法py包!
导入了乘除法py包!
导入了加法模块!
加法结果: 5
导入了减法模块!
减法结果: 1
导入了乘法模块!
乘法结果: 6
导入了除法模块!
除法结果: 1.5

py工程结构.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2019-8-17 11:58:12 | 显示全部楼层
工程的导出与导入-------------------------

导出:把工程文件夹整个挪走即可
导入:project->new project->Existing directory->Location->Create
导入py工程.png
工程中删除文件不会删源文件,但IDL可以选择同时删除源文件
对比:
IDL工程右击可选择导出:
1.png
导出的结果也是文件夹形式,导入时注意名称要自己改下,IDL不会自动识别:
2.png

-------------------------
总结:
python和IDL工程,从工程目录里复制出来,跟导出的效果是一样的,除了脚本都带有个配置文件
python导入工程会自动识别工程名,但IDL不会
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表