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

18
ちちちちちちちち Python&Django ちちち OMEGA (@equal_001)

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

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

ちょっと真面目に

Python&Django・基礎編

OMEGA (@equal_001)

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

お前誰よ

_人人人人人人人人人人人人_>  みんなバイク乗ろう!   <  ̄ Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y  ̄05/03/2023自己紹介

2

• OMEGA ( @equal_001 )

• 北海道のハワイ出身• 少しだけ LOCAL 学生部

やってました•     のプログラマです

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

青春時代の作品

青春時代の作品

05/03/2023

3

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

はじめに

• python って何ぞやという初歩の初歩からざっくり話します

• 知ってる人は軽く聞き流しつつお昼ご飯のこととか考えててください(ご飯だいじ)

05/03/2023目次

4

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

目次

• Python について– パラダイム– スコープ– self– まとめ

• Django– MVC– まとめ

• 知っておきたいツール・基礎編

05/03/2023目次

5

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

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 月号 から引用 )

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

Python :パラダイム・オブジェクト指向

Python でオブジェクト指向• オブジェクト指向

– ざっくりいうと、何かを実現する機能をデータとデータの操作のあつまりをオブジェクトとして実装する、という考え方

05/03/2023Python :パラダイム・オブジェクト指向

7

(OSS フォーラムから引用 )

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

Python :パラダイム・関数型

Python で関数型を書いてみる• 関数型言語

– 「プログラムというものは複数の関数が組合わさったものである」• 問題を複数に関数化して組み合わせる→簡潔、再利用性(柔軟性)

– Python では関数はファーストクラスオブジェクト• オブジェクトを変数に格納したり、リストや辞書に格納したり、引数や返り値と

して扱うといった高階関数(関数を引数にとる関数)の実現が可能

• 例 1 ) map 関数– 与えられた関数を与えられたリストの各要素に適用した結果を返す関数

05/03/2023Python :パラダイム

8

「各数値に対して一つずつ消費税を加算する」という機能を抽象化・提供

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

Python :パラダイム・関数型

• 例 2 ) lambda (無名関数)– 名前を付けない関数なので、大体一度しか使用しない関数として使う– pyhton の lambda はあくまで式、文はかけない– 関数オブジェクトなので、引数も取れる

05/03/2023Python 書き方色々:オブジェクト志向

9

– 関数にもそのまま渡せる

# こんなふうにも書ける

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

Python :スコープ

• スコープとは、ある名前空間から参照可能なコード上の範囲

• Python のスコープは雑にいうと 2 つ–関数のローカルスコープ–モジュールのグローバルスコープ

05/03/2023Python :スコープ

10

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

Python :関数のローカルスコープ

Python :スコープ

11

05/03/2023

・関数のローカルスコープ

# 関数単位のスコープだから response は  if のブロック内外でも参照可能

例)

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

Python :モジュールのグローバルスコープ

・モジュールのグローバルスコープ

Python :スコープ

12

05/03/2023

# hello.py

# hello.rb

この場合 Hello, alpha! となるが、関数外からも参照できるので、もし name=“alpha” がない場合はHello, omega! と表示される

例)

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

Python :その他

• コーディングガイドライン規約– PEP8 – Style Guide for Python Code– pyflakes で文法を自動でチェック– flake8 = PEP8+pyflakes みたいなの

• Python の空気について知りたかったら– The Zen of Python– 「読みやすいことは良いこと」、「暗示より明示」

05/03/2023Python :その他

13

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

Python :まとめ

• Python はマルチパラダイム言語

• 関数型としての側面も強いし、オブジェクト指向プログラミングも十分にできる

• スコープは関数単位、モジュールのグローバル(一つのファイル)単位の 2 つ

• 「読みやすいことは良いこと」、「暗示より明示」

• 科学技術計算のモジュールが豊富

Python :まとめ

14

05/03/2023

非常にとっつきやすい言語だとおもいます。みんな Python であそぼう。

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

15

05/03/2023

次は Web アプリケーションフレームワークの話をちょこっとします

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

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

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

知っておきたいツール・基礎編

知っておきたい機能 / ツール・基礎編

• dir()– モジュールで定義されている名前の一覧が見れる– dir(__builtins__) で組み込み関数、変数の一覧が見れる

• type()– 型の確認ができる– 型の判定なら isinstance() を使用した方が◎

• OrderDict– 辞書の順番が維持される– 稀に使わざるを得なくて重宝する

05/03/2023

17

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

知っておきたいツール・基礎編

知っておきたいツール・基礎編

• django-extensions– shell起動時にモジュールが読み込まれるの地味に便利– model の検証とか– ブラウザ上で対話シェルを使えるよ

• django-debug-toolbar– 実際に発行される SQL 文の確認– Requests 、 Cache の確認– template のコンテキストの確認– 例

• pdb デバッガ– 地味に便利– コードの任意の箇所に import pdb;pdb.set_trace() と書くとそこで実行

が停止し、停止以前に読み込まれたモジュールは実行可能05/03/2023

18