Skip to content

DNET_PythonFirstStep

nishi_74322014 edited this page Sep 11, 2026 · 1 revision

Pythonファースト・ステップ

インストール

本体

Pythonの該当節に移動しました。

pip

pipのインストール

最新のPythonをインストールすると自動的にpipもインストールされる。

パッケージのインストール

pip3 install XXXX

WARNINGが出たらアップデート

>python -m pip install --upgrade pip

その他

Jupyter Notebook

Jupyter Notebook

JupyterLab

JupyterLab

VSCodeプラグイン

Visual Studio Codeのプラグイン。

  • Visual Studio Codeをインストールする。
  • Visual Studio Codeを起動して、ファイルを拡張子*.pyで保存する。
  • 以下のように推奨の拡張機能が表示されるので、これをインストールする。

Visual Studio CodeでPython拡張機能をインストール

モード

インタプリタ

CMD or Anaconda Promptを起動する

  • Pythonのバージョン情報の確認

    python --version
    

Pythonインタプリタを起動する

  • Pythonインタプリタを起動

    python
    

Pythonインタプリタの実行

  • 算術計算

    >>>1+1
    2
    
  • データ型

    >>>type(10)
    <class 'int'>
    
  • 変数

    >>>x=10
    >>>print(x)
    10
    
  • リスト

    >>>a=[1,2,3,4,5]
    >>>print(a)
    [1,2,3,4,5]
    >>>a[0]
    1
    >>>a[4]
    5
    >>>a[4]=99
    >>>a[4]
    99
    >>>print(a)
    [1,2,3,4,99]
    
  • ディクショナリ

    >>>dic={'hoge1':1}
    >>>dic['hoge2']=2
    >>>print(dic)
    {'hoge1': 1, 'hoge2': 2}
    
  • boolと論理演算

    >>>hungry = True
    >>>sleepy = False
    >>>type(hungry)
    <class 'bool'>
    >>>not hungry
    False
    >>>hungry and sleepy
    False
    >>>hungry or sleepy
    True
    
  • if文

    >>>hungry = True
    >>>if hungry:
    ...    print("im hungry") # 半角スペースのインデントが必要
    ...
    im hungry
    >>>hungry = False
    >>>if hungry:
    ...    print("im hungry") # 半角スペースのインデントが必要
    ...else:
    ...    print("im not hungry") # 半角スペースのインデントが必要
    ...    print("im sleepy")
    ...
    im not hungry
    im sleepy
    
  • for文

    >>>for i in [1,2,3]:
    ...    print(i) # 半角スペースのインデントが必要
    ...
    1
    2
    3
    
  • 関数

    >>>def hello():
    ...    print("hello!")
    ...
    >>>hello()
    hello!
    >>>def hello(object):
    ...    print("hello " + object + "!")
    ...
    >>>hello("hoge")
    hello hoge!
    

Pythonインタプリタの終了

対話モードを終了するには、 exit() を実行する。

スクリプトファイル

Pythonスクリプトファイルに保存

テキストファイルに

print("im hungry")

と書いて、拡張子を*.pyとして保存する(例 hungry.py)。

Pythonスクリプトファイルを実行

cdでカレントディレクトリに移動して、

>python hungry.py
im hungry

基本

インデント

Pythonのインデントはコードブロックを意味するので、
むやみなインデント付与は出来ないようになっている。

インタプリタ(基本)

Pythonインタプリタの実行を参照。

変数

命名規則

  • 必ず半角英字で始める
  • 予約語との衝突はNG

数値と文字列

数値

  • 四則演算

  • 累乗

    2 ** 3
    
  • 割商

    10 // 3
    3
    
  • 割余

    10 % 3
    1
    
  • 指数表現

    • 1 * 10の7乗

      1.0e7
      
    • 1 * 10の-7乗

      1.0e-7
      

