Slide 1

Slide 1 text

Yumihiki Python Tips LT会 - vol.3 #pythontipslt
 
 【初心者向け】ググらずに!?
 ターミナル上で
 Pythonオブジェクトを調べよう
 


Slide 2

Slide 2 text

なに話すん? 1. 自己紹介 2. 対象者 3. 本題 4. 解説 5. まとめ

Slide 3

Slide 3 text

自己紹介 Yumihiki / Tatsuya NIBUNO パーソルテクノロジースタッフ株式会社 GitHub: @Yumihiki Twitter: @YumihikiDev 2020年2月〜実務未経験から転職 / エンジニア歴3年目 エセ関西人

Slide 4

Slide 4 text

対象者 ● Pythonビギナー ● Pythonチュートリアルやったことがない(=実は私も) ● 基礎文法(list, dict)などの概念は知っている(知らなくても全然聞けます) ● 対話モードを使ったことがない人 ● 知っている方はドヤ顔で説明するのを温かい目で見てください ● 実行環境はMacにて実施しています ○ Windowsでも同様のことは出来るはず ● 元ネタは以下リンクにあります(スライドは後で公開します!) ○ 一般 Python FAQ — Python 3.10.4 ドキュメント ● 及びその周辺技術?についての解説アレコレ

Slide 5

Slide 5 text

本題 こういう場面、ないですか?(ないですよね。) 「あ〜、久しぶりにPythonちょっと書くわ!」 「あれ、listに追加するメソッドってなんやったっけ・・・」 「暇そうな先輩社員に聞いてみよか! カタカタ・・・ッターン!」 「ジージーアールケーエスって返ってきたわ・・・ つら・・・」 「しゃあない、Googleさんで検索や!」 「Python list 追加 で検索っと・・・」

Slide 6

Slide 6 text

本題 こういう場面、ないですか?(ないですよね。) 「あ〜、久しぶりにPythonちょっと書くわ!」 「あれ、listに追加するメソッドってなんやったっけ・・・」 「暇そうな先輩社員に聞いてみよか! カタカタ・・・ッターン!」 「ジージーアールケーエスって返ってきたわ・・・ つら・・・」 「しゃあない、Googleさんで検索や!」 「Python list 追加 で検索っと・・・」

Slide 7

Slide 7 text

本題 こういう場面、ないですか?(ないですよね。) 「あ〜、久しぶりにPythonちょっと書くわ!」 「あれ、listに追加するメソッドってなんやったっけ・・・」 「暇そうな先輩社員に聞いてみよか! カタカタ・・・ッターン!」 「ジージーアールケーエスって返ってきたわ・・・ つら・・・」 「しゃあない、Googleさんで検索や!」 「Python list 追加 で検索っと・・・」

Slide 8

Slide 8 text

本題 こういう場面、ないですか?(ないですよね。) 「あ〜、久しぶりにPythonちょっと書くわ!」 「あれ、listに追加するメソッドってなんやったっけ・・・」 「暇そうな先輩社員に聞いてみよか! カタカタ・・・ッターン!」 「ggrksって返ってきたわ・・・ つら・・・」 「しゃあない、Googleさんで検索や!」 「Python list 追加 で検索っと・・・」

Slide 9

Slide 9 text

本題 こういう場面、ないですか?(ないですよね。) 「あ〜、久しぶりにPythonちょっと書くわ!」 「あれ、listに追加するメソッドってなんやったっけ・・・」 「暇そうな先輩社員に聞いてみよか! カタカタ・・・ッターン!」 「ggrksって返ってきたわ・・・ つら・・・」 「しゃあない、Googleさんで検索や!」 「Python list 追加 で検索っと・・・」

Slide 10

Slide 10 text

本題 こういう場面、ないですか?(ないですよね。) 「あ〜、久しぶりにPythonちょっと書くわ!」 「あれ、listに追加するメソッドってなんやったっけ・・・」 「暇そうな先輩社員に聞いてみよか! カタカタ・・・ッターン!」 「ggrksって返ってきたわ・・・ つら・・・」 「しゃあない、Googleさんで検索や!」 「Python list 追加 っと・・・」

Slide 11

Slide 11 text

