有沒有辦法將開放的Mathematica筆記本分開,以便它們不共享任何變量?如何讓它變成共享但不是全部?Mathematica - 分離筆記本
回答
是的,有。我建議閱讀與Mathematica上下文相關的文檔。簡而言之,所有變量都屬於某個上下文(名稱空間),並且所有變量都可以通過形式爲「ContextName`varName」的完全限定名稱進行訪問。如果只使用「varName」,Mathematica將在$ContextPath
中搜索上下文(嘗試評估變量$ContextPath
以查看它是什麼),並將使用找到該變量的第一個上下文。此外,每個筆記本都指定一個上下文(存儲在變量$Context
中),其中存儲了所有變量(除非使用完全限定名稱)。
默認情況下,對於所有筆記本電腦,上下文是「全局」。同樣默認情況下,所有筆記本的$ ContextPath都包含「全局」上下文(以及「系統」等)。最終的結果是變量在筆記本之間共享,這可能會很快變得令人討厭。但是,有一個簡單的解決方案。要創建一個筆記本的「私人」背景下,評估以下:
SetOptions[EvaluationNotebook[], CellContext -> Notebook]
這款筆記本將被分配一個唯一的上下文(計算變量$Context
,看看它是什麼)。此外,全球範圍內將contextPath中(前嘗試與上述SetOptions[...]
後評估$ContextPath
,看看發生了什麼事情)
[更新中移除:作爲新的數學堆棧交換所指出的rcollyer,設置此選項作爲新筆記本的默認設置,請執行以下操作:打開Options Inspector(Ctrl + Shift + O),將範圍(在頂部的下拉列表中)從「Selection」更改爲「Global Preferences」;在左邊展開節點單元格選項 - >評估選項,並更改CellContext設置]
現在,這裏是如何創建一個共享上下文「筆記本」:
Begin["SharedContext`"];
varShared1 = "Shared string";
End[];
或者,您也可以」 VE剛剛輸入
SharedContext`varShared1 = "Shared string";
現在,您可以使用完全合格的名稱(「SharedContext`varShared1」將在任何筆記本電腦的工作),也可以在上下文中添加到$的contextPath:
AppendTo[$ContextPath, "SharedContext`"]
如果您在所有筆記本中都這樣做,varShared1將變爲可見而沒有完整的名稱。總之,上下文的工作方式與許多其他搜索路徑非常相似。但是,有很多細微之處(例如,如果已經在其他某個上下文中定義了符號,則Begin [「SharedContext`」]/End []塊可能無法按預期工作 - 符號的現有上下文將會用來代替SharedContext`),所以我推薦一個健康的實驗和細讀文檔。
我不確定這是否明智,但無論如何。
這是兩個筆記本電腦的原理圖解決方案。它可能是一般化的,但並不簡單。
打開兩個筆記本電腦
在他們每個人進入菜單 (評估 - >筆記本電腦的默認 背景 - >獨此筆記本) 這樣,符號不再被共享。
在每個筆記本輸入一些 像
Context[]
拿到筆記本 語境現在在每個筆記本進入 以下代碼
。
Needs["Experimental`"];
SetAttributes[f, HoldFirst];
f[s_, val_] := [email protected]["Notebook$$17$799580`",
[email protected]@s, "=", [email protected]];
ValueFunction[t] = f
凡Notebook$$17$799580
是其他筆記本電腦的情況下(這應該可以,當你想分享一個符號,就能夠獲得「自動」,但這只是一種概念證明。
現在進入
f[symbolToShare]
就是這樣。
您可以雙向共享價值,或只在一個方向,進入F [X]只有在筆記本ÿ你希望作爲x的源值。其他Notebook將獲得更新後的值,但不會將其更新回來。
HTH!
編輯
邁向自動化:
你可能會得到所有其他打開的筆記本上下文以更新共享符號:
ctxs[]:= Complement[Contexts["Notebook$$*"],
[email protected][{Context[]},
StringCases[Contexts["Notebook$$*"], __ ~~ "Private" ~~ __]]]
所以你˚F會變成這樣的事情(不測試)
f[s_, val_] := [email protected][#,
[email protected]@s, "=", [email protected]]&/@ctxs[];
爲了讓所有的筆記本電腦獨特的環境開放選項督察並設置 單元選項 → 評估選項 → 細胞語境到Notebook
。
- 1. Mathematica純文本筆記本
- 2. Mathematica筆記本搞砸了
- 3. Mathematica筆記本的版本控制
- 4. 在Jupyter筆記本筆記本,分配降價或標題類型我想配置我Jupyter筆記本電池
- 5. 分享datalab筆記本
- 6. 分配從IPython筆記本
- 7. 在Mathematica中適合筆記本寬度ImageSize
- 8. Mathematica,從另一個筆記本調用函數
- 9. 從Mathematica中的另一個筆記本獲取列表值
- 10. 如何創建選項卡式Mathematica筆記本
- 11. mathematica中便攜式筆記本電腦的相對路徑
- 12. 在Mathematica筆記本中重置/刪除/遺忘變量
- 13. mathematica從命令行啓動前端和eval筆記本
- 14. 如何配置Mathematica 9自動評估所有筆記本?
- 15. Ipyton筆記本/ jupyter
- 16. ipywidgets jupyter筆記本
- 17. 在Jupyter筆記本
- 18. 如何將每個音樂筆記從matlab中分離出來
- 19. wxPython:調整筆記本內的筆記本大小
- 20. Python - Jupyter筆記本:「可信任的筆記本」選項灰色
- 21. jupyter筆記本+ seaborn +%matplotlib筆記本 - >格不可見
- 22. 在IPython的另一個筆記本中包含筆記本?
- 23. 爲什麼不Jupyter筆記本命令打開筆記本?
- 24. 無法打開IPython筆記本中的現有筆記本
- 25. iPython筆記本自動創建新的空白筆記本
- 26. Jupyter筆記本:多筆記本到一個內核?
- 27. 在現有筆記本服務器上打開ipython筆記本
- 28. 在anaconda ipython筆記本命令打開jupyter筆記本?
- 29. 適用於Android的筆記本電腦/筆記本電腦
- 30. 閱讀圖像中Jupyter筆記本Jupyter筆記本
是的。比我的好多了。刪除。 – 2011-02-04 14:32:35