狠狠撸

狠狠撸Share a Scribd company logo
他人の書いた Python スクリプトを
ステップ実行で理解する
2021-11-20
PyCon mini Shizuoka 2021
西本卓也 @24motz / @nishimotz
1
おまえ誰よ
? 広島 → 東京 → 京都 → 東京 → 広島
? 大学教員 → フリーランス/リモートワーク/エンジニア
? NVDA 日本語チーム
? 視覚障害者のための画面読み上げソフト
? PyCon mini Hiroshima / すごい広島 with Python
? Python Boot Camp
? TA : 広島、岡山、山口
2
夫婦 + 犬(8歳) + 猫(1歳)
アンナ ハコ
4
5
内容
? 素材
? Python Boot Camp テキストから引用改変
? デバッガの操作の基本
? Visual Studio Code の設定と機能
? Python におけるステップ実行
6
デバッガは(たぶん)不滅
7
デバッガとは (Wikipedia)
? デバッグ作業を支援するコンピュータプログラムのこと
? ブレークポイント
? ステップ実行
? ステップイン
? ステップオーバー
? ステップアウト
? 変数確認/変数書き換え
8
すべての行をステップ実行でカバーする
? ブレークポイント設定 → デバッグ開始 → ステップ実行 → 継
続
def fizzbuzz(num):
print('a')
print('b')
print('c')
print('d')
return num
for num in range(1, 101):
fizzbuzz(num)
1回目はステップインで
下の階層もステップ実行
2回目はステップオーバーして
下の階層に入らない
9
ステップオーバー
? 下の階層に入らないで1行ずつ実行
def fizzbuzz(num):
print('a')
print('b')
print('c')
print('d')
return num
for num in range(1, 101):
fizzbuzz(num)
10
ステップイン
? 下の階層にどんどん入りながら1行ずつ実行
def fizzbuzz(num):
print('a')
print('b')
print('c')
print('d')
return num
for num in range(1, 101):
fizzbuzz(num)
11
ステップアウト
? ひとつ上の階層に戻るまで実行
def fizzbuzz(num):
print('a')
print('b')
print('c')
print('d')
return num
for num in range(1, 101):
fizzbuzz(num)
上の階層で
1行分の処理が
終わった状態
12
ブレークポイント
? 関数の実行を止めたいなら中身の1行目がブレークポイント
def fizzbuzz(num):
print('a')
print('b')
print('c')
print('d')
return num
for num in range(1, 101):
fizzbuzz(num)
ここは関数が呼ばれるたびに止まる
def の次にここがステップ実行される
13
ステップ実行の始め方
? 他人が書いたコード
? デバッガそのものの練習になる
? 他の開発者のサポートやメンター
? デバッグ
? オープンソースのプログラムの勉強や改造
? 動かして理解する方が早い場合
? pip install したモジュール
? 後述
14
pdb : 標準装備のデバッガ
? OSC 2021 Online/Hiroshima (9月18日 陶山さん)
15
IDLEのデバッガ
16
Visual Studio Code + Python 拡張
17
18
メニューとショートカット
? F5 : デバッグの開始
? 必要であれば拡張機能のインストールから
? Shift+F5 : デバッグの停止
? F9 : ブレークポイント
? F10 : ステップオーバー
? F11 : ステップイン
? macOS は mission control の設定と衝突
? Shift+F11 : ステップアウト
19
インタープリターを選択
? 選択肢から選ぶだけ
20
デバッガで仮想環境(venv)を有効化
? インタープリターの選択肢として仮想環境を選ぶ
21
構成(configuration)
? Python File : 現在アクティブな Python ファイルをデバッグ
22
ブレークポイントを設定
? 行番号の左をクリックして赤いマルをつける (またはF9キー)
23
breakpoint() = pdb 互換
? 書いた行の直後の行で止まる
24
編集画面の右上の実行ボタンからも
25
ブレークポイントで停止した状態
? 継続 / ステップオーバー / ステップイン / ステップアウト / 再起動 / 停止
26
条件ブレークポイント
? 通過回数(ヒットカウント)
? 評価式
27
ログメッセージ : 出力だけ行う
? 出力先はデバッグコンソール
28
デバッグコンソール
? 式を入力すると値を表示できる
29
ウォッチ式
? 毎回デバッグコンソールで表示しなくても
30
launch.json : 構成を保存
31
自動生成される launch.json
? Syntax Error が出たらコメント行を削除
32
"cwd": "${fileDirname}"
? カレントディレクトリのファイル読み書きのデバッグなど
33
"justMyCode" : false
? requests の中もステップ実行
34
requests の connection pooling
35
Jupyter のデバッグ
? セルごとに Debug Cell できる
36
リスト内包表記
? ステップオーバーで何回止まる?
? 100回
[fizzbuzz(num) for num in range(1, 101)]
37
テストとステップ実行の相性
? doctest は動くが警告が出る
? テストツールによってはデバッガと衝突する可能性
38
5374 = 自治体のゴミの日がわかる
? 富士市
? fuji.5374.jp
? 広島市
? hiroshima.5374.jp
? iCal 対応に不具合
? 9月
? すごい広島 with Python で議論
? 富士市の convert_ical.py を使う検討
? データの持ち方やデプロイ方針が違うので手直し中
39
まとめ
? VS Code の Python デバッガ
? 無料
? エディタに一手間加えるだけで使える
? シンプル、追加ファイルは .vscode/launch.json だけ
? UIやプロトコルが言語に依存しない
? デバッガの作法は普遍的
? 視覚的なデバッガは嬉しい
? お気に入りの pip を読んで勉強しよう