文字列

  • クォーテーション

    • シングル(')
      文字列中で(")を使う場合。

    • ダブル(")
      文字列中で(')を使う場合。

  • 演算

    • 連結

      >>> x = "hoge" + "hoge"
      >>> print(x)
      hogehoge
      
    • 繰り返し

      >>> x = "hoge" * 2
      >>> print(x)
      hogehoge
      
  • castメソッド

    int("2022") => 数値の2022
    
  • formatメソッド

    • 文字列中に変数値を挿入

      >>> month = 9
      >>> day = 1
      >>> temp = 30
      >>> '{}月{}日の気温は{}度です。'.format(month, day, temp)
      '9月1日の気温は30度です。'
      
    • 小数の桁数指定

      >>>num = 123.456
      >>>print('{:.1f}'.format(num))
      123.5
      
  • コメント

    • 1行

      # コメント
      
    • 複数行

      """
      コメント
      """
      

コレクション型

リスト

配列の事。

  • 定義

    hoge = ['aaa', 'bbb', 'ccc', 'ddd']
    
  • インデックス

    • 通常

      >>>hoge[0]
      'aaa'
      
    • 後ろから

      >>>hoge[-3]
      'bbb'
      
    • スライシング
      ややこしいが、対応する番号の要素の一つ前の区切りでスライスする。

      >>>hoge[1:3]
      ['bbb', 'ccc']
      
  • メソッド

    • 追加

      >>>hoge.append('xxx')
      >>>hoge
      ['aaa', 'bbb', 'ccc', 'ddd', 'xxx']
      
    • 削除

      >>>hoge.remove('aaa') # インデックス指定ではないっぽい
      >>>hoge
      ['bbb', 'ccc', 'ddd', 'xxx']
      
  • 文とか関数とか

    • del文

      >>>del hoge[0] # インデックス0の要素を削除
      >>>hoge
      ['ccc', 'ddd', 'xxx']
      
    • len関数

      >>>len(hoge)
      3
      

タプル

  • 定義後、変更が出来ないリスト
  • 定義は角括弧ではなく丸括弧を使う。

集合

  • 要素を順番や重複を考えない(C#のHashSetに近い)
  • 定義は角括弧・丸括弧ではなく中括弧({})を使う。

辞書

  • キー&バリュー(C#のDictionaryに近い)
  • 定義は角括弧・丸括弧ではなく中括弧({})を使う。

制御構文

真偽と演算子

bool型

  • 真 : True
  • 偽 : False

比較演算子

==
!=
>
<
>=
<=

論理演算子

and
or
not

in演算子

コレクション型のデータに特定の要素が含まれているかどうか

条件分岐

if(SelectとかSwitchは無い)

if 条件式A:
  ...
elif 条件式B:
  ...
else:
  ...

if

条件式Aが真(true)の場合に実行する処理

elif

条件式Aが偽(false)で条件式Bが真(true)の場合に実行

else

すべての条件式が偽(false)の場合に実行

繰り返し

foreach的なforのみ実装

基本形

  • オブジェクト(コレクション等)

    for 変数 in オブジェクト:
      実行する処理
    
  • 内部でbreakやcontinueが使える。

rangeを使う

  • 例1

    for num in range(5, 10):
      print(num)
    5
    6
    7
    8
    9
    
  • 例2

    for num in range(0, 10, 3):
      print(num)
    0
    3
    6
    9
    

複数要素を返す

  • enumerate(indexとvalue)

    hoge = ['aaa', 'bbb', 'ccc', 'ddd']
    for index, value in enumerate(hoge):
      print(index)
      print(value)
    0
    aaa
    1
    bbb
    2
    ccc
    3
    ddd
    
  • zip(複数のコレクション)

    hoge1 = ['aaa', 'bbb', 'ccc', 'ddd']
    hoge2 = ['xxx', 'yyy', 'zzz']
    for value1, value2 in zip(hoge1, hoge2):
      print(value1)
      print(value2)
    aaa
    xxx
    bbb
    yyy
    ccc
    zzz
    

関数・クラス

関数

定義と実行

  • 定義

    def 関数名(仮引数, ...):
      ...
      return 値
    
  • 実行

    関数名(実引数, ...)
    
  • 定義・実行 例

    • 定義例

      def hello_world():
        print("Hello")
        print("world")
      
    • 実行例

      hello_world()
      

様々な引数

  • 位置引数
    通常の引数

  • キーワード引数

    • 変数名を用いて値を渡す引数(位置に依らない)

    • オプションとしてデフォルト値が設定可能

    • 定義

      def 関数名(仮引数1=デフォルト値, 仮引数2=デフォルト値):
        ...
        return
      
    • 実行

      関数名(仮引数名1=実引数1, 仮引数名2=実引数2)
      
  • 可変長引数

    • * 関数中でタプルとして機能

      • 定義

        def 関数名(*Tuple):
        
      • 実行

        関数名(1, 2, 3, 4, 5, 6, 7, 8)
        
    • ** 関数中で辞書として機能(仮引数名がキー)

      • 定義

        def 関数名(**Dictionary):
        
      • 実行

        関数名(key1=1, key2=2, key3=3)
        
    • 可変長引数の後ろはキーワード引数のみ利用可能。

クラス

定義

class クラス名:
    def __init__(self, 引数, ...): #コンストラクタ
        ...
    def メソッド名1(self, 引数, ...): #メソッド1
        ...
    def メソッド名2(self, 引数, ...): #メソッド2
        ...

定義例

class Man:
    def __init__(self, name):
        self.name=name
        print("inited!")
    def hello(self):
        print("hello " + self.name + "!")
    def goodbye(self):
        print("good-bye " + self.name + "!")

実行例

m = Man("hoge")
m.hello()
m.goodbye()

インポート

インストール(モジュール)

インポートの前にインストールが必要なものもある。

  • インストールの確認

    >python -m pip list
    
  • インストールの実行

    >python -m pip install モジュール名
    

モジュール

  • モジュール≒ファイル名

  • 通常の利用

    • モジュールのインポート

      import モジュール名
      
    • モジュール内のクラスの利用

      obj = モジュール名.クラス名(...)
      
  • 別名の使用

    • モジュールのインポート

      import モジュール名 as 別名
      
    • モジュール内のクラスの利用

      obj = 別名.クラス名(...)
      

クラス(インポート)

  • モジュール名が省略可能になる。

  • クラスのインポート

    from モジュール名 import クラス名
    
  • モジュール内のクラスの利用

    obj = クラス名(...)
    

その他

オブジェクトの保存と復元

pickleのシリアライズとデシリアライズで保存と復元

  • 保存されるオブジェクト

    import pickle
    obj = '保存されるオブジェクト'
  • シリアライズ相当

    with open('sample.pickle','wb') as f:
       pickle.dump(obj, f)
  • デシリアライズ相当

    with open('sample.pickle','rb') as f:
       loaded_obj = pickle.load(f)
  • 復元されたオブジェクト

    print(loaded_obj)

参考

(元 Wiki では見出しのみで本文が無い。)

移行メモ

  • bool型の「偽 : Frue」は「False」の誤記のため修正した。
  • 比較演算子の「< =」(半角スペース混入)を「<=」に修正した。
  • クラスのインポートの構文「from import モジュール名 import クラス名」は Python の構文として誤りのため「from モジュール名 import クラス名」に修正した。
  • 関数の実行例で def hello(object): print("hello " + object + "!") に対する 出力が「hoge hello!」となっていたため、「hello hoge!」に修正した。
  • リストの len の例で、直前に del hoge[0] で 1 要素削除した後の 要素数が 4 のままだったため 3 に修正した。
  • 「集合」の説明「C#のListに近い」は、順番も重複も持たない集合の説明と合わないため 「C#のHashSetに近い」に修正した。
  • 文字列の繰り返しの例で変数名が Xx で不一致だったため x に統一した。
  • 「WLS2/Linux上で」→「WSL2/Linux上で」。
  • 「命名規則」配下は本文の無い見出しだったため箇条書きにまとめた。
  • 同名の見出し(「インストール」「クラス」「インタプリタ」)が複数あり、 GitHub Wiki ではアンカが衝突するため、括弧で文脈を補って一意にした。
  • マイクロソフト系技術情報 Wiki(techinfoofmicrosofttech.osscons.jp)への URL リンクは、移行済みの Visual Studio Code に張り替えた。
  • 添付は 1 点で、DNET_PythonFirstStep_1.png として取得した。

Tags: 移行, Python, 入門, インタプリタ, pip, リスト, 辞書, 制御構文, 関数, クラス, pickle

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally