Posts match “ interpreter ” tag:

摘要

IPython是一個互動式的python interpreter,這邊介紹幾個常用的小技巧。
如果系統尚未安裝,則執行 sudo pip install ipython來安裝(在這之前python要先裝好!),一起體驗它的威力。

筆記大綱

  1. 查看屬性和方法
  2. 編輯程式碼
  3. 神奇指令
  4. 呼叫作業系統指令

查看屬性和方法

  1. [TAB] 列出所有可用的子物件和方法,例如輸入os.後按下[TAB]會顯示os底下所有的可用函式。

如果輸入os.[TAB]沒反應,那就是你忘了import os!!!

In [6]: os.[TAB]
Display all 218 possibilities? (y or n)
os.EX_CANTCREAT      os.chdir             os.nice
os.EX_CONFIG         os.chmod             os.open
os.EX_DATAERR        os.chown             os.openpty
os.EX_IOERR          os.chroot            os.pardir
os.EX_NOHOST         os.close             os.path
os.EX_NOINPUT        os.closerange        os.pathconf
os.EX_NOPERM         os.confstr           os.pathconf_names
os.EX_NOUSER         os.confstr_names     os.pathsep

這方法只能用在查詢,不能自動補齊有點可惜,要有[TAB]自動補齊功能我推薦bpython,除了列出所有可用成員外,也可以直接按[TAB]選取,相當方便,如下圖。
bpython-tab.jpg

  1. %pdoc 模組模組 ? 會出現該模組或方法的文件,%psource 模組%pfile 模組模組 ?? 會顯示程式碼。以下是輸入os??的結果:
Type:       module
String Form:<module 'os' from '/usr/lib/python2.7/os.pyc'>
File:       /usr/lib/python2.7/os.py
Docstring:
OS routines for Mac, NT, or Posix depending on what system we're on.

This exports:
  - all functions from posix, nt, os2, or ce, e.g. unlink, stat, etc.
  - os.path is one of the modules posixpath, or ntpath
  - os.name is 'posix', 'nt', 'os2', 'ce' or 'riscos'
  - os.curdir is a string representing the current directory ('.' or ':')
  - os.pardir is a string representing the parent directory ('..' or '::')
  - os.sep is the (or a most common) pathname separator ('/' or ':' or '\\')
  - os.extsep is the extension separator ('.' or '/')
  - os.altsep is the alternate pathname separator (None or '/')
  - os.pathsep is the component separator used in $PATH etc
  - os.linesep is the line separator in text files ('\r' or '\n' or '\r\n')
  - os.defpath is the default search path for executables
  - os.devnull is the file path of the null device ('/dev/null', etc.)

Programs that import and use 'os' stand a better chance of being

編輯程式碼

輸入edit可以直接進入編輯器,這邊的編輯器是採用系統環境變數EDITOR的設定,我這邊是vim,那麼就會開啟vim來編輯。

def calculate_mode(freq):
    """
    找出眾數。
    :param freq:
    :return:
    """
    # 先找出最高頻率

    highest_freq = max(freq.values())

    # 如果某個數字的頻率最高,則加入眾數

    mode = [number for number, freq in freq.items() if freq == highest_freq]
    if not (1 <= len(mode)):
        mode = None
    else:
        mode.sort()
    return mode

神奇指令

像上面所提到的%pdoc, %psource, %pfile等等指令都是IPython的神奇指令(magic command),這些指令都是用%開頭,如果automagic是開啟的狀態,就可以直接輸入指令而不用在另外加%,一般預設是開啟,不知道是否有開啟就直接輸入任一個神奇指令看是否會出錯。 要關閉就輸入automagic,要開啟就輸入%automagic

以下列一些常用的神奇指令:

  • %magic 查看所有的神奇指令。
  • %edit 編輯並執行檔案。
  • %edit -x filename 編輯但不執行檔案。
  • %edit 5:20 filename 編輯檔案第5行、第20個字元。
  • %pwd 顯示目前目錄。
  • %time statement 計算程式碼執行的時間。

更完整的指令可以查詢這個IPython Quick Ref Sheets

呼叫作業系統指令

如果要在IPython呼叫系統指令,只需要在指令面前加入!就好,例如要執行ping指令。

In [9]: !ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=45 time=12.9 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=45 time=13.3 ms