More Related Content

What's hot (20)

PPTX
先駆者に学ふ? MLOpsの実際
Tetsutaro Watanabe
?
PPTX
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
Shota Imai
?
PDF
GPU と PYTHON と、それから最近の NVIDIA
NVIDIA Japan
?
PPTX
ラボラトリーオートメーションのためのソフトウェア思想教育(非プログラマ―が知っておくべきプログラミングの本质)
Tokoroten Nakayama
?
PPTX
Amazon AthenaでSageMakerを使った推論
西岡 賢一郎
?
PDF
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
Shuyo Nakatani
?
PPTX
プロジェクトマネージャのための机械学习工学入门
Nobukazu Yoshioka
?
PDF
【DL輪読会】SUMO: Unbiased Estimation of Log Marginal Probability for Latent Varia...
Deep Learning JP
?
PDF
ミリシタを支える GAE/Go
Google Cloud Platform - Japan
?
PDF
搁罢叠における机械学习の活用事例
MicroAd, Inc.(Engineer)
?
PDF
マッチングサービスにおける碍笔滨の话
cyberagent
?
PPTX
GitHub ActionsでiOSのCIを実現しよう
Shinya Nakajima
?
PDF
机械学习システム构筑実践ガイド
yusuke shibui
?
PDF
フ?ロタ?クトの强い轴を作るフ?ロタ?クトマネシ?メントフレームワーク
kumiko koshiro
?
PPTX
事业の进展とデータマネジメント体制の进歩(+プレトタイプの话)
Tokoroten Nakayama
?
PDF
TVM の紹介
Masahiro Masuda
?
PDF
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
Preferred Networks
?
PDF
Microsoft Dataverse for Teams の裏側をみてみよう
Teruchika Yamada
?
PDF
ナレッジグラフ推论チャレンジの绍介
KnowledgeGraph
?
PPTX
Triplet Loss 徹底解説
tancoro
?
先駆者に学ふ? MLOpsの実際
Tetsutaro Watanabe
?
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
Shota Imai
?
GPU と PYTHON と、それから最近の NVIDIA
NVIDIA Japan
?
ラボラトリーオートメーションのためのソフトウェア思想教育(非プログラマ―が知っておくべきプログラミングの本质)
Tokoroten Nakayama
?
Amazon AthenaでSageMakerを使った推論
西岡 賢一郎
?
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
Shuyo Nakatani
?
プロジェクトマネージャのための机械学习工学入门
Nobukazu Yoshioka
?
【DL輪読会】SUMO: Unbiased Estimation of Log Marginal Probability for Latent Varia...
Deep Learning JP
?
ミリシタを支える GAE/Go
Google Cloud Platform - Japan
?
搁罢叠における机械学习の活用事例
MicroAd, Inc.(Engineer)
?
マッチングサービスにおける碍笔滨の话
cyberagent
?
GitHub ActionsでiOSのCIを実現しよう
Shinya Nakajima
?
机械学习システム构筑実践ガイド
yusuke shibui
?
フ?ロタ?クトの强い轴を作るフ?ロタ?クトマネシ?メントフレームワーク
kumiko koshiro
?
事业の进展とデータマネジメント体制の进歩(+プレトタイプの话)
Tokoroten Nakayama
?
TVM の紹介
Masahiro Masuda
?
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
Preferred Networks
?
Microsoft Dataverse for Teams の裏側をみてみよう
Teruchika Yamada
?
ナレッジグラフ推论チャレンジの绍介
KnowledgeGraph
?
Triplet Loss 徹底解説
tancoro
?

Similar to 211120 他人の書いたPythonスクリプトをステップ実行で理解する (7)

