0

如果存储运算形成的“中间量”

 2 years ago
source link: https://www.v2ex.com/t/807880
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

V2EX  ›  Python

如果存储运算形成的“中间量”

  gossip · 10 小时 42 分钟前 · 549 次点击
断断续续接触 python 其实有一年了,没拿它干过重活儿,还是非常新手的状态。但是进来有个问题让我思考更多:
楼主本身背景经济学,我们经常用的软件包括 R,Stata 这种。笔者更熟练用 Stata

现在在用 python 做点题目,问题描述如下:
好比说我有两个 python 文件 A 和 B,由于两个功能的完全不同,而且为了以后逻辑清楚,特意分成了两个文件写

A 执行之后经过复杂的运算会产生一个列表 m, 我的 B 文件就从 m 开始继续加工 m

这样一来,我只需要运行 B 就行了,想知道如何让 A 中运算产生的 m 在运行 B 的时候自动就当做已知的(当前那环境中就有的)

就好像 A 和 B 连起来一起执行一样?

--------------------------------------------------
我遇到这个问题,就在想我貌似之前很少碰到这个问题,于是回想了下这种情景用 Stata 是如何处理的。
是这样的:
一般 A 文件先参与运算,算完之后打开 B 文件,只要 B 文件开头不写清空当前内容,那么 A 得到的结果自然在内存中,接着用就是了。
又或者:
A 文件先参与运算,算完了之后把整个结果(通常是数据集,类似于 python 中的 dataframe )保存成 Stata 的 dta 文件就行,运行 B 的时候,开头调入整个 dta 文件,就 OK 了。

这个问题麻烦在于,我 A 生成的是一个列表,如果我选择 with open.... write 一个文本文件当然可以,然后再从 B 中写一个 with open 读出来用一个列表接收,当然可以,但总觉得“不是那个味道”。

所以感觉 python 这种没有一个变量框全局地储存变量还是与数据软件挺大的不同呢,但今晚遇到问题了,才更有理解一些。

但我觉得,应该是更大的问题是我不太懂 python 的所谓“模块”的概念,既然一切 py 文件皆是模块,我是否可以在 B 中引入 A 中的结果呢,我知道可以引入 A 中的函数等,但是通过 A 运算得到的 m 有没有好的办法呢?

(我的 A 文件就类似于一个面向过程的流水账,一步步计算出结果的这种)
----------------------------------------------------
话比较啰嗦,谢谢大家了

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK