Pythonの引数は全て参照渡しの件について
[http://bugrammer.g.hatena.ne.jp/nisemono_san/20111210/1323444429:title=[みんな以外のPython]参照渡し地獄変 -- Pythonにおける参照]
「Pythonの代入は基本的に参照である」が躓きポイントらしい。えー、参照渡しだっけ?と思って確認した。値渡しと考えてコード書いて問題なし。理屈は前述のURLに書いているけど、私にとってのpythonは目的を達成するためのツールなので深くは入り込まない。
# -*- coding: utf-8 -*- import os def test_hikisu( oneline): oneline = oneline + "_moge"; def test_hikisu2( val): val = val + 1 return val def test_hikisuu_list( in_list , out_list ) : for o in in_list : o = o + "T" out_list.append(o) return True if __name__ == "__main__": # print("Hello World") # v3.xからこの形式 t = "hoge" test_hikisu( t ) print("hoge : "+t) t_v = 1 test_hikisu2(t_v) print("v = %u" % t_v) # 特にインクリメントされない test_hikisuu_list(in_list, out_list) in_list = ["A","B","C"] out_list = [] print(in_list) print(out_list)
結果
Hello World hoge : hoge v = 1 ['AT', 'BT', 'CT'] ['A', 'B', 'C']
print文がv2.xとv3.xで異なっていた。
なんと、Ver.3系から「print構文」から「print関数」に変更されたとの事。