LWZ*_*LWZ 3 python matlab numpy
到目前为止,我一直在编写一个脚本 Python程序,主要用于文本处理和数据分析.
现在我想把我的一个旧的Matlab仿真项目带到Python/NumPy.在那个项目中,我有一个主程序(在一个.m文件中),有几十个函数(每个都在一个单独的.m文件中).在所有函数中都使用了全局变量,因此我不必将它们作为每个函数的参数输入.但是,如果不运行主程序,我就无法运行/测试单个函数,因为全局变量将是未定义的,或者它调用另一个文件中的另一个函数.加上文件组织是一团糟.添加新功能,改变现有功能,特别是主程序是很痛苦的.
这次我想做正确的事情.我希望程序有一个合适的架构,如果它是正确的词.首先,我需要知道组织所有这些功能.我不认为每个小函数都有自己的文件是个好主意.我想也许我可以将这些功能分成几组,每组可以是一个文件?它会是一个.py文件还是其他类型的文件?其次,我希望它易于扩展,我可以轻松添加新功能.
我相信必须有一些标准的方法来做到这一点,但我不知道.
还有一个问题:当我运行MATLAB程序,它完成后,我仍然对所有变量的工作区,所以我还是可以检查数字,使地块,等等.但是当我通过IPython的shell中运行我的python脚本,它事后清除一切.工作区有类似的东西吗?
任何时候你有一堆共享相同全局状态的函数:
foo = 1
def do_something1():
print foo
def do_something2():
global foo
foo += 1
Run Code Online (Sandbox Code Playgroud)
你最好定义一个类:
class NoGlobal(object):
"""docstring -- Pick a better name for your class please :)"""
def __init__(self):
self.foo = 1
def do_something1(self):
print self.foo
def do_something2(self):
self.foo += 1
Run Code Online (Sandbox Code Playgroud)
现在你没有共享全局状态,你可以尽可能多地运行你的"模拟",而不会弄乱你的全局 - 只需实例化一个新的类实例,你就可以开始新的模拟了.
至于离开它以便你可以在脚本终止后玩弄东西,这就是-i选项的用途:
python -i yourscript.py
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
338 次 |
| 最近记录: |