SlideShare ist ein Scribd-Unternehmen logo
1 von 39
他人の書いた 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 を読んで勉強しよう

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
 
物体検知(Meta Study Group 発表資料)
物体検知(Meta Study Group 発表資料)物体検知(Meta Study Group 発表資料)
物体検知(Meta Study Group 発表資料)
 
CV分野におけるサーベイ方法
CV分野におけるサーベイ方法CV分野におけるサーベイ方法
CV分野におけるサーベイ方法
 
モデル高速化百選
モデル高速化百選モデル高速化百選
モデル高速化百選
 
【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models
 
[DL輪読会]Live-Streaming Fraud Detection: A Heterogeneous Graph Neural Network A...
[DL輪読会]Live-Streaming Fraud Detection: A Heterogeneous Graph Neural Network A...[DL輪読会]Live-Streaming Fraud Detection: A Heterogeneous Graph Neural Network A...
[DL輪読会]Live-Streaming Fraud Detection: A Heterogeneous Graph Neural Network A...
 
物体検出の歴史(R-CNNからSSD・YOLOまで)
物体検出の歴史(R-CNNからSSD・YOLOまで)物体検出の歴史(R-CNNからSSD・YOLOまで)
物体検出の歴史(R-CNNからSSD・YOLOまで)
 
リンク機構を有するロボットをGazeboで動かす
リンク機構を有するロボットをGazeboで動かすリンク機構を有するロボットをGazeboで動かす
リンク機構を有するロボットをGazeboで動かす
 
【DL輪読会】Perceiver io a general architecture for structured inputs & outputs
【DL輪読会】Perceiver io  a general architecture for structured inputs & outputs 【DL輪読会】Perceiver io  a general architecture for structured inputs & outputs
【DL輪読会】Perceiver io a general architecture for structured inputs & outputs
 
[DL輪読会]Relational inductive biases, deep learning, and graph networks
[DL輪読会]Relational inductive biases, deep learning, and graph networks[DL輪読会]Relational inductive biases, deep learning, and graph networks
[DL輪読会]Relational inductive biases, deep learning, and graph networks
 
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)
 
【DL輪読会】Factory: Fast Contact for Robotic Assembly
【DL輪読会】Factory: Fast Contact for Robotic Assembly【DL輪読会】Factory: Fast Contact for Robotic Assembly
【DL輪読会】Factory: Fast Contact for Robotic Assembly
 
【DL輪読会】マルチモーダル 基盤モデル
【DL輪読会】マルチモーダル 基盤モデル【DL輪読会】マルチモーダル 基盤モデル
【DL輪読会】マルチモーダル 基盤モデル
 
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
 
cvpaper.challenge 研究効率化 Tips
cvpaper.challenge 研究効率化 Tipscvpaper.challenge 研究効率化 Tips
cvpaper.challenge 研究効率化 Tips
 
近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer
 
【DL輪読会】Poisoning Language Models During Instruction Tuning Instruction Tuning...
【DL輪読会】Poisoning Language Models During Instruction Tuning Instruction Tuning...【DL輪読会】Poisoning Language Models During Instruction Tuning Instruction Tuning...
【DL輪読会】Poisoning Language Models During Instruction Tuning Instruction Tuning...
 
[DL輪読会]Weight Agnostic Neural Networks
[DL輪読会]Weight Agnostic Neural Networks[DL輪読会]Weight Agnostic Neural Networks
[DL輪読会]Weight Agnostic Neural Networks
 
落合流先生流の論文要旨フォーマット
落合流先生流の論文要旨フォーマット落合流先生流の論文要旨フォーマット
落合流先生流の論文要旨フォーマット
 
研究室における研究・実装ノウハウの共有
研究室における研究・実装ノウハウの共有研究室における研究・実装ノウハウの共有
研究室における研究・実装ノウハウの共有
 

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

Python札幌 2012/06/17
Python札幌 2012/06/17Python札幌 2012/06/17
Python札幌 2012/06/17
Shinya Okano
 
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
civic Sasaki
 
Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
Windowsにpythonをインストールしてみよう
Kenji NAKAGAKI
 

Ähnlich wie 211120 他人の書いたPythonスクリプトをステップ実行で理解する (20)

Python & PyConJP 2014 Report
Python & PyConJP 2014 ReportPython & PyConJP 2014 Report
Python & PyConJP 2014 Report
 
Django で始める PyCharm 入門
Django で始める PyCharm 入門Django で始める PyCharm 入門
Django で始める PyCharm 入門
 
Pythonによるwebアプリケーション入門 - Django編-
Pythonによるwebアプリケーション入門 - Django編- Pythonによるwebアプリケーション入門 - Django編-
Pythonによるwebアプリケーション入門 - Django編-
 
Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )
 
