Enviar pesquisa
Carregar
みんなのはんなりPython勉強会
•
Transferir como PPTX, PDF
•
1 gostou
•
222 visualizações
H
hiroya akita
Seguir
2019年12月6日開催、みんなのはんなりPython勉強会の発表資料
Leia menos
Leia mais
Engenharia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 48
Baixar agora
Recomendados
Raspberry pi on java 20130510
Raspberry pi on java 20130510
Masafumi Ohta
S13 t0 introduction
S13 t0 introduction
Takeshi Akutsu
僕と Python と 時々 NetBeans
僕と Python と 時々 NetBeans
Yoshiori Shoji
S14 t0 introduction
S14 t0 introduction
Takeshi Akutsu
MCC CTF講習会 pwn編2
MCC CTF講習会 pwn編2
hama7230
MCC CTF講習会 pwn編
MCC CTF講習会 pwn編
hama7230
S03 t0 get_started
S03 t0 get_started
Takeshi Akutsu
From Scratch, let's start Deep Learning with Python (plus Text Processing, pr...
From Scratch, let's start Deep Learning with Python (plus Text Processing, pr...
Kiyoshi Ogawa
Recomendados
Raspberry pi on java 20130510
Raspberry pi on java 20130510
Masafumi Ohta
S13 t0 introduction
S13 t0 introduction
Takeshi Akutsu
僕と Python と 時々 NetBeans
僕と Python と 時々 NetBeans
Yoshiori Shoji
S14 t0 introduction
S14 t0 introduction
Takeshi Akutsu
MCC CTF講習会 pwn編2
MCC CTF講習会 pwn編2
hama7230
MCC CTF講習会 pwn編
MCC CTF講習会 pwn編
hama7230
S03 t0 get_started
S03 t0 get_started
Takeshi Akutsu
From Scratch, let's start Deep Learning with Python (plus Text Processing, pr...
From Scratch, let's start Deep Learning with Python (plus Text Processing, pr...
Kiyoshi Ogawa
プログラミング学習とScratch raspi python
プログラミング学習とScratch raspi python
Yoshitaka Shiono
Pyladies tokyo 20150123
Pyladies tokyo 20150123
Ai Makabi
OSS Study#19_LT
OSS Study#19_LT
NaoY-2501
ゼロから学ぶPython勉強会
ゼロから学ぶPython勉強会
sekikazu
Hannari python#27
Hannari python#27
hiroya akita
Pythonでpdfをいじってみる
Pythonでpdfをいじってみる
株式会社 システムヨシイ
Python札幌 2012/06/17
Python札幌 2012/06/17
Shinya Okano
S15 t0 introduction
S15 t0 introduction
Takeshi Akutsu
PredictionIOのPython対応計画
PredictionIOのPython対応計画
Shinsuke Sugaya
Pythonで自動化した話1
Pythonで自動化した話1
Masato Fujitake
Python入門者の集い #6 Lightning Talk
Python入門者の集い #6 Lightning Talk
Katayanagi Nobuko
S18 t0 introduction
S18 t0 introduction
Takeshi Akutsu
S09 t0 orientation
S09 t0 orientation
Takeshi Akutsu
Introduction
Introduction
Takeshi Akutsu
Python3と向かい合ってみる
Python3と向かい合ってみる
Atsuo Ishimoto
PythonのインストールからHello Worldまで
PythonのインストールからHello Worldまで
Kioto Hirahara
こわくないPython
こわくないPython
Katsuya Arai
S10 t1 spc_by_nowfromnow
S10 t1 spc_by_nowfromnow
Takeshi Akutsu
みんなのPython勉強会#43 Pyladies x Stapy ジョイントミートアップ #2
みんなのPython勉強会#43 Pyladies x Stapy ジョイントミートアップ #2
ManPingHe
Pythonで作る自作デバッガLT資料
Pythonで作る自作デバッガLT資料
Yuya Masumura
KyotoLT_Online_27.pdf
KyotoLT_Online_27.pdf
hiroya akita
はんなりPython #45
はんなりPython #45
hiroya akita
Mais conteúdo relacionado
Semelhante a みんなのはんなりPython勉強会
プログラミング学習とScratch raspi python
プログラミング学習とScratch raspi python
Yoshitaka Shiono
Pyladies tokyo 20150123
Pyladies tokyo 20150123
Ai Makabi
OSS Study#19_LT
OSS Study#19_LT
NaoY-2501
ゼロから学ぶPython勉強会
ゼロから学ぶPython勉強会
sekikazu
Hannari python#27
Hannari python#27
hiroya akita
Pythonでpdfをいじってみる
Pythonでpdfをいじってみる
株式会社 システムヨシイ
Python札幌 2012/06/17
Python札幌 2012/06/17
Shinya Okano
S15 t0 introduction
S15 t0 introduction
Takeshi Akutsu
PredictionIOのPython対応計画
PredictionIOのPython対応計画
Shinsuke Sugaya
Pythonで自動化した話1
Pythonで自動化した話1
Masato Fujitake
Python入門者の集い #6 Lightning Talk
Python入門者の集い #6 Lightning Talk
Katayanagi Nobuko
S18 t0 introduction
S18 t0 introduction
Takeshi Akutsu
S09 t0 orientation
S09 t0 orientation
Takeshi Akutsu
Introduction
Introduction
Takeshi Akutsu
Python3と向かい合ってみる
Python3と向かい合ってみる
Atsuo Ishimoto
PythonのインストールからHello Worldまで
PythonのインストールからHello Worldまで
Kioto Hirahara
こわくないPython
こわくないPython
Katsuya Arai
S10 t1 spc_by_nowfromnow
S10 t1 spc_by_nowfromnow
Takeshi Akutsu
みんなのPython勉強会#43 Pyladies x Stapy ジョイントミートアップ #2
みんなのPython勉強会#43 Pyladies x Stapy ジョイントミートアップ #2
ManPingHe
Pythonで作る自作デバッガLT資料
Pythonで作る自作デバッガLT資料
Yuya Masumura
Semelhante a みんなのはんなりPython勉強会
(20)
プログラミング学習とScratch raspi python
プログラミング学習とScratch raspi python
Pyladies tokyo 20150123
Pyladies tokyo 20150123
OSS Study#19_LT
OSS Study#19_LT
ゼロから学ぶPython勉強会
ゼロから学ぶPython勉強会
Hannari python#27
Hannari python#27
Pythonでpdfをいじってみる
Pythonでpdfをいじってみる
Python札幌 2012/06/17
Python札幌 2012/06/17
S15 t0 introduction
S15 t0 introduction
PredictionIOのPython対応計画
PredictionIOのPython対応計画
Pythonで自動化した話1
Pythonで自動化した話1
Python入門者の集い #6 Lightning Talk
Python入門者の集い #6 Lightning Talk
S18 t0 introduction
S18 t0 introduction
S09 t0 orientation
S09 t0 orientation
Introduction
Introduction
Python3と向かい合ってみる
Python3と向かい合ってみる
PythonのインストールからHello Worldまで
PythonのインストールからHello Worldまで
こわくないPython
こわくないPython
S10 t1 spc_by_nowfromnow
S10 t1 spc_by_nowfromnow
みんなのPython勉強会#43 Pyladies x Stapy ジョイントミートアップ #2
みんなのPython勉強会#43 Pyladies x Stapy ジョイントミートアップ #2
Pythonで作る自作デバッガLT資料
Pythonで作る自作デバッガLT資料
Mais de hiroya akita
KyotoLT_Online_27.pdf
KyotoLT_Online_27.pdf
hiroya akita
はんなりPython #45
はんなりPython #45
hiroya akita
Python 3.10の新機能を 俯瞰してみる
Python 3.10の新機能を 俯瞰してみる
hiroya akita
KyotoLT(Online) 第26回
KyotoLT(Online) 第26回
hiroya akita
AppSync導入のすすめ
AppSync導入のすすめ
hiroya akita
みんなのPython勉強会#62
みんなのPython勉強会#62
hiroya akita
はんなりpython#32
はんなりpython#32
hiroya akita
変数の重要度ってどうやったらわかるん?
変数の重要度ってどうやったらわかるん?
hiroya akita
Pythonでも型をつけたいだけの人生だった
Pythonでも型をつけたいだけの人生だった
hiroya akita
Lt debian 20190526
Lt debian 20190526
hiroya akita
Mais de hiroya akita
(10)
KyotoLT_Online_27.pdf
KyotoLT_Online_27.pdf
はんなりPython #45
はんなりPython #45
Python 3.10の新機能を 俯瞰してみる
Python 3.10の新機能を 俯瞰してみる
KyotoLT(Online) 第26回
KyotoLT(Online) 第26回
AppSync導入のすすめ
AppSync導入のすすめ
みんなのPython勉強会#62
みんなのPython勉強会#62
はんなりpython#32
はんなりpython#32
変数の重要度ってどうやったらわかるん?
変数の重要度ってどうやったらわかるん?
Pythonでも型をつけたいだけの人生だった
Pythonでも型をつけたいだけの人生だった
Lt debian 20190526
Lt debian 20190526
みんなのはんなりPython勉強会
1.
Python中級者への道しるべ みんなのはんなりPython勉強会 2019/12/6@スプーキーズ by あっきー
2.
自己紹介 ● 京都のIT会社で働いてます ● 業務では主に、AWS、Openblocks、SORACOM などを使ってサービスを提供してます ●
PythonはAWS Lambdaでバリバリ書いてます ちなみに、AWS Lambdaは11月18日に Python 3.8に対応しました🎉 2
3.
本日お話しさせて頂く内容 ● 入門書籍にはあまり載っていないテクニック ● 実際の業務でPythonを使った経験からのノウハウ ●
自分が初級者の時に、知っておきたかった内容 基本的には初級者~中級者の方を対象にしております。 上級者以上の方は、温かく見守って頂けるとありがたいです。 3
4.
その他 スライドは共有しますので、写真等をとって頂く必要はありません。 最後に質疑応答の時間を設ける予定ですので、質問はその時にして頂け ればと思います。 (もちろん、発表途中に質問頂いても問題ありません) 4
5.
では、本編スタート!! 5
6.
Pythonicなコードとは Pythonのガイドラインに沿った、読みやすい・副作用の少ない・ 変更しやすいコードのこと 具体的な定義は明確にはないが、Pythonistaの共通認識として、 良いコードのことをPythonicなコードと呼ぶ 6
7.
変数の代入 7 普通に代入 1行で代入 意味のあるグループ単位で、 複数の変数を1行で宣言すると可読性が向上
8.
変数の代入 8 同じ値を複数の変数に代入 2行目の代入の仕方は危険です なぜでしょう?
9.
変数の代入 9 同じ値を複数の変数に代入 2行目の代入の仕方は危険です なぜでしょう? listはミュータブルオブジェクトであり、 x,y,zそれぞれが同じオブジェクトを参照するため 正しくはこっち
10.
そもそも変数とは何か? 10 139974500313648 x 10 139974500313648 20 139974500313968 xの箱に直接10や20という値が 入っているわけではない
11.
そもそも変数とは何か? 11 139974500313968 x 10 139974500313648 20 139974500313968 xの箱に直接10や20という値が 入っているわけではない
12.
イミュータブル、ミュータブル? イミュータブルとは、参照先の値を書き換えることができない、 ということです。 Pythonにおけるイミュータブルオブジェクトには下記があります。 ● float ● int ●
str など。。。 12
13.
イミュータブル、ミュータブル? 13 139974500313968 x 10 139974500313648 20 139974500313968 ここの値を明示的に 変えることはできない ここの値を明示的に 変えることはできない
14.
イミュータブル、ミュータブル? ミュータブルとは、参照先の値を書き換えることができる、 ということです。 Pythonにおけるミュータブルオブジェクトには下記があります。 ● list ● dict ●
class など。。。 14
15.
イミュータブル、ミュータブル? 15 140694230121984 x [10] 140694230121984
16.
イミュータブル、ミュータブル? 16 140694230121984 x [20] 140694230121984 参照先の内容を変更する ことができる
17.
変数の代入(再掲) 17 同じ値を複数の変数に代入 2行目の代入の仕方は危険です なぜでしょう? listはミュータブルオブジェクトであり、 x,y,zそれぞれが同じオブジェクトを参照するため 正しくはこっち
18.
変数の入れ替え 18 普通に入れ替え スマートに入れ替え 一時変数を定義しなくていいので、 シンプルに書ける
19.
変数の展開(リスト) 19 extendをつかう? ただ、extendを使うと元の変数の内容が変わってしまうし、、、
20.
変数の展開(リスト) 20 プログラムにおいて、元の変数の内容が変更される、 ということは、多くの場合で好まれない
21.
変数の展開(リスト) listにアスタリスクをつけることで、配列をばらした状態で 代入することが可能 21
22.
変数の展開(リスト) ちなみに、配列の結合に関してはプラス(+)演算子でも同じことが できちゃいます。 22
23.
変数の展開(辞書) 辞書はアスタリスク2つで、ばらして代入することができます 23
24.
短絡評価 短絡評価とは、左辺を評価した段階で、式全体の値が決定しない 場合のみ、右辺を評価する、という評価方法のこと Pythonでは、「and」と「or」演算子を使うことで短絡評価を 行うことが可能 24
25.
短絡評価 辞書に「age」というキーがない場合は、エラーになるので、 キーの存在を確認している ただし、そのせいでIF文のネストが2段階になっている 25 普通に書く場合 プログラムにおいては、 ネストが浅い方が好まれる
26.
短絡評価 andの左側が偽である場合は、右の式が評価されないため、 IF文が1つで済む 26 短絡評価を使って書く場合
27.
比較演算子の組み合わせ 27 普通に書く場合 スマートに書く場合 右側の書き方の方が直感的に 理解しやすい
28.
三項演算子 Pythonにも三項演算子はありますが、他の言語と書き方が少し異なります。 28 (変数) = (条件が真のときの値)
if (条件式) else (条件が偽のときの値)
29.
三項演算子 29 普通に書く場合 三項演算子で 書く場合
30.
is演算子 is演算子は、変数の参照先が同じかどうかを比較する 参照先の値の比較ではないので注意 30 testとtest2には同じ文字列が 入っているが、is演算子では 同じものとは判断されない
31.
is演算子 31 139938641179552 test my name is
taro. 139938641179552 my name is taro. 139938641179712 139938641179712 test2
32.
==演算子 参照先の値が等しいかどうかを比較する 32 testとtest2には同じ文字列が 入っているので、同じものだ と判断される
33.
==演算子 ==演算子は、配列、辞書の要素も確認して比較する 33 非常に便利だが、諸刃の剣となりえる 配列や辞書の中身が非常に大きい 場合、全ての要素を比較して一致を 判断するので、処理速度が線形的に 増加する
34.
辞書のキーの存在確認 辞書の中に、特定のキーが存在するかどうかを判断するために、inを 使用することが多いかと思います。 34
35.
辞書のキーの存在確認 個人的には、inでキーの存在比較をするよりも、辞書オブジェクトの メンバー関数であるget関数を使って条件分岐する方が、コードが奇麗 に書けるように思います。 35 get関数は、指定したキーが無ければ、 Noneを返し、指定したキーがある場合 は、そのキーの値を返します。
36.
関数における引数の参照渡し 下記の関数は配列の要素を2乗した結果を返す関数です。 一つ大きな問題がありますが、どこでしょうか? 36
37.
関数における引数の参照渡し 正解はtestという引数の中身を直接変更している部分です。 list_valueとtestは同じものを参照しているため、list_valueを変更すると、 関数の呼び出し元にあるtestの中身まで書き変わってしまいます 37
38.
関数における引数の参照渡し 正しくは下記のようになります。 関数の呼び出し前と呼出し後で、引数の値が変わる様な関数は、 不必要なバグを生む可能性があるので避けるのが望ましいです。 38
39.
小数点の計算 突然ですが、下記コードの実行結果はどうなるでしょうか。 39
40.
小数点の計算 突然ですが、下記コードの実行結果はどうなるでしょうか。 40 残念ながら0.3にはなりません
41.
小数点の計算 理由は、0.1と0.2ともに、2進数で表現できない数字であるため、 float型で表現する場合は、値が丸められるため、計算結果に誤差が 発生するからです。 (小数の2進数表現の詳細は省略しますが、小数部分を2倍した値が 循環する場合は、プログラムで正確に小数値を表現できません) この誤差を回避するためには、decimalモジュールを使います。 41
42.
小数点の計算 Decimalを使えば、正確に小数の計算を行うことが可能です。 42
43.
小数点の計算 Decimalを使えば、正確に小数の計算を行うことが可能です。 ただし、割り算が含まれる場合は、Decimalでも正確に計算できない 可能性があるので、その場合はfractionsモジュールを使います。 43
44.
奇麗なコードを書くためには リントを有効活用しましょう VSCode+Pylintの構成では、実際に書いたコードのどこが良くないのかを 警告してくれるので、コードを書きながら良いコードはどのようなもの かを学ぶことができます。 Pylint https://www.pylint.org/ 44
45.
勉強方法について Python チュートリアル https://docs.python.org/ja/3.6/tutorial/index.html 公式のチュートリアル 非常によく作られているので、一通り目を通しておくと 良いかと思います。 基本的な内容から中級的な内容まで、幅広く書かれています。 45
46.
勉強方法について teratail https://teratail.com/ 最初はプログラムを1行書くだけでも、 苦戦することが多いかと思います。 オンライン質問サイトで質問すると、 1日程度で回答が返ってきますので、 うまく使うと学習がはかどります。 46
47.
勉強方法について MENTA https://menta.work/ プログラミングのメンターを探す サービスもあります。 独学で勉強するのは大変ですので、 プロのプログラマーから学ぶことで、 効率よく上達することができます。 47
48.
ご清聴ありがとうございました 48
Notas do Editor
この宣言の仕方は、関数から複数の値が返ってくる場合にも利用しますので、 覚えておくと損はないかと思います。
Baixar agora