kurumi-bioの雑記帳

プログラミング、パソコン、ペット、 犬、お出かけ

ChatGPTでプログラミングを学ぼう 第4回 「Pythonの変数」

こんにちは、kurumi-bioです。

ChatGPTと会話しながらPythonを学んでいきます。

環境

前回の振り返り

学習内容

前回は、print関数の構文を学習しました。
fileパラメータに出力先を指定することで標準出力だけでなく、ファイル、文字列、標準エラー出力に出力することができることを確認しました。

宿題

  • open関数の構文と使い方
  • 構文中の":"と";"の意味

Pythonの学び方

前回はprint関数を深堀しましたが、やみくもに進めていくのは効率が悪いので、 何を学ぶべきかChatGPTに聞いてみました。

Pythonの基礎文法

ChatGPTが教えてくれた順番通りに勉強を進めていきます。
まずは、Pythonの基礎文法を聞いてみました。

変数の使い方

Pythonの変数についてChatGPTに聞いてみました。

◆テストコード

a1 = "a1"
1a = "1a"

◆実行結果

実行結果の説明 「変数名は英小文字で始める」ことが推奨されていましたので、 試しに英小文字で始まる変数と数字で始まる変数を宣言してみました。
その結果、数字で始まる変数名はinvalid syntaxのエラーが発生しましたので、 変数名を数字から始めてはダメなことが確認できました。

◆テストコード

あ = "い"
print(あ)

◆実行結果

実行結果の説明 変数名を日本語にしてみましたが、こちらは問題なく動作しました。
ただ日本語OS以外で動作するのか不明なので、基本的には日本語の変数名は使わない方が無難だと思います。

◆テストコード

i = 10
s = "Hello"

print(type(i))
print(type(s))

◆実行結果

実行結果の説明 型の確認です。ChatGPTの回答通りの結果を得ることができました。

◆テストコード

i = 10
s = "Hello"
print("i=", i, type(i))
print("s=", s, type(s))

i = s
print("i=", i, type(i))

i = 0
print("i=", i, type(i))

◆実行結果

実行結果の説明 変数の再代入を試してみました。変数iは整数型、文字列型、整数型と代入する値によって型が変化しています。動的型付け言語なので、このような動作になりますが、慣れないと気持ち悪いです。

予約語を確認

「変数名に予約語を使用しない」ことが推奨されていましたので、
予約語を確認して変数名に使った場合の動作を確認してみました。

◆テストコード

FALSE = "FALSE"
False = "False"

◆実行結果

実行結果の説明 予約語のFalseを変数名として使用した場合は、can't assign to keywordのエラーが発生しました。 ちょっとしっくりこないエラーですが予約語を使うとエラーが発生することは確認できました。
また、変数名は大文字小文字を区別しているので全て大文字の変数名はエラーになりませんでした。

◆テストコード

IS = 1
is = 1

◆実行結果

実行結果の説明 予約語のisを変数名として使用した場合は、invalid syntaxのエラーが発生しました。 変数名として使ったからエラーというよりは、構文として間違っているためエラーになった感じですが、 やはりエラーになることが確認できました。

明示的に変数の型を指定する方法

◆テストコード

x: int = 10
print(type(x))

◆実行結果

実行結果の説明 変数xは、型アノテーションで指定した通り整数型でした。

◆テストコード

x: int = "a"
print(type(x))

◆実行結果

実行結果の説明アノテーションで整数型を明示しましたが、文字列を代入したら文字列型になりました。
変数の型は、明示的に宣言しても動的に変わってしまうので見た目のみと考えた方が良さそうです。

アノテーション

mypyという静的型チェックツールが存在することがわかりましたので確認してみます。
ちなみにChatGPTにmypyのインストール方法を聞いたら下記の回答がありました。

  1. pipをアップグレードする
    python -m pip install --upgrade pip
  2. mypyをインストールする
    pip install mypy

◆テストコード

x: int = 10
s: str = 1

x = "abc"
s = "abc"

◆実行結果

実行結果の説明 実行には問題がありませんが、静的型チェックツールのmypyを使用したらエラーが発生しました。
2行目は、s: str = 1です。明示的に文字列型を指定していますが整数値を代入しているためエラーになりました。
4行目は、x = "abc"です。整数型を宣言していますが、文字列を代入したためエラーになりました。
チェックツールを使うことで意図しない値(型)が代入されていないか確認することができることがわかりました。

宿題

  • 変数の型
  • open関数の構文と使い方
  • 構文中の":"と";"の意味

最後までご覧いただきありがとうございます