SlideShare a Scribd company logo
1 of 18
ちょっと真面目に
Python&Django・基礎編
OMEGA (@equal_001)
お前誰よ
_人人人人人人人人人人人人_
> みんなバイク乗ろう! <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
2015/9/30自己紹介
2
• OMEGA (@equal_001)
• 北海道のハワイ出身
• 少しだけLOCAL学生部やっ
てました
• のプログラマです
青春時代の作品
2015/9/30青春時代の作品
3
はじめに
• pythonって何ぞやという初歩の初歩から
ざっくり話します
• 知ってる人は軽く聞き流しつつお昼ご飯の
こととか考えててください(ご飯だいじ)
2015/9/30目次
4
目次
• Pythonについて
– パラダイム
– スコープ
– self
– まとめ
• Django
– MVC
– まとめ
• 知っておきたいツール・基礎編
2015/9/30目次
5
Python:パラダイム
Python:パラダイム
6
2015/9/30
• マルチパラダイムプログラミ
ング言語
• 文法はABCの影響が強い
– インデント、コロン
– タプル
C PASCAL ABC
Java Scala Ruby
Javascript C++ C#
Pytho
n
Lisp Scheme Clojure
Smalltalk
Haskell
Prolog
プログラミングにおけるパラダイムとは、プログラムの捉え方・見方に相当するもの
ぱっと見てコードの流れ
を把握しやすい
(Software Design 2010年6月号 から引用)
Python:パラダイム・オブジェクト指向
Pythonでオブジェクト指向
• オブジェクト指向
– ざっくりいうと、何かを実現する機能をデータとデータの操作のあつまりをオブ
ジェクトとして実装する、という考え方
2015/9/30Python:パラダイム・オブジェクト指向
7
(OSSフォーラムから引用)
Python:パラダイム・関数型
Pythonで関数型を書いてみる
• 関数型言語
– 「プログラムというものは複数の関数が組合わさったものである」
• 問題を複数に関数化して組み合わせる→簡潔、再利用性(柔軟性)
– Pythonでは関数はファーストクラスオブジェクト
• オブジェクトを変数に格納したり、リストや辞書に格納したり、引数や返り値として扱うと
いった高階関数(関数を引数にとる関数)の実現が可能
• 例1)map関数
– 与えられた関数を与えられたリストの各要素に適用した結果を返す関数
2015/9/30Python:パラダイム
8
「各数値に対して一つずつ消
費税を加算する」
という機能を抽象化・提供
Python:パラダイム・関数型
• 例2)lambda(無名関数)
– 名前を付けない関数なので、大体一度しか使用しない関数として使う
– pyhtonのlambdaはあくまで式、文はかけない
– 関数オブジェクトなので、引数も取れる
2015/9/30Python書き方色々:オブジェクト志向
9
– 関数にもそのまま渡せる
# こんなふうにも書ける
Python:スコープ
• スコープとは、ある名前空間から参照可能な
コード上の範囲
• Pythonのスコープは雑にいうと2つ
– 関数のローカルスコープ
– モジュールのグローバルスコープ
2015/9/30Python:スコープ
10
Python:関数のローカルスコープ
Python:スコープ
11
2015/9/30
・関数のローカルスコープ
# 関数単位のスコープだからresponseは
ifのブロック内外でも参照可能
例)
Python:モジュールのグローバルスコープ
・モジュールのグローバルスコープ
Python:スコープ
12
2015/9/30
# hello.py
# hello.rb
この場合Hello, alpha!となるが、
関数外からも参照できるので、
もしname=“alpha”がない場合は
Hello, omega!と表示される
例)
Python:その他
• コーディングガイドライン規約
– PEP8 – Style Guide for Python Code
– pyflakesで文法を自動でチェック
– flake8 = PEP8+pyflakesみたいなの
• Pythonの空気について知りたかったら
– The Zen of Python
– 「読みやすいことは良いこと」、「暗示より明示」
2015/9/30Python:その他
13
Python:まとめ
• Pythonはマルチパラダイム言語
• 関数型としての側面も強いし、オブジェクト指向プログラミングも十分にでき
る
• スコープは関数単位、モジュールのグローバル(一つのファイル)単位の2つ
• 「読みやすいことは良いこと」、「暗示より明示」
• 科学技術計算のモジュールが豊富
Python:まとめ
14
2015/9/30
非常にとっつきやすい言語だとおもいます。
みんなPythonであそぼう。
15
2015/9/30
次はWebアプリケーションフレームワークの話をちょこっとします
Django
• Django
– Pythonで作られたWebアプリケーションフレームワーク
– 超大雑把にいうと、Webアプリ開発に必要なもの詰め込みセットツールみたいな
もの
• MVC
– Mode: アプリケショーンデータ、ビジネスルール、ロジック、関数
– View: modelの表示。グラフや図等の情報表現
– Contoller:入力を受け取りmodelとviewへの命令に変換する
• 他のフレームワークを知ってると混乱する部分
– Model models.py, api.py…
– View Template template:index.html, edit.html
– Controller View views.py ← 名前がややこしいんじゃ!
2015/9/30Django
16
知っておきたい機能/ツール・基礎編
• dir()
– モジュールで定義されている名前の一覧が見れる
– dir(__builtins__)で組み込み関数、変数の一覧が見れる
• type()
– 型の確認ができる
– 型の判定ならisinstance()を使用した方が◎
• OrderDict
– 辞書の順番が維持される
– 稀に使わざるを得なくて重宝する
2015/9/30知っておきたいツール・基礎編
17
知っておきたいツール・基礎編
• django-extensions
– shell起動時にモジュールが読み込まれるの地味に便利
– modelの検証とか
– ブラウザ上で対話シェルを使えるよ
• django-debug-toolbar
– 実際に発行されるSQL文の確認
– Requests、Cacheの確認
– templateのコンテキストの確認
– 例
• pdbデバッガ
– 地味に便利
– コードの任意の箇所にimport pdb;pdb.set_trace()と書くとそこで実行が停止し、停
止以前に読み込まれたモジュールは実行可能
2015/9/30知っておきたいツール・基礎編
18

More Related Content

What's hot

PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側
PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側
PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側Katayanagi Nobuko
 
Python札幌 2012/06/17
Python札幌 2012/06/17Python札幌 2012/06/17
Python札幌 2012/06/17Shinya Okano
 
Pythonのプロファイリング
PythonのプロファイリングPythonのプロファイリング
Pythonのプロファイリングysakaguchi
 
S01 t1 tsuji_pylearn_ut_01
S01 t1 tsuji_pylearn_ut_01S01 t1 tsuji_pylearn_ut_01
S01 t1 tsuji_pylearn_ut_01Takeshi Akutsu
 
Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )Ai Makabi
 
エキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころエキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころTakayuki Shimizukawa
 
S06 t1 python学習奮闘記#4
S06 t1 python学習奮闘記#4S06 t1 python学習奮闘記#4
S06 t1 python学習奮闘記#4Takeshi Akutsu
 
Bottle使ってPython学習一緒にはじめませんか?
Bottle使ってPython学習一緒にはじめませんか?Bottle使ってPython学習一緒にはじめませんか?
Bottle使ってPython学習一緒にはじめませんか?Tatsuya Shinozuka
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Preferred Networks
 
Python エンジニアの作り方 2011.08 #pyconjp
Python エンジニアの作り方 2011.08 #pyconjpPython エンジニアの作り方 2011.08 #pyconjp
Python エンジニアの作り方 2011.08 #pyconjpTakeshi Komiya
 
独学プログラマーのその後
独学プログラマーのその後独学プログラマーのその後
独学プログラマーのその後Takayuki Shimizukawa
 
