【Python】Pythonと変数【基本講座】
Pythonの特徴として変数の扱い方が、他のプログラム言語と異なるところがあります。別の言語から来た人は、変数の振る舞いに少し戸惑うかもしれません。基本的な話ではありますが、Pythonを勉強するうえで重要なポイントですので、しっかりと理解してください。
Python 変数は、代入?参照?
変数って何?
プログラム言語において、変数とは、値を格納するための領域を表します。重複のない名前でアクセスすることが条件となります。
Pythonでは、変数名とは、値に付けたラベルをイメージすると良いとされています。
テクニック的な話になりますが、変数名は、関連する要素の分かりやすい名前をすべきです。単純に「t」とか「i」でも問題ありませんが、数か月後、ソースの修正した時や他人にソースを修正させるとき、何の変数なのか視認できないのは、パフォーマンスを悪くすることにつながるので、分かりやすい名前にしましょう。
一般的には、変数に値を代入するというが?
変数に値を代入する。
プログラミングを少しやったことのある方には、何をいまさらと思うかもしれません。
C言語で
1 2 3 4 5 |
char x = "ABC"; char y = x; x[0] = "X" |
と書いた時、あなたなら、yの値は何て答えるだろうか?
それは、自明とばかりに、「x = “XBC” y = “ABC”」
と答えるだろう。
問題ない。正解である。
では、なぜそのような思考に至ったのか?
それも自明だろう。
y = x;
の時、xの値をyに代入 しているからだ。
そのためyの値は、”ABC”のままである。
何度も言うがプログラムを少しかじった人なら直感的にそう考えるのだ。
Pythonでは、変数を参照している。
Pythonでは、代入という概念は捨てた方が良い。便宜上使う参考書もあるが、厳密にいうと間違いである。
それを検証すべく下記のコードを見てほしい。
1 2 3 4 5 6 7 |
x = "ABC" y = x x[0] = "X" print(y) |
先ほどと同じコードでPythonに直しただけである。
これは、どんな値になるのだろうか?
今までのプログラミングの知識がある勤勉な方は、先ほどと同じ回答を示すと思う。
しかし、それは間違いであることに気づくだろう。
正解は、x = y = “XBC”
である。
どうしてこうなったのか?
それは、簡単で、代入をしているわけではなく、Pythonの変数は、ある値を参照しているに過ぎないということだ。
先の説明で、値にたいして、変数はラベルを付けているイメージと言ったがまさにその通りの振る舞いである。
Pythonを学ぶ上で覚えておきたいことは、
変数a = 変数b
というのは、コピーではないということ。
実際、複雑なコードを書いた時、やってしまいがちな、Pythonあるあるではあるので十分注意されたい。
ミュータブルとイミュータブルのお話
先ほど、代入と参照の話をしたが、値を変えることができないのかというとそうではない。値が変更できる型とそうでない型があるということを知っておいてほしい。
それを、前者からミュータブル。後者をイミュータブルという。
それぞれ列挙しておく。
ミュータブル
- list
- dict
- class
イミュータブル
- int
- float
- str
- tuple
- bool
- range
- type(None)
Pythonおすすめ書籍
最初の2冊は初心者向けです。Effectiv Pythonはこの2冊を終えてから読むとかなりわかりやすく感動できると思います。
|
|
|
独学に限界を感じていませんか?
プログラミング初学者がもっとも陥りやすいのは、挫折です。
なぜ?挫折するのでしょうか?
それは独学だけでは、限界があるからです。
でも、あきらめてはそこで終わりです。
プログラミング言語習得には、メンターと呼ばれる教えてくれる人間が必要です。メンターがいれば、挫折する確率がグンと低くなります。
困ったときに、いつでも教えてくれる先生がいれば心強いと思いませんか?
でも、先生って、学校行く時間もないし、、、そんなこと思っていませんか?
今は、Webでプログラミングが学べる時代なんですよ!
でも、お高いんでしょ?
うーん。これは考え方なのかもしれないんですが、例えば、こう考えてはどうでしょうか?
スクール代金が1コース20万円として、その後、ITエンジニアに就職したら、平均30万円以上は、稼げるのですぐに元が取れますよね?
この数値は、リクナビなど転職サイトを検索すればすぐ出てくる数値です。
今一時の出し渋りにより、一生の賃金を損することになるか、倍以上手に出来るかは、自明ですよね?
でも、どこが良いのかわからない。
そこで、厳選したプログラミングスクールと動画サイトをご紹介いたします。
- TechAcademy [テックアカデミー]※スクールの数が多い!返金制度あり!
- 【WebCampPRO】※WEB系に特化したスクール!返金制度あり!
- 【CodeCamp】※無料体験レッスンを受講すると受講料が1万円OFF!
- Python 3 入門+アメリカのシリコンバレー流コードスタイル
- 【Web開発初心者向け!】Web開発入門完全攻略 充実の18時間コース※動画で学びたい人はこちら!格安もあり!
- フロントエンドエンジニアになりたい人の Webプログラミング入門