本題 これターミナルで 出来るかも🦆? 某錬金術師のように鋭い方ならもう全てマルっと理解しているかも🦆・・・ 似たようなこ と

Slide 12

Slide 12 text

本題 実行環境 macOS Big Sur バージョン 11.6.4 Python3.8.1 ターミナル を使用 🔴 🟠 🟢

Slide 13

Slide 13 text

本題 tatsuya@MyMBP ~ % python3 Python 3.8.1 (v3.8.1:1b293b6006, Dec 18 2019, 14:08:53) [Clang 6.0 (clang-600.0.57)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> [i for i in dir([]) if '__' not in i] ['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] >>> 🔴 🟠 🟢

Slide 14

Slide 14 text

本題 tatsuya@MyMBP ~ % python3 Python 3.8.1 (v3.8.1:1b293b6006, Dec 18 2019, 14:08:53) [Clang 6.0 (clang-600.0.57)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> [i for i in dir([]) if '__' not in i] ['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] >>> 🔴 🟠 🟢

Slide 15

Slide 15 text

本題 tatsuya@MyMBP ~ % python3 Python 3.8.1 (v3.8.1:1b293b6006, Dec 18 2019, 14:08:53) [Clang 6.0 (clang-600.0.57)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> [i for i in dir([]) if '__' not in i] ['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] >>> 🔴 🟠 🟢

Slide 16

Slide 16 text

本題 tatsuya@MyMBP ~ % python3 Python 3.8.1 (v3.8.1:1b293b6006, Dec 18 2019, 14:08:53) [Clang 6.0 (clang-600.0.57)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> [i for i in dir([]) if '__' not in i] ['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] >>> 🔴 🟠 🟢

Slide 17

Slide 17 text

本題 tatsuya@MyMBP ~ % python3 Python 3.8.1 (v3.8.1:1b293b6006, Dec 18 2019, 14:08:53) [Clang 6.0 (clang-600.0.57)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> [i for i in dir([]) if '__' not in i] ['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] >>> 🔴 🟠 🟢

Slide 18

Slide 18 text

本題 >>> help('list.append') Help on method_descriptor in list: list.append = append(self, object, /) Append object to the end of the list. (END) >>> >>> help('list.append')

Slide 19

Slide 19 text

本題 >>> help('list.append') Help on method_descriptor in list: list.append = append(self, object, /) Append object to the end of the list. (END) >>> >>> help('list.append') helpウィンドウに 切り替わる 終了時は q を叩く

Slide 20

Slide 20 text

本題 >>> help('list.append') Help on method_descriptor in list: list.append = append(self, object, /) Append object to the end of the list. >>> help('list.append') >>>

Slide 21

Slide 21 text

本題 出来ましたね これにて完! …ではなくもうちょっとなぜなのか、どういう仕組みがあるのか解説します。 「どうせなら何やっているか完全に理解したいやん?」

Slide 22

Slide 22 text

本題 出来ましたね これにて完! …ではなくもうちょっとなぜなのか、どういう仕組みがあるのか解説します。    「どうせなら何やっているか完全に理解したいやん?」

Slide 23

Slide 23 text

解説 Q. python3 ってなんなん? A. Pythonインタプリタを起動するコマンド 2. Python インタプリタを使う 対話モードと呼ばれる状態になる。 >>> と表示されている場所にコードを書くことで実行できる (for文などのように続く場合は … )。 今回のような簡単なコードの検証に使える。 exit() or Ctrl + D で終了できる。

Slide 24

Slide 24 text

解説 Q. [i for i in dir([]) if '__' not in i] ってなんなん?ワイの知ってるfor文ちゃうで? A. リスト(の)内包表記 です。 5. データ構造 — Python 3.10.4 ドキュメント for文でリストを回してif文で条件を書いて何かする...ケースを1行で書ける。 if文が無いケースも記述することができる。 ex: リスト内の文字を全て小文字に操作する 今回のケースだと内包表記を使わない場合、次のようなコードになる。

Slide 25

Slide 25 text

>>> not_special_attributes = [] >>> for i in dir([]): … if '__' not in i: … not_special_attributes.append(i) … not_special_attributes
 # このままでも良いけど、1行でスッキリと書くことができる = 内包表記 本題 🔴 🟠 🟢

Slide 26

Slide 26 text

>>> not_special_attributes = [] >>> for i in dir([]): … if '__' not in i: … not_special_attributes.append(i) … not_special_attributes
 # このままでも良いけど、1行でスッキリと書くことができる = 内包表記 本題 🔴 🟠 🟢 スッキリと 言っても ややこしくない?

Slide 27

Slide 27 text

>>> not_special_attributes = [] >>> for i in dir([]): … if '__' not in i: … not_special_attributes.append(i) … >>> not_special_attributes
 >>> [i for i in dir([]) if '__' not in i] 本題 🔴 🟠 🟢 動きを1つずつ 見ていくと 混乱しないかも🦆?

Slide 28

Slide 28 text

解説 Q. if '__' not in i の'__'ってなにしてんの? 人の顔? A. 特殊メソッドを省いていました。使わない場合以下のようになります。 >>> [i for i in dir([])] # dir([]) と同じ結果 ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] 🔴 🟠 🟢

Slide 29

Slide 29 text

解説 「特殊メソッドっちゅーのは... 特殊なメソッドや!」

Slide 30

Slide 30 text

解説 「特殊メソッドっちゅーのは... 特殊なメソッドや!」❌ ただの進次郎構文

Slide 31

Slide 31 text

解説 「特殊メソッドっちゅーのは... 特殊なメソッドや!」❌ 「ある型に特定の操作、例えば加算をするためにPython から暗黙に 呼び出されるメソッド。この種類のメソッドは、メソッド名の最初と最後にアンダー スコア2つがついています。特殊メソッドについては 特殊メソッド名で解説されています。」💮 https://docs.python.org/ja/3/glossary.html?highlight=%E7%89%B9%E6%AE%8A Python 3.10.4 ドキュメント 用語集 special method より引用

Slide 32

Slide 32 text

解説 Q. さらっと流してたけどdirってなんや? A. dir([object]): オブジェクトを引数に渡すことでオブジェクトの有効な属性の listを 返してくれる(正確には返そうと試みてくれる?) 組み込み関数 — Python 3.10.4 ドキュメント listが返却されることでfor文で処理できる ( =特殊メソッド __iter__ を実装したオブジェクトはイテラブルなオブジェクト  これを実装しているとfor文で処理できる) ※Pythonは関数、メソッド、文字列などは全てオブジェクト

Slide 33

Slide 33 text

解説 Q. helpについても教えてくれや!今回のキモちゃうんか!?help me!! A. help([object]): オブジェクトを引数に渡すことで そのオブジェクトに関するヘルプページを生成してくれる オブジェクトではなく‘list.append’のような文字列でも検索・表示してくれる 組み込み関数 — Python 3.10.4 ドキュメント ※Pythonは関数、メソッド、文字列などは全てオブジェクト (大事なことなので2回言うた)

Slide 34

Slide 34 text

解説 >>> l = [] >>> help(l) 🔴 🟠 🟢

Slide 35

Slide 35 text

解説 🔴 🟠 🟢 Help on list object: class list(object) | list(iterable=(), /) | | Built-in mutable sequence. | | If no argument is given, the constructor creates a new empty list. | The argument must be an iterable if specified. | | Methods defined here: | | __add__(self, value, /) | Return self+value. |

Slide 36

Slide 36 text

解説 >>> help(l.append) 🔴 🟠 🟢 Help on method_descriptor in list: list.append = append(self, object, /) Append object to the end of the list. (END)

Slide 37

Slide 37 text

まとめ python3コマンドでPythonインタプリタを起動できる Pythonインタプリタ上でhelp() を使うとヘルプページが開ける いちいちブラウザを開いてググらなくても済む(かも)

Slide 38

Slide 38 text

まとめ 「なんや後輩くん、Pythonのオブジェクトについてググってんのか?」 「ええか、ググらずに済む方法があんねん!  今なら先輩が特別価格の100万円で教えたるわ!」 とドヤ顔出来るかもしれません(?) python3コマンドでPythonインタプリタを起動できる Pythonインタプリタ上でhelp() を使うとヘルプページが開ける いちいちブラウザを開いてググらなくても済む(かも)

Slide 39

Slide 39 text

ご静聴 ありがとう ございました󰢛