Introduction to Python         2012/04/11      Tomoya Nakayama
AgendaPythonって何?とにかく使ってみよう
Pythonとの出会いもともとPerl使い技術書を何冊か読むサンプルコードが結構な確率でPythonこれはPython知らなきゃまずいな…使ってみると意外とおもしろい!これを機にPerlからPythonにシフトしよう!!            ...
Pythonって何?             4
Pythonの歴史Guide van Rossum が開発1991年 0.90公開1994年 1.0リリース2000年 2.0リリース2008年 3.0リリース                          Wikipedia       ...
Pythonの特徴スクリプト言語(インタプリタ)動的型付けインデントが命オブジェクト指向                    6
Pythonのいいところ幅広く使われている可読性 インデントが強制されているから簡単ライブラリが豊富                     7
プログラミング言語ランキング               Language               Ratings     1        Java                    17.110%     2        C   ...
オープンソースでもhttp://www.ohloh.net/languages/compare                                         9
こんなところにPythonが(出典) Wikipedia 「Pythonを使っている製品あるいはソフトウェア の一覧」                                      10
こんなところにもGmailGoogle GroupsGoogle Maps   (出典) Wikipedia 「Pythonを使っている製品あるいはソフトウェア    の一覧」                                  ...
ライブラリが豊富標準ライブラリだけでも100種類以上 ファイル操作(CSV, HTML, XMLなど) インターネット(HTTPなど) GUI 単体テスト その他いろいろ… 詳細はこちら  http://www.python.jp/doc/re...
使ってみよう         13
まずはインストールWindowsインストーラをダウンロードするインストーラを実行するおしまい                         14
コマンドライン実行環境の起動スタートメニューから「Python2.7」⇒「Python (command line)」コマンドプロンプトのような対話式の実行環境が 起動する                                15
お決まりの…print “Hello, Python.”                         16
Pythonの特徴をもう一度スクリプト言語(インタプリタ)動的型付けインデントが命オブジェクト指向                    17
動的型付け変数の型は動的に変化する PerlとかPHPと同じ foo = “string” foo = 7                    18
インデントが命プログラムの階層はインデントで表現次の2つの例では結果が異なる (1)   if score >= 80:         print “Good!n”         print “Your score is ” + str(s...
C言語で書くと…(1)   if (score >= 80) {        printf(“Good!n”);        printf(“Your score is %dn”, score);      }(2)   if (score...
制御構造:ifif score >= 80:   Print “Good!”elif score >= 60:   Print “So, so.”else:   Print “No Good.”                      21
制御構造:whilen = 0while n < 10:   print n   n = n + 1                     22
制御構造:forJavaでいう拡張forループ array = [1, 2, 3, 4, 5] for n in array:    print n                           23
データ構造:リスト(1)いわゆる「配列」 array1 = [1, 2, 3, 4, 5] array2 = [1, 2, [3, 4], 5] array3 = [1, 2, “3”, “4”, 5] array4 = range(2, 6,...
データ構造:リスト(2)いろんな操作 len(array1) array1.append(6) array3.remove(“3”) array1.reverse()                      25
データ構造:タプルリストと同じように使えるが、後から操作できな い tpl = (1, 2, 3, 4, 5) print tpl[0] tpl[0] = 10# これはNG                         26
データ構造:辞書キーと値のペアdic1 = {name: John, age: 25}print dic1[name]dic2 = {   john: {name: John, age: 25},   bob: {name: Bob, age:...
リスト内包表記(1) array = [60, 92, 12, 54, 88]    print len([n for n in array if n >=     60])(2) ax = [“x1”, “x2”, “x3”]    ay =...
関数の定義def my_double(x):   return x * 2num = my_double(5)                     29
クラスの定義class Derived(Base):   # Baseクラスを継承したDerivedクラ ス  def __init__(self):    # __init__はコンストラクタ(名前固定)  def public_method...
ダックタイピング(duck typing)"If it walks like a duck and quacks like a duck,  it must be a duck"「もしもそれがアヒルのように歩き、アヒル のように鳴くのなら、それ...
ダックタイピングclass Duck:    def sound(self):       return “quack”class Cat:    def sound(self):       return “myaa”def let_soun...
サンプルプログラム            33
twitterアプリの製作特定のユーザーのツイートを取得 twitter APIを利用 レスポンスをJSONで取得ツイートの時刻とテキストを出力                        34
プログラム作成の前に…twitter API  https://dev.twitter.com/docs/api/1/get/statuses/user_timelineJSON  「キー: 値」の形式でデータを表現              ...
プログラム# -*- coding: utf-8 -*-import urllibimport jsonscr_name = NHK_PR # twitterのスクリーンネームurl = https://twitter.com/statuses...
まとめ      37
まとめ簡単でしょ?使ってみてくださいね。               38
おまけ      39
Pythonの亜種IronPython  .NET frameworkで動くPython  .NET frameworkのライブラリが使える  Visual Studioが使えるっぽい(フォームデザイナと    か)Jython  Java V...
IronPythonimport clrclr.AddReferenceByPartialName(“System.Windows.Forms”)from System.Windows.Forms import *MessageBox.Show...
Jython    JavaのコードからPythonを呼び出す感じ。import org.python.util.PythonInterpreter;public class JythonTest {    public static void...
DjangoPythonで作られたWebフレームワークモデルを書くだけで テーブルを勝手に作ってくれたり データ編集画面を自動で作ってくれたり                        43
Python入門者向けサイトほぷしぃ  http://www.isl.ne.jp/pcsp/python/PythonWeb  http://www.pythonweb.jp/                                  ...
ご清聴ありがとうございました                 45
Upcoming SlideShare
Loading in …5
×

Introduction of Python

1,944 views

Published on

社内向けPython入門講義資料

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,944
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Introduction of Python

  1. 1. Introduction to Python 2012/04/11 Tomoya Nakayama
  2. 2. AgendaPythonって何?とにかく使ってみよう
  3. 3. Pythonとの出会いもともとPerl使い技術書を何冊か読むサンプルコードが結構な確率でPythonこれはPython知らなきゃまずいな…使ってみると意外とおもしろい!これを機にPerlからPythonにシフトしよう!! 3
  4. 4. Pythonって何? 4
  5. 5. Pythonの歴史Guide van Rossum が開発1991年 0.90公開1994年 1.0リリース2000年 2.0リリース2008年 3.0リリース Wikipedia 「グイド・ヴァンロッサ 5 ム」
  6. 6. Pythonの特徴スクリプト言語(インタプリタ)動的型付けインデントが命オブジェクト指向 6
  7. 7. Pythonのいいところ幅広く使われている可読性 インデントが強制されているから簡単ライブラリが豊富 7
  8. 8. プログラミング言語ランキング Language Ratings 1 Java 17.110% 2 C 17.087% 3 C# 8.244% 4 C++ 8.047% 5 Objective-C 7.737% 6 PHP 5.555% 7 (Visual) Basic 4.369% 8 JavaScript 3.386% 9 Python 3.291% 10 Perl 2.703% (出典) TIOBE Programming Community Index for March 2012 8
  9. 9. オープンソースでもhttp://www.ohloh.net/languages/compare 9
  10. 10. こんなところにPythonが(出典) Wikipedia 「Pythonを使っている製品あるいはソフトウェア の一覧」 10
  11. 11. こんなところにもGmailGoogle GroupsGoogle Maps (出典) Wikipedia 「Pythonを使っている製品あるいはソフトウェア の一覧」 11
  12. 12. ライブラリが豊富標準ライブラリだけでも100種類以上 ファイル操作(CSV, HTML, XMLなど) インターネット(HTTPなど) GUI 単体テスト その他いろいろ… 詳細はこちら http://www.python.jp/doc/release/library/index.html標準以外にも数多くのパッケージ 12
  13. 13. 使ってみよう 13
  14. 14. まずはインストールWindowsインストーラをダウンロードするインストーラを実行するおしまい 14
  15. 15. コマンドライン実行環境の起動スタートメニューから「Python2.7」⇒「Python (command line)」コマンドプロンプトのような対話式の実行環境が 起動する 15
  16. 16. お決まりの…print “Hello, Python.” 16
  17. 17. Pythonの特徴をもう一度スクリプト言語(インタプリタ)動的型付けインデントが命オブジェクト指向 17
  18. 18. 動的型付け変数の型は動的に変化する PerlとかPHPと同じ foo = “string” foo = 7 18
  19. 19. インデントが命プログラムの階層はインデントで表現次の2つの例では結果が異なる (1) if score >= 80: print “Good!n” print “Your score is ” + str(score) + “n” (2) if score >= 80: print “Good!n” print “Your score is ” + str(score) + “n” 19
  20. 20. C言語で書くと…(1) if (score >= 80) { printf(“Good!n”); printf(“Your score is %dn”, score); }(2) if (score >= 80) { printf(“Good!n”); } printf(“Your score is %dn”, score); 20
  21. 21. 制御構造:ifif score >= 80: Print “Good!”elif score >= 60: Print “So, so.”else: Print “No Good.” 21
  22. 22. 制御構造:whilen = 0while n < 10: print n n = n + 1 22
  23. 23. 制御構造:forJavaでいう拡張forループ array = [1, 2, 3, 4, 5] for n in array: print n 23
  24. 24. データ構造:リスト(1)いわゆる「配列」 array1 = [1, 2, 3, 4, 5] array2 = [1, 2, [3, 4], 5] array3 = [1, 2, “3”, “4”, 5] array4 = range(2, 6, 1)いろんな参照方法 array1[0] array1[1:3] array1[-2] 24
  25. 25. データ構造:リスト(2)いろんな操作 len(array1) array1.append(6) array3.remove(“3”) array1.reverse() 25
  26. 26. データ構造:タプルリストと同じように使えるが、後から操作できな い tpl = (1, 2, 3, 4, 5) print tpl[0] tpl[0] = 10# これはNG 26
  27. 27. データ構造:辞書キーと値のペアdic1 = {name: John, age: 25}print dic1[name]dic2 = { john: {name: John, age: 25}, bob: {name: Bob, age: 20}} # ネストもOKprint dic2[bob][age] 27
  28. 28. リスト内包表記(1) array = [60, 92, 12, 54, 88] print len([n for n in array if n >= 60])(2) ax = [“x1”, “x2”, “x3”] ay = [“y1”, “y2”, “y3”] az = [“z1”, “z2”, “z3”] print [(x, y, z) for x in ax for y in ay for z in az] 28
  29. 29. 関数の定義def my_double(x): return x * 2num = my_double(5) 29
  30. 30. クラスの定義class Derived(Base): # Baseクラスを継承したDerivedクラ ス def __init__(self): # __init__はコンストラクタ(名前固定) def public_method(self, arg1, arg2): # publicメソッド def __private_method(self, arg1, arg2): # 先頭に__を付けるとprivateに。obj = Derived()obj.public_method(arg1, arg2)obj.__private_method(arg1, arg2) # これはエラー 30
  31. 31. ダックタイピング(duck typing)"If it walks like a duck and quacks like a duck, it must be a duck"「もしもそれがアヒルのように歩き、アヒル のように鳴くのなら、それはアヒルである」 31
  32. 32. ダックタイピングclass Duck: def sound(self): return “quack”class Cat: def sound(self): return “myaa”def let_sound(obj): print obj.sound()let_sound(Duck())let_sound(Cat()) 32
  33. 33. サンプルプログラム 33
  34. 34. twitterアプリの製作特定のユーザーのツイートを取得 twitter APIを利用 レスポンスをJSONで取得ツイートの時刻とテキストを出力 34
  35. 35. プログラム作成の前に…twitter API https://dev.twitter.com/docs/api/1/get/statuses/user_timelineJSON 「キー: 値」の形式でデータを表現 35
  36. 36. プログラム# -*- coding: utf-8 -*-import urllibimport jsonscr_name = NHK_PR # twitterのスクリーンネームurl = https://twitter.com/statuses/user_timeline.json + ?screen_name= + scr_nameresult = urllib.urlopen( url, proxies={https: http://proxy:8080} )result = json.loads(result.read())for tweet in result: print [%s] %s % (tweet[created_at], tweet[text]) 36
  37. 37. まとめ 37
  38. 38. まとめ簡単でしょ?使ってみてくださいね。 38
  39. 39. おまけ 39
  40. 40. Pythonの亜種IronPython .NET frameworkで動くPython .NET frameworkのライブラリが使える Visual Studioが使えるっぽい(フォームデザイナと か)Jython Java VMで動くPython ちょっとバージョン古めかな… 40
  41. 41. IronPythonimport clrclr.AddReferenceByPartialName(“System.Windows.Forms”)from System.Windows.Forms import *MessageBox.Show( “Are you OK?”, “Test”, MessageBoxButtons.YesNo, MessageBoxIcon.Question) 41
  42. 42. Jython JavaのコードからPythonを呼び出す感じ。import org.python.util.PythonInterpreter;public class JythonTest { public static void main(String[] args) { PythonInterpreter pyi = new PythonInterpreter(); pyi.exec(“print Hello, world.”); pyi.execfile(“hello.py”); // ファイル実行もOK }} 42
  43. 43. DjangoPythonで作られたWebフレームワークモデルを書くだけで テーブルを勝手に作ってくれたり データ編集画面を自動で作ってくれたり 43
  44. 44. Python入門者向けサイトほぷしぃ http://www.isl.ne.jp/pcsp/python/PythonWeb http://www.pythonweb.jp/ 44
  45. 45. ご清聴ありがとうございました 45

×