[maya] python:関数

関数っていったい何なのか。
Maya Python 完全リファレンスには関数という用語の意味はプログラミングサイクルで違うよーみたいに書いてました。
ようは自分で設定したスクリプトのセットみたいなことだと簡単に考えてます。
melのプロシージャもそういう理解で僕の中で終了しました!
適当に理解しているので詳細はググってね!笑

melではプロシージャーと言われてるもので

global proc [返り値の型] プロシージャー名(引数)
{
    MEL文;
}

よく見るやつですね。
melについてはいくらでもググれば情報が溢れるほど出てくるので調べてみて下さい!
(pythonも腐るほど出てきますけどね!!!)

melはprocキーワードで定義されてますがpythonはdefキーワードです。

def 関数名(引数):
    コマンド

次にpythonの引数についてです。
pythonの引数は柔軟に作られていてシンプルになるよう設計されているんだそうです。
ほぷしぃ:第24回 関数の基本
Webエンジニアのためのライフハック:初めてのPython(4) 関数でさえオブジェクトであるPython
↑のサイト様が参考になりました。
引数を記述する方法は4つの方法があるそうです。
簡単な例で引数の違いをメモしておきたいと思います。
1.基本的な引数

def function(args):
    print(args)
function('test')
#結果
#test

また引数が2つ以上の場合は、カンマ「,」で引数を区切って定義する。

def function(args1,args2):
    print(args1 + ' ' + args2)
function('Hello','World')
#結果
#Hello World

2.デフォルト引数。引数が指定されていない場合、デフォルト値を使用するように定義します。

def function(args='default'):
    print(args)
function()
#結果
#default
function('test')
#結果
#test

3.シーケンス型の可変長引数。引数宣言の前に*演算子(アスタリスク演算子)を使用する。
すると、複数の引数をタプル型で受けてくれる。

def function(*args):
    print(args)
function()
#結果
#()
function('a', 'b', 'c')
#結果
#('a', 'b', 'c')
function(*['a', 'b'])
#結果
#('a', 'b')

4.辞書型の可変長引数。引数宣言の前に**演算子(ダブルアスタリスク演算子)を使用する。
引数の前に「**」を付けると、キーワード付き引数を辞書型として受けてくれる。

def function(**args):
    print(args)
function()
#結果
#{}
function(keyword1='a', keyword2='b', keyword3='c')
#結果
#{'keyword3': 'c', 'keyword2': 'b', 'keyword1': 'a'}
function(**{'keyword1':'a', 'keyword2':'b'})
#結果
#{'keyword2': 'b', 'keyword1': 'a'}

上記の引数は同時に指定することが出来るが、紹介した順番に指定しないとエラーとなる。
基本的な引数→デフォルト引数→シーケンス型の可変長引数→辞書型の可変長引数

最後に関数の戻り値について。
戻り値って説明するとなんだろうってことでググってみました。
Yahoo!知恵袋:pythonを勉強しています。 return文と戻り値について教えていただけませんか?
教えて!goo:戻り値の意味がわかりません…
知恵袋だとかの解答や例えが噛み砕いてわかりやすかったですね。
関数の処理が影響している例をメモしておきます。

def function(args):
    list[len(args):] = ['1', '2', '3']
list = ['a']
function(list)
print(list)
#結果
#['a', '1', '2', '3']

↑リストはミュータブルなオブジェクトなので関数による変更が、関数が終了した際に反映されていることを表しています。
ようはリストに[‘1’, ‘2’, ‘3’]を追加しろっていう関数を作り、変数listに対してこの関数を使用することで結果[‘a’, ‘1’, ‘2’, ‘3’]と追加されています。
また状況によっては関数内の操作の結果を新しい変数内に格納したいときなどがあった場合、returnステートメントを関数内に入れることで指定された値が送られます。
簡単な例文です。

def function(args):
    result = args + 1
    return result
print(function(5))
#結果
#6

↑は説明するまでもないほど簡単ですが、引数に1を加算しろっていう関数です。
しかしreturnを使用しないと関数内では計算結果を変数resultに代入しますが、関数の外にはその結果は出てきません。
もしreturnを使用していないと戻り値には「None」が代入されます。
なので結果を戻すためにreturnを使用し、正しい戻り値を表示させるわけです。
戻り値はとくにイミュータブルなオブジェクトのタプル、文字列、数値などを使用するときは必要になってきます。

以上関数についてでした!!!

  1. コメントはまだありません。

  1. トラックバックはまだありません。