AviSynth入門/引数の省略とデフォルト値

はじめに

前回のAviSynth入門/書式と引数では、省略できる引数と省略できない引数があることを紹介しました。今回は、実際に引数を省略する方法と、その際に注意すべき点を解説します。

デフォルト値

引数を省略すると、あらかじめ設定されているデフォルト値(初期値)が適用されます。たとえば、KenKunNRフィルタの引数のデフォルト値は、strengthが256, radiusが2, そしてthresholdは6です。

省略の仕方

引数リストの後ろの引数から順に省略

引数リストの一番最後の引数から順に省略したいなら、単純にその部分の指定を行わないだけで結構です。

KenKunNR(256, 2)

上記の例では、一番最後の引数thresholdが省略されています。この場合、thresholdには、デフォルト値の6が適用されます。

KenKunNR(256)

radiusとthresholdの2つの引数が省略されています。radiusにはデフォルト値の2が、thresholdにはデフォルト値の6が適用されます。

引数リストの途中の引数を省略

たとえば、strengthを省略して、radius=1, threshold=24を指定したいとします。このとき、以下のように記述すると、期待したのとは異なる結果になるでしょう:

# 誤った例
KenKunNR(1, 24)

なぜなら、KenKunNRの(clipを除いた)最初の引数はstrength、2つ目の引数はradiusであるため、strength=1, radius=24と解釈されてしまうからです。

もし、引数リストの途中の引数を省略したいなら、名前付き引数を使って指定します。

# 正しい例
KenKunNR(radius=1, threshold=24)

この例では、radiusは1、thresholdは24、そしてstrengthはデフォルト値の256が適用されます。

すべての引数を省略

KenKunNR()

(clip以外の)すべての引数を省略しました。それぞれの引数のデフォルト値が適用されます。

KenKunNR

また、この場合にかぎり、カッコを省略することもできます。

名前なし引数と名前付き引数の併用

名前なし引数と名前付き引数を併用する場合には、注意が必要です。

# 誤った例
KenKunNR(strength=256, 2)

上記のように、名前付き引数で指定したあとに名前なし引数を使おうとすると、エラーが出ます。

e.png

エラー内容を見ると、名前付き引数の"strength"が1回よりも多くKenKunNRに渡された(the named argument "strength" was passed more than once to KenKunNR)とあります。どうやら、strength=256だけでなく、その次の2もstrengthであると解釈されたようです。

# 正しい例
KenKunNR(256, threshold=24)

このように、途中までは名前なし引数で、途中から名前付き引数という指定は可能です。

まとめ

  • 引数を省略するとデフォルト値(初期値)が適用される。
  • 引数リストの後ろの引数から順に省略したい→単純にその引数を指定しない。
  • 引数リストの途中の引数を省略したい→名前付き引数を使用する。
  • すべての引数を省略したときは、カッコも省略できる。
  • 名前なし引数と名前付き引数の併用
    • 名前付き引数の後ろに名前なし引数を使用することはできない。
最終更新日時: 2014-03-11 (火) 03:47:01 (3862d)