Progate Python

Pythonの開発環境を用意しよう!

windowsOS

  1. https://www.python.org/
  2. Downloads タブ
  3. Python3.8.3 のボタン
  4. Add Python 3.6 to PATH にチェックを入れて Install Now
$ python --version

macOS

  • Homebrew のインストール(略)
  • pyenv のインストール
brew install pyenv
pyenv -v
## 以下は, bash のとき
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
## 以下は, zsh のとき
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc

pyenv install --list ## 切り替え可能なリストの表示
pyenv install 3.8.2
pyenv versions ## git branch みたいな感じ(versionではなくversions)
pyenv global 3.6.5 ## git checkout みたいな感じ
python --version ## これで通常の python コマンドで指定したバージョンが実行できる

Python I

  • 文末に ; 等は不要
  • コメントは #(複数行のコメントはなく, 三重クォートの文字列にする)
  • 文字列はシングルクォートでもダブルクォートでもよい。
  • 5/2 は 2.5, 5//2 は 2
  • クラスは PascalCase, それ以外は snake_case
  • 文字列の連結は "hoge" + "fuga"
  • print は文字列や数値型など複数の型を引数にとれる。最後に改行される。
  • 文字列の連結で数値型が混ざるときは型変換が必要 ("answer:" + str(5))
if 条件:
    処理 
elif 条件:
    処理 # インデントで意味が変わる
else:
    処理
  • 真理値は True False
  • and or not
  • 変数の受け取り: 変数 = input('コンソールに表示したい文字列') ただし, 受け取ったのは文字列扱い

Python II

  • リスト: [], append,
    • for 変数名 in リスト:
  • ディクショナリ: Python 3.7以降はキーの順序を保証する。
    • 辞書名[新しいキー名] = 値 : 辞書に新しい要素を追加
    • ただし、辞書にすでにあるキー名を指定すると、値の追加ではなく更新
    • for 変数名 in 辞書: 変数名に格納されるのはキー
  • while 条件式:
  • break, continue

Python III

  • 関数定義 def 関数名(仮引数の並び):
    • デフォルト引数, return
  • モジュール(hoge.py) -> hoge がモジュール名になる。
    • 呼び出される側は同じ
    • 呼び出す側は import hoge (拡張子不要, クォーテーション不要)
    • hoge.関数名() で呼び出せる。
  • import random
    • random.randint(x, y) : xからyまでの整数をランダムに取得

Python IV

class Hoge:
    def __init__(self, value): # インスタンス生成時に自動で呼び出される(つまり, コンストラクタ)
        self.value = value # Hoge(5) のようにインスタンスを生成
    def method1(self): # メソッドの第一引数は変数を使わなくても self とする。__init__ も同様
        # self はインスタンス自身(つまり hoge_instance など)
        # 呼び出しは hoge_instance.method1() となる
        pass #何もしない文
    def method2(self,x):
        print(self.value + round(x)) # round(小数) で小数点第一位を四捨五入
  • from モジュール名 import クラス名 のようなインポートも可能

Python V

  • クラスの継承 class クラス名(親クラス名):
    • デフォルトでそのまま親クラスのインスタンスメソッドが引き継がれる
    • 親クラスにないメソッドは同様に追加可能
    • 親クラスにあるメソッドはオーバーライドされる(親クラスのメソッドは見えなくなる)
    • その場合でも, 呼び出しsuper().メソッド名() とすることで, 親クラスのメソッドを呼び出せる。(2つ目の括弧の中身は親クラスのメソッドを呼び出すときの実引数)
def __init__(self, name,price,amount):
    super().__init__(name,price)
    self.amount()