[Part I. GIMP基礎功]

[Part II. 一種效果的誕生]
[Part III. Script-Fu的秘密]

23.9 螢光字,摸索轉碼的過程,與須注意的語法特點

  • 接續前節,使用前節更改後的 Scheme 程式碼,將它改成 Python 程式碼 。
  • 本節介紹單步執行的「第三種方式」,修改成在 Console 內可一行一行執行的 Python 程式碼 。


善用文字編輯器「取代」的功能
  • 有些地方,可以直接手動更改。
  • 有些地方,手動更改,太累人了。
  • 有些地方,無規則可尋,就一定要手動更改,改到最後,讓程式碼完全符合 Python 的語法,並且符合 Python-Fu 的規範 。
  • 文字編輯器,都有「搜尋」與「取代」的功能,可幫助修改程式碼。
  • 例如:(define ...) 結尾的 ) 是要刪除的
    • 利用換行符號的逃脫字符 \n 就可以輕鬆刪除結尾的 )
    • 也就是,在文字編輯器「取代」功能的對話框內,將 )\n 取代為 \n


語法的差別:
  • 和大多數程式語言一樣,Python 使用等號 = 來指派變數值。
  • Python 的變數不需事先宣告或定義,直接就可以指定變數值。
  • Scheme 使用(define ...) 指定變數值。
  • 因此,(define 取代為 空字串,也就是,刪除 (define 。


語法的差別:
  • 加減乘除,Python 採用中序運算式(infix)。
  • Scheme 前序運算式(prefix),也就是,把 + - * / 視為一種函數。


語法的差別:函數的呼叫
  • Scheme 函數的參數值用「空白」隔開。
  • Python 函數的參數值用一個括號()括住,中間用逗點「, 」隔開,因此,
  • 將「空白」取代為 "逗點加空白"「, 」

  • Scheme 的 car 函數會取出串列的第一個元素 。
  • car 函數的使用都常伴隨變數值指派的動作,因此,
  • 將 (car 取代為 等號 =
  • 將 (gimp 取代為 pdb.gimp
  • 將 減號 - 取代為 _ 底線
    • gimp-edit-fill 改成 pdb.gimp_edit_fill
    • bg-layer 改成 bg_layer
    • BACKGROUND-FILL 改成 BACKGROUND_FILL


  • 將 分號 ; 取代為 # 井號


語法的差別: RGB 顏色的指定
  • Scheme是使用 list 的資料結構,使用撇號 ' 定義 list 。
  • (63, 252, 0) Python是使用 tuple 的資料結構。
  • '(63 252 0) 要更改為 (63, 252, 0)


其它需要注意的細節
  • 大寫表示常數,記得「減號 - 」要換為「底線 _ 」,RGB-IMAGE 要換為 RGB_IMAGE 。
  • 括號多一個,括號少一個,括號沒對齊,是最大的陷阱,也是容易犯的錯誤。