Python入門者の集い #6 Lightning Talk
Python入門者の集い #6 Lightning Talk Python入門者の集い #6 Lightning Talk
Python入門者の集い #6 Lightning Talk Katayanagi Nobuko
 
Effective Python 第2版をオンライン読書会で。
Effective Python 第2版をオンライン読書会で。Effective Python 第2版をオンライン読書会で。
Effective Python 第2版をオンライン読書会で。KyutatsuNishiura
 
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみたRubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみたYusuke Kon
 

What's hot (20)

PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側
PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側
PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側
 
Python札幌 2012/06/17
Python札幌 2012/06/17Python札幌 2012/06/17
Python札幌 2012/06/17
 
Pythonのプロファイリング
PythonのプロファイリングPythonのプロファイリング
Pythonのプロファイリング
 
S01 t1 tsuji_pylearn_ut_01
S01 t1 tsuji_pylearn_ut_01S01 t1 tsuji_pylearn_ut_01
S01 t1 tsuji_pylearn_ut_01
 
Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )
 
S06 t0 orientation
S06 t0 orientationS06 t0 orientation
S06 t0 orientation
 
エキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころエキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころ
 
S06 t1 python学習奮闘記#4
S06 t1 python学習奮闘記#4S06 t1 python学習奮闘記#4
S06 t1 python学習奮闘記#4
 
S01 t0 orientation
S01 t0 orientationS01 t0 orientation
S01 t0 orientation
 
Bottle使ってPython学習一緒にはじめませんか?
Bottle使ってPython学習一緒にはじめませんか?Bottle使ってPython学習一緒にはじめませんか?
Bottle使ってPython学習一緒にはじめませんか?
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
 
Python エンジニアの作り方 2011.08 #pyconjp
Python エンジニアの作り方 2011.08 #pyconjpPython エンジニアの作り方 2011.08 #pyconjp
Python エンジニアの作り方 2011.08 #pyconjp
 
独学プログラマーのその後
独学プログラマーのその後独学プログラマーのその後
独学プログラマーのその後
 
Django learning
Django learningDjango learning
Django learning
 
Python入門者の集い #6 Lightning Talk
Python入門者の集い #6 Lightning Talk Python入門者の集い #6 Lightning Talk
Python入門者の集い #6 Lightning Talk
 
S05_T0_orientation
S05_T0_orientationS05_T0_orientation
S05_T0_orientation
 
Introduction
IntroductionIntroduction
Introduction
 
Effective Python 第2版をオンライン読書会で。
Effective Python 第2版をオンライン読書会で。Effective Python 第2版をオンライン読書会で。
Effective Python 第2版をオンライン読書会で。
 
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみたRubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
 
S14 t0 introduction
S14 t0 introductionS14 t0 introduction
S14 t0 introduction
 

ちょっと真面目にPython&Django・基礎編

Editor's Notes

  1. Pythonのパラダイムについて説明 プログラミングにおけるパラダイムとは、プログラムの捉え方・見方に相当します。 例えば、オブジェクト指向パラダイムを持つSmalltalkでは、プログラムというものはオブジェクトの集まりからなるものである、という見方をしますし、 純粋な関数型プログラミングであるHaskellでは、プログラムというものは複数の関数が組合わさったものである、という見方をします。 Pythonでは、図でもわかるように複数のパラダイムをもつ、いわゆるマルチパラダイムプログラミング言語です。 オブジェクト指向、関数型、手続き型など様々なスタイルでプログラムを書けます。 ABCはプログラミング教育用として設計されていて、インデントとコロンを文法にすることが、プログラミング初学者がコーディングをする上でもっともわかりやすいものだ、という考えに行き着いた、ということだそうです。 まぁ確かにパッとみたときにわかりやすいですよね。 プログラミング言語を学ぶ時の入門としてPythonが上げられる理由の一つなのではないでしょうか。 http://docs.python.jp/3/howto/functional.html