PPTX
cs-11. Python の条件分岐と繰り返し,ステップ実行
kunihikokaneko1
?
PDF
DATUM STUDIO PyCon2016 Turorial
Tatsuya Tojima
?
PDF
Django_fukuoka
ShuyaMotouchi1
?
PPTX
Django_Fukuoka
Shuya Motouchi
?
PDF
Python02
XMLProJ2014
?
KEY
ひのきのぼうだけで全クリ目指す
AromaBlack
?
PDF
LLdeade Python Language Update
Atsushi Shibata
?
cs-11. Python の条件分岐と繰り返し,ステップ実行
kunihikokaneko1
?
DATUM STUDIO PyCon2016 Turorial
Tatsuya Tojima
?
Django_fukuoka
ShuyaMotouchi1
?
Django_Fukuoka
Shuya Motouchi
?
Python02
XMLProJ2014
?
ひのきのぼうだけで全クリ目指す
AromaBlack
?
LLdeade Python Language Update
Atsushi Shibata
?
Ad

More from Takuya Nishimoto (20)

PPTX
221217 SwiftはPythonに似ている
Takuya Nishimoto
?
PPTX
220427-pydata 統計?データ分析 特集
Takuya Nishimoto
?
PPTX
220126 python-datalake-spark
Takuya Nishimoto
?
PPTX
211020 すごい広島 with OSH 2021.10
Takuya Nishimoto
?
PPTX
210917 オープンセミナー@広島のこれまでとこれから
Takuya Nishimoto
?
PPTX
210911 これから始める電子工作とMicroPython
Takuya Nishimoto
?
PPTX
210728 mpy
Takuya Nishimoto
?
PPTX
210630 python
Takuya Nishimoto
?
PPTX
210526 Power Automate Desktop Python
Takuya Nishimoto
?
PPTX
210428 python
Takuya Nishimoto
?
PPTX
200918 hannari-python
Takuya Nishimoto
?
PPTX
200429 python
Takuya Nishimoto
?
PPTX
200325 flask
Takuya Nishimoto
?
PPTX
200208 osh-nishimoto-v2
Takuya Nishimoto
?
PPTX
191208 python-kansai-nishimoto
Takuya Nishimoto
?
PPTX
191101 nvda-sightworld-nishimoto
Takuya Nishimoto
?
PPTX
191114 iotlt-nishimoto
Takuya Nishimoto
?
PPTX
191030 anna-with-python
Takuya Nishimoto
?
PPTX
190916 nishimoto-nvda-pyconjp
Takuya Nishimoto
?
PPTX
190925 python-windows
Takuya Nishimoto
?
221217 SwiftはPythonに似ている
Takuya Nishimoto
?
220427-pydata 統計?データ分析 特集
Takuya Nishimoto
?
220126 python-datalake-spark
Takuya Nishimoto
?
211020 すごい広島 with OSH 2021.10
Takuya Nishimoto
?
210917 オープンセミナー@広島のこれまでとこれから
Takuya Nishimoto
?
210911 これから始める電子工作とMicroPython
Takuya Nishimoto
?
210728 mpy
Takuya Nishimoto
?
210630 python
Takuya Nishimoto
?
210526 Power Automate Desktop Python
Takuya Nishimoto
?
210428 python
Takuya Nishimoto
?
200918 hannari-python
Takuya Nishimoto
?
200429 python
Takuya Nishimoto
?
200325 flask
Takuya Nishimoto
?
200208 osh-nishimoto-v2
Takuya Nishimoto
?
191208 python-kansai-nishimoto
Takuya Nishimoto
?
191101 nvda-sightworld-nishimoto
Takuya Nishimoto
?
191114 iotlt-nishimoto
Takuya Nishimoto
?
191030 anna-with-python
Takuya Nishimoto
?
190916 nishimoto-nvda-pyconjp
Takuya Nishimoto
?
190925 python-windows
Takuya Nishimoto
?
Ad

Recently uploaded (9)

PPTX
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
PDF
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
PDF
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
PPTX
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
PDF
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
PPTX
色について.pptx .
iPride Co., Ltd.
?
PDF
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
PDF
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
PDF
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
色について.pptx .
iPride Co., Ltd.
?
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?

211120 他人の書いたPythonスクリプトをステップ実行で理解する

Editor's Notes

  • #15: https://www.youtube.com/watch?v=525SyowtXH8&list=PL1EP7zsxqFT91hSv3akx7w_N3KhyOJi_d https://docs.python.org/ja/3/library/pdb.html
  • #35: https://stackoverflow.com/questions/34837026/whats-the-meaning-of-pool-connections-in-requests-adapters-httpadapter/34893364