Python スクリプトにおいて計算結果の数値や文字列などを覚えさせておいて、
後で使いたいときには変数というものを使います。
例えば、ある同じ数値をスクリプト中の複数の箇所で使いたい場合には、変数に数値を覚えさせておいて、数値の代わりに使うと便利です。
変数には代入という操作で数値や文字列を入れておくことができます。
また、変数には名前がついていて、
規則にしたがう限り好きな名前でいくつでも変数を定義することができます。
MEL の変数と比べて違うところは色々ありますが、
仕組みとして大きく違うのは Python の変数はリファレンスになっているというところです。
MEL の変数には数値や文字列がそのまま入っていますが、
Python の変数はオブジェクトを指しているリファレンス(場所を指す番地のようなもの)が入っています。
(C 言語のポインターのようなものです)
Python の変数を使うときには以下の事項を注意してください。
list = []
for n in range(5):
list.append(n)
>>> x = [1,2,3] >>> 2 in x True >>> 5 in x False >>> "test" in x False >>> x.append("test") >>> "test" in x True
global x
とすると変数 x は外部変数となります。
x = 3 y = 4 def test1(): x = 1 print x,y def test2(): y = 2 print x,y test1() # 1 4 test2() # 3 2 def test3(): global x x = 3 print x,y test3() # 3 2 print x # 3
以下に、C 言語の知識がある人のために、C 言語と比べたときの文法上の違いをあげておきます。
半径を 1 づつ小さくしながら、
3 個の球を接しながら並べる Python スクリプトを、関数と変数を使って作ってみましょう。
関数の引数(r)に 1 個目の球の半径を与えて実行すると、
2 番目以降の球は半径が 1 づつ小さくなって作られてゆくようにします。
import pymel.core as pm
def make3Sphere1(r):
pm.sphere()
pm.scale([r, r, r])
pm.sphere()
r -= 1
pm.scale([r, r, r])
m = 2 * r + 1
pm.move([m, 0, 0])
pm.sphere()
r -= 1
pm.scale([r, r, r])
m += 2 * r + 1
pm.move([m, 0, 0])
import pymel.core as pm
def make3Sphere1(r):
pm.sphere()
pm.scale([r, r, r])
pm.sphere()
r -= 1
pm.scale([r, r, r])
m = 2 * r + 1
pm.move([m, 0, 0])
pm.sphere()
r -= 1
pm.scale([r, r, r])
m += 2 * r + 1
pm.move([m, 0, 0])