まぐらぼ

日々の雑記を書いています。

Pythonの引数は全て参照渡しの件について

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関数」に変更されたとの事。