スクレイピングとPython
スクレイピングとPythonスクレイピングとPython
スクレイピングとPython
 
PythonのインストールからHello Worldまで
PythonのインストールからHello WorldまでPythonのインストールからHello Worldまで
PythonのインストールからHello Worldまで
 
Pythonを始めよう
Pythonを始めようPythonを始めよう
Pythonを始めよう
 
Python札幌 2012/06/17
Python札幌 2012/06/17Python札幌 2012/06/17
Python札幌 2012/06/17
 
MicroPython + ESP32
MicroPython + ESP32MicroPython + ESP32
MicroPython + ESP32
 
TOPPERS as an IoT OS(kernel)
TOPPERS as an IoT OS(kernel)TOPPERS as an IoT OS(kernel)
TOPPERS as an IoT OS(kernel)
 
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
 
Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
Windowsにpythonをインストールしてみよう
 
PyScriptの紹介
PyScriptの紹介PyScriptの紹介
PyScriptの紹介
 
210526 Power Automate Desktop Python
210526 Power Automate Desktop Python210526 Power Automate Desktop Python
210526 Power Automate Desktop Python
 
万年ビギナーによるPythonプログラミングのリハビリ計画
万年ビギナーによるPythonプログラミングのリハビリ計画万年ビギナーによるPythonプログラミングのリハビリ計画
万年ビギナーによるPythonプログラミングのリハビリ計画
 
サードパーティパッケージの歩き方
サードパーティパッケージの歩き方サードパーティパッケージの歩き方
サードパーティパッケージの歩き方
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
 
Pythonでpdfをいじってみる
PythonでpdfをいじってみるPythonでpdfをいじってみる
Pythonでpdfをいじってみる
 
こわくないPython
こわくないPythonこわくないPython
こわくないPython
 

Mehr von Takuya Nishimoto

Mehr von Takuya Nishimoto (20)

221217 SwiftはPythonに似ている
221217 SwiftはPythonに似ている221217 SwiftはPythonに似ている
221217 SwiftはPythonに似ている
 
220427-pydata 統計・データ分析 特集
220427-pydata 統計・データ分析 特集220427-pydata 統計・データ分析 特集
220427-pydata 統計・データ分析 特集
 
220126 python-datalake-spark
220126 python-datalake-spark220126 python-datalake-spark
220126 python-datalake-spark
 
211020 すごい広島 with OSH 2021.10
211020 すごい広島 with OSH 2021.10211020 すごい広島 with OSH 2021.10
211020 すごい広島 with OSH 2021.10
 
210917 オープンセミナー@広島のこれまでとこれから
210917 オープンセミナー@広島のこれまでとこれから210917 オープンセミナー@広島のこれまでとこれから
210917 オープンセミナー@広島のこれまでとこれから
 
210911 これから始める電子工作とMicroPython
210911 これから始める電子工作とMicroPython210911 これから始める電子工作とMicroPython
210911 これから始める電子工作とMicroPython
 
210728 mpy
210728 mpy210728 mpy
210728 mpy
 
210630 python
210630 python210630 python
210630 python
 
210428 python
210428 python210428 python
210428 python
 
200918 hannari-python
200918 hannari-python200918 hannari-python
200918 hannari-python
 
200429 python
200429 python200429 python
200429 python
 
200325 flask
200325 flask200325 flask
200325 flask
 
200208 osh-nishimoto-v2
200208 osh-nishimoto-v2200208 osh-nishimoto-v2
200208 osh-nishimoto-v2
 
191208 python-kansai-nishimoto
191208 python-kansai-nishimoto191208 python-kansai-nishimoto
191208 python-kansai-nishimoto
 
191101 nvda-sightworld-nishimoto
191101 nvda-sightworld-nishimoto191101 nvda-sightworld-nishimoto
191101 nvda-sightworld-nishimoto
 
191114 iotlt-nishimoto
191114 iotlt-nishimoto191114 iotlt-nishimoto
191114 iotlt-nishimoto
 
191030 anna-with-python
191030 anna-with-python191030 anna-with-python
191030 anna-with-python
 
190916 nishimoto-nvda-pyconjp
190916 nishimoto-nvda-pyconjp190916 nishimoto-nvda-pyconjp
190916 nishimoto-nvda-pyconjp
 
190925 python-windows
190925 python-windows190925 python-windows
190925 python-windows
 
190731 chalice
190731 chalice190731 chalice
190731 chalice
 

Kürzlich hochgeladen

Kürzlich hochgeladen (11)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 

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

Hinweis der Redaktion

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