如果你熟悉Matlab,你知道你可以使用定義文件中的任何已定義函數,如果它在工作區路徑中,則不需要調用或導入。
ipython
是否有任何機制模仿matlab的行爲。我目前的工作流程是將代碼寫入Sublime文本並粘貼到ipython
(看起來很愚蠢)。你會建議任何其他方式來實現高效如何在ipython控制檯中輸入python代碼文件?
我懶得這樣做,但以某種方式在Ipython的啓動文件中定期自動導入代碼可能會工作。也許ipython館長會考慮這個。
如果你熟悉Matlab,你知道你可以使用定義文件中的任何已定義函數,如果它在工作區路徑中,則不需要調用或導入。
ipython
是否有任何機制模仿matlab的行爲。我目前的工作流程是將代碼寫入Sublime文本並粘貼到ipython
(看起來很愚蠢)。你會建議任何其他方式來實現高效如何在ipython控制檯中輸入python代碼文件?
我懶得這樣做,但以某種方式在Ipython的啓動文件中定期自動導入代碼可能會工作。也許ipython館長會考慮這個。
如果你正在運行在您的工作空間Python解釋器,你可以導入文件:
/path/to/workspace$ ls
some_files youtube.py other_files
/path/to/workspace$ python
Python 2.7.3 (default, Dec 18 2012, 13:50:09)
Type "help", "copyright", "credits" or "license" for more information.
>>> import youtube
# I know there's a method get_video_thumbnail in my file
>>> youtube.get_video_thumbnail('http://youtu.be/IAooXLAPoBQ')
'http://img.youtube.com/vi/IAooXLAPoBQ/hqdefault.jpg'
>>> youtube.NO_PREVIEW
'/static/img/no_preview.png'
>>> # etc.
如果編輯的Python文件,您可以重新導入,它將覆蓋模塊命名空間和其內容在翻譯。
,但在這種情況下,源文件中的更改不會實時影響解釋器。很可能,我需要重新導入模塊。 – erogol
@Erogol是的,你需要再次寫入'import'。但是現在我沒有更好的解決方案:) –
如果編輯模塊,則可能需要調用reload(youtube)。 – moorepants
我想你將不得不在每次代碼更改時重新導入你的模塊。 在每次函數調用之前,您都可以使用from my_module import *
來避免模塊名稱,儘管此構造運行緩慢。
我很驚訝沒有人建議使用%edit
魔術功能。
從another answer我給了同一主題,如果你設置崇高成爲你的編輯器,你可以簡單地運行:
In [72]: %ed somefile.py
在保存&接近,IPython中會自動執行該文件中包含的代碼 - 所以不是複製/粘貼,而是讓IPython發揮它的魔力。
我從來沒有使用崇高,所以我不知道如何工作。作爲替代,您可以查看LightTable如何與IPython進行通信,併爲此寫入Sublime擴展。
+1。與Matlab相比,這似乎是Python的最大不便之處。 –
關鍵的區別在於(傳統的)Matlab在文件和函數之間有1對1的匹配。在Python中,一個文件包含一個模塊,它可以有很多功能。對於小型項目的交互式工作,Matlab方法很方便。但是這使得管理大型項目變得更加困難。多年來,Mathworks(和Octave)以各種方式放寬了1-1相關性。 – hpaulj
@Erogol,看看[ipython notebook](http://ipython.org/notebook.html)。它更接近於Matlab所用的交互式工作風格,但同時它比Matlab控制檯功能強大得多。 –