ITの隊長のブログ

ITの隊長のブログです。Rubyを使って仕事しています。最近も色々やっているお(^ω^ = ^ω^)

【Python3】いまさらなんだけど、Pythonでdictionaryを引数で渡す書き方

知らんかった。。。ていうか見たことある書き方だったけど、ずっとリファレンス渡しだと勘違いしていました。。。orz

def two(image_path, **start_point):
    print(start_point.x) # 768
    print(start_point.y) # 256

two(image_path, x=768, y=256)

追記

もっと詳しく書けばよかったね。

two()って関数は引数を2つもつ。しかし、呼び出し側は引数が3つある。

これは第一引数はimage_pathで、第二引数、第三引数はdictionaryとなって渡されることになる。

ちなみに、「じゃあdictionaryが続く引数は渡せるの?」って疑問について。(多分そう思った人いるでしょ?)

>>> def test_function(**dic, **dic2):
  File "<stdin>", line 1
    def test_function(**dic, **dic2):
                           ^
SyntaxError: invalid syntax
>>> def test_function(*dic, **dic2):
...     print(dic)
...     print(dic2)
... 
>>> test_function((1,2), x=1, y=2)
((1, 2),)
{'x': 1, 'y': 2}

見ての通り、続けてはダメっぽい。

dictionaryだけでなく、tuple(タプル)も続けてはダメである。

>>> def test_function(*dic, *dic2):
  File "<stdin>", line 1
    def test_function(*dic, *dic2):
                            ^
SyntaxError: invalid syntax

↓ここはもっと詳しい。ありがとうございますm(_ _ )m

qiita.com

あれ? じゃあ参照渡しとかはどうやるんだろう。。。。

qiita.com

ほう?