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