5倍速!メールマガジン
外部アカウントで登録
受講生の声
新着の講座投稿
新着の講座コメント
新着のノート投稿
投稿一覧へ新着のノートコメント
表示できる投稿はありません。
サイト運営者紹介
小川 慶一講師/教材/システム開発者紹介
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
表示できる投稿はありません。
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
伊久間博之さんの投稿
(投稿ID: 5404)
以下のようなコードを書いて確認してみました。
VBAの値渡し
伊久間博之さんのコメント
(コメントID: 7906)
ミュータブルなオブジェクトをvbaでいう値渡しをする方法はないという理解でいいでしょうか?
小川 慶一さんのコメント
(コメントID: 7907)
以下、「くろのて」さんの記事から。
Pythonの引数には 値渡し という概念はなく、すべて参照が渡ります。
参照(リファレンス)が渡るというと書換可能なイメージがあるかもしれませんが、 Pythonでの書換可否は(基本的に)オブジェクトのミュータブル(可変)・イミュータブル(不可変)によって決まります。
代表的なイミュータブルなオブジェクトを以下に列挙しました。
・int
・str
・bool
・None
・tuple
・frozenset
これらはオブジェクト自身を変更することができないため、 関数で値渡しが行われているように感じるかもしれませんが、単なるオブジェクトの性質によるものです
https://note.crohaco.net/2014/python-argument-intro/#%E5%8F%82%E7%85%A7
伊久間博之さんのコメント
(コメントID: 7908)
やはり参照渡ししかないのですね。
すっきりしました!
伊久間博之さんのコメント
(コメントID: 7909)
これも理解いたしました。
田中 宏明さんのコメント
(コメントID: 7910)
いい質問ですね。
Pythonが参照渡しだけであることをご自身で答えを出されたこともすごいです。
私はミュータブル(可変)が参照渡し、イミュータブル(不可変)が値渡しという、
短絡的な理解をしていました。
勉強になりました。
伊久間博之さんのコメント
(コメントID: 7911)
ただ、その結論に自信がなかったのですっきりしました!