Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Nseg15 一般的じゃないpython入門

1,980 views

Published on

Published in: Technology
  • Be the first to comment

Nseg15 一般的じゃないpython入門

  1. 1. 2011/5/21 N SEG V o l .15一般的じゃない Python入門 by A B E H i rok i a k a h A Tra y f l ood
  2. 2. 2011/5/21 N SEG V o l .15自己紹介・名前:アベヒロキ (@hATrayflood)・職業:自宅サーバ管理者・URL:http://rayflood.org/diary/・住所:長野市 地元:東部町 by A B E H i rok i a k a h A Tra y f l ood
  3. 3. 2011/5/21 N SEG V o l .15Python by A B E H i rok i a k a h A Tra y f l ood
  4. 4. 2011/5/21 N SEG V o l .15って何? by A B E H i rok i a k a h A Tra y f l ood
  5. 5. 2011/5/21 N SEG V o l .15スクリプト言語 by A B E H i rok i a k a h A Tra y f l ood
  6. 6. 2011/5/21 N SEG V o l .15 Perlとか Rubyとか の仲間 by A B E H i rok i a k a h A Tra y f l ood
  7. 7. 2011/5/21 N SEG V o l .15 なぜか 日本では マイナー by A B E H i rok i a k a h A Tra y f l ood
  8. 8. 2011/5/21 N SEG V o l .15古参のPerlや国産のRubyには敵わないのか… by A B E H i rok i a k a h A Tra y f l ood
  9. 9. 2011/5/21 N SEG V o l .15 概要は Wikipedia を参照 by A B E H i rok i a k a h A Tra y f l ood
  10. 10. 2011/5/21 N SEG V o l .15インストーラリファレンス作った人 by A B E H i rok i a k a h A Tra y f l ood
  11. 11. 2011/5/21 N SEG V o l .15※今回は Python-2.*系の話 Python-3.*系は by A B E H i rok i a k a h A Tra y f l ood
  12. 12. 2011/5/21 N SEG V o l .15知らん by A B E H i rok i a k a h A Tra y f l ood
  13. 13. 2011/5/21 N SEG V o l .15では早速ソース by A B E H i rok i a k a h A Tra y f l ood
  14. 14. 2011/5/21 N SEG V o l .15print("hello world.") by A B E H i rok i a k a h A Tra y f l ood
  15. 15. 2011/5/21 N SEG V o l .15いつものヤツですが、流石にコレだけじゃ… by A B E H i rok i a k a h A Tra y f l ood
  16. 16. 2011/5/21 N SEG V o l .15# -*- coding: utf-8 -*-if __name__ == "__main__": print(u"こんにちは") by A B E H i rok i a k a h A Tra y f l ood
  17. 17. 2011/5/21 N SEG V o l .15ちょっとPythonっぽくなった by A B E H i rok i a k a h A Tra y f l ood
  18. 18. 2011/5/21 N SEG V o l .15> # -*- coding: utf-8 -*-ソースファイルの文字コードを指定 by A B E H i rok i a k a h A Tra y f l ood
  19. 19. 2011/5/21 N SEG V o l .15指定がないとLatin-1と見なし、MB文字がソース中で使えないコンパイルエラー by A B E H i rok i a k a h A Tra y f l ood
  20. 20. 2011/5/21 N SEG V o l .15> if __name__ == "__main__":ifの行末は「:」。括弧は使わない明示的な閉じステートメントもない by A B E H i rok i a k a h A Tra y f l ood
  21. 21. 2011/5/21 N SEG V o l .15__name__ == "__main__"はスクリプトとして起動したときに実行するって目印 by A B E H i rok i a k a h A Tra y f l ood
  22. 22. 2011/5/21 N SEG V o l .15> print(u"こんにちは")if内のステートメントかどうかの判断は、次の行のインデントで決まります by A B E H i rok i a k a h A Tra y f l ood
  23. 23. 2011/5/21 N SEG V o l .15同一レベルのインデントで同一スコープとみなすズレてるものがあるとコンパイルエラー by A B E H i rok i a k a h A Tra y f l ood
  24. 24. 2011/5/21 N SEG V o l .15> u"こんにちは"文字列リテラルの先頭に「u」を付けるとUnicodeとして扱う by A B E H i rok i a k a h A Tra y f l ood
  25. 25. 2011/5/21 N SEG V o l .15Pythonは基本的には内部Unicodeだけどリテラルを自動的にUnicodeに変換しない by A B E H i rok i a k a h A Tra y f l ood
  26. 26. 2011/5/21 N SEG V o l .15なんか奇っ怪… by A B E H i rok i a k a h A Tra y f l ood
  27. 27. 2011/5/21 N SEG V o l .15次のお題 by A B E H i rok i a k a h A Tra y f l ood
  28. 28. 2011/5/21 N SEG V o l .15for i in range(4): print("i = " + str(i)) by A B E H i rok i a k a h A Tra y f l ood
  29. 29. 2011/5/21 N SEG V o l .15 i = 0 i = 1 i = 2 i = 3 by A B E H i rok i a k a h A Tra y f l ood
  30. 30. 2011/5/21 N SEG V o l .15for(i = 0; i < 4; i++)みたいなforは無いrange()関数を使う by A B E H i rok i a k a h A Tra y f l ood
  31. 31. 2011/5/21 N SEG V o l .15range()は数値の配列を生成する関数で、forのinに渡すのが主な使い方 by A B E H i rok i a k a h A Tra y f l ood
  32. 32. 2011/5/21 N SEG V o l .15なので、range()をprint()するとこうなる> print(str(range(4)))[0, 1, 2, 3] by A B E H i rok i a k a h A Tra y f l ood
  33. 33. 2011/5/21 N SEG V o l .15range()の引数を変えれば大体のことはできる> range(10, 4, -2)[10, 8, 6] by A B E H i rok i a k a h A Tra y f l ood
  34. 34. 2011/5/21 N SEG V o l .15> "i = " + str(i)実は妙なところで型が厳密混ぜるときは型変換が必要もちろんこの逆も然り by A B E H i rok i a k a h A Tra y f l ood
  35. 35. 2011/5/21 N SEG V o l .15join()は有名すぎるので省略> "-".join(["a", "b", "c"])a-b-c by A B E H i rok i a k a h A Tra y f l ood
  36. 36. 2011/5/21 N SEG V o l .15正直、join()より他の言語仕様のほうが奇妙… by A B E H i rok i a k a h A Tra y f l ood
  37. 37. 2011/5/21 N SEG V o l .15次のお題 by A B E H i rok i a k a h A Tra y f l ood
  38. 38. 2011/5/21 N SEG V o l .15t = datetime.now()t += timedelta(weeks=1)t.strftime("%Y/%m/%d")> 2011/05/28 by A B E H i rok i a k a h A Tra y f l ood
  39. 39. 2011/5/21 N SEG V o l .15日付計算はtimedeltaが強力 by A B E H i rok i a k a h A Tra y f l ood
  40. 40. 2011/5/21 N SEG V o l .15weeks, days,hours, minutes, seconds,milliseconds, microsecondsが使いたい放題 by A B E H i rok i a k a h A Tra y f l ood
  41. 41. 2011/5/21 N SEG V o l .15各項目併用可能マイナス値も使用可能t += timedelta(weeks=1, days=-1)> 2011/05/27 by A B E H i rok i a k a h A Tra y f l ood
  42. 42. 2011/5/21 N SEG V o l .15こんなこともいけるt -= timedelta(weeks=1) / 3t.strftime("%Y/%m/%d %H:%M:%S")> 2011/05/19 07:20:00 by A B E H i rok i a k a h A Tra y f l ood
  43. 43. 2011/5/21 N SEG V o l .15次のお題 by A B E H i rok i a k a h A Tra y f l ood
  44. 44. 2011/5/21 N SEG V o l .15hoge.py:def hogehoge(): print("hogehoge") by A B E H i rok i a k a h A Tra y f l ood
  45. 45. 2011/5/21 N SEG V o l .15import hogehoge.hogehoge()> hogehoge by A B E H i rok i a k a h A Tra y f l ood
  46. 46. 2011/5/21 N SEG V o l .15オブジェクトじゃないのになんかオブジェクトっぽい動きする。キモい。 by A B E H i rok i a k a h A Tra y f l ood
  47. 47. 2011/5/21 N SEG V o l .15from hoge import hogehogehogehoge()> hogehoge by A B E H i rok i a k a h A Tra y f l ood
  48. 48. 2011/5/21 N SEG V o l .15これはこれでimportが長いパッケージ名を省略できるので後が楽といえば楽 by A B E H i rok i a k a h A Tra y f l ood
  49. 49. 2011/5/21 N SEG V o l .15ところで、hoge.py自身はパッケージであることを明示してない by A B E H i rok i a k a h A Tra y f l ood
  50. 50. 2011/5/21 N SEG V o l .15< fuga/__init__.py< fuga/hoge.pyimport fuga.hogefuga.hoge.hogehoge() by A B E H i rok i a k a h A Tra y f l ood
  51. 51. 2011/5/21 N SEG V o l .15ファイルパスがそのままパッケージのパスになるただし__init__.pyが必要。中身は空でもよい。 by A B E H i rok i a k a h A Tra y f l ood
  52. 52. 2011/5/21 N SEG V o l .15__init__.pyにも関数やクラス書ける。ただしfrom importに限る by A B E H i rok i a k a h A Tra y f l ood
  53. 53. 2011/5/21 N SEG V o l .15fuga/__init__.py:def fugafuga(): print("fugafuga") by A B E H i rok i a k a h A Tra y f l ood
  54. 54. 2011/5/21 N SEG V o l .15< fuga/__init__.pyfrom fuga import fugafugafugafuga() by A B E H i rok i a k a h A Tra y f l ood
  55. 55. 2011/5/21 N SEG V o l .15__init__.pyに何か書く意味は分からないけど、こんなこともできるあたり、チェック目的か? by A B E H i rok i a k a h A Tra y f l ood
  56. 56. 2011/5/21 N SEG V o l .15fuga/__init__.py:raise("error") #print("error")def fugafuga(): print("fugafuga") by A B E H i rok i a k a h A Tra y f l ood
  57. 57. 2011/5/21 N SEG V o l .15import fuga.hoge> raise("error") #print("error")> Traceback (most recent call last):> File "test.py", line 4, in <module>> import fuga.hoge> File "fuga/__init__.py", line 1, in <module>> raise("error") #print("error")> error by A B E H i rok i a k a h A Tra y f l ood
  58. 58. 2011/5/21 N SEG V o l .15事例 by A B E H i rok i a k a h A Tra y f l ood
  59. 59. 2011/5/21 N SEG V o l .15実はライブラリ作ってました。rfZenHan by A B E H i rok i a k a h A Tra y f l ood
  60. 60. 2011/5/21 N SEG V o l .15s = u"012ABCabc!@#アイウガダパ㈱:"rfZenHan.normalize(s)> 012ABCabc!@#アイウガダパ(株):※詳細はソースのコメント参照 by A B E H i rok i a k a h A Tra y f l ood
  61. 61. 2011/5/21 N SEG V o l .15元ネタ仕様:Perl Unicode::Japanese実装:Python zenhan.py車輪の再発明万歳 by A B E H i rok i a k a h A Tra y f l ood
  62. 62. 2011/5/21 N SEG V o l .15eyeD3 by A B E H i rok i a k a h A Tra y f l ood
  63. 63. 2011/5/21 N SEG V o l .15mp3のID3タグを編集するライブラリ by A B E H i rok i a k a h A Tra y f l ood
  64. 64. 2011/5/21 N SEG V o l .15他の言語でまともに動くライブラリなかったのがそもそものきっかけ by A B E H i rok i a k a h A Tra y f l ood
  65. 65. 2011/5/21 N SEG V o l .15Pythonナイスプレー by A B E H i rok i a k a h A Tra y f l ood
  66. 66. 2011/5/21 N SEG V o l .15Google App Engine by A B E H i rok i a k a h A Tra y f l ood
  67. 67. 2011/5/21 N SEG V o l .15Googleのオレオレ仕様なWebアプリ実行環境ただしサーバ性能は強力 by A B E H i rok i a k a h A Tra y f l ood
  68. 68. 2011/5/21 N SEG V o l .15言語はJava、Python、GoフレームワークはそれぞれDBは独自で非SQL by A B E H i rok i a k a h A Tra y f l ood
  69. 69. 2011/5/21 N SEG V o l .15Trac by A B E H i rok i a k a h A Tra y f l ood
  70. 70. 2011/5/21 N SEG V o l .15言わずと知れたプロジェクト管理バグ追跡システム by A B E H i rok i a k a h A Tra y f l ood
  71. 71. 2011/5/21 N SEG V o l .15プラグイン豊富svn以外にもhgやgitも使えるらしい by A B E H i rok i a k a h A Tra y f l ood
  72. 72. 2011/5/21 N SEG V o l .15Mercurial by A B E H i rok i a k a h A Tra y f l ood
  73. 73. 2011/5/21 N SEG V o l .15バージョン管理システムgitと同じ分散型Web画面が標準である by A B E H i rok i a k a h A Tra y f l ood
  74. 74. 2011/5/21 N SEG V o l .15Python、OpenJDKMozilla、その他多数のOSSで採用 by A B E H i rok i a k a h A Tra y f l ood
  75. 75. 2011/5/21 N SEG V o l .15Firefoxビルド by A B E H i rok i a k a h A Tra y f l ood
  76. 76. 2011/5/21 N SEG V o l .15高速化のためにプロファイル採取して最適化 by A B E H i rok i a k a h A Tra y f l ood
  77. 77. 2011/5/21 N SEG V o l .15つまりビルドの過程で自動実行 by A B E H i rok i a k a h A Tra y f l ood
  78. 78. 2011/5/21 N SEG V o l .15ブラウザなのでWebサーバが必要 by A B E H i rok i a k a h A Tra y f l ood
  79. 79. 2011/5/21 N SEG V o l .15Pythonは標準でSimpleHTTPServerが使える by A B E H i rok i a k a h A Tra y f l ood
  80. 80. 2011/5/21 N SEG V o l .15Pythonナイスプレー by A B E H i rok i a k a h A Tra y f l ood
  81. 81. 2011/5/21 N SEG V o l .15まとめ by A B E H i rok i a k a h A Tra y f l ood
  82. 82. 2011/5/21 N SEG V o l .15奇妙な言語です by A B E H i rok i a k a h A Tra y f l ood
  83. 83. 2011/5/21 N SEG V o l .15仕様も使う人も by A B E H i rok i a k a h A Tra y f l ood
  84. 84. 2011/5/21 N SEG V o l .15奇妙さ故か日本ではマイナーだけど by A B E H i rok i a k a h A Tra y f l ood
  85. 85. 2011/5/21 N SEG V o l .15ニッチなところで役には立ってるので by A B E H i rok i a k a h A Tra y f l ood
  86. 86. 2011/5/21 N SEG V o l .15ここはあえてこの言葉で by A B E H i rok i a k a h A Tra y f l ood
  87. 87. 2011/5/21 N SEG V o l .15Pythonナイスプレー by A B E H i rok i a k a h A Tra y f l ood
  88. 88. 2011/5/21 N SEG V o l .15ありがとうございました by A B E H i rok i a k a h A Tra y f l ood
  89. 89. 2011/5/21 N SEG V o l .15リンク集twitter hATrayfloodhttp://twitter.com/hATrayfloodWikipedia Pythonhttp://ja.wikipedia.org/wiki/PythonPython インストーラhttp://www.python.org/download/Python 日本語リファレンスhttp://www.python.jp/Zope/links/python_documents作った人 グイド・ヴァンロッサムhttp://ja.wikipedia.org/wiki/グイド・ヴァンロッサム by A B E H i rok i a k a h A Tra y f l ood
  90. 90. 2011/5/21 N SEG V o l .15rfZenHanhttp://rayflood.org/diary-temp/rfZenHan-0.2.zip元ネタ 仕様 半角←→全角変換,Unicode::Japanese に 未公開機能が… daily dayflowerhttp://d.hatena.ne.jp/dayflower/20060530/1148951624元ネタ 実装 blogSetomits Python 全角/半角変換モジュール zenhan.py アルファベット・記号・数字・カタカナの全角・半角変換をするhttp://straitmouth.jp/blog/setomits/148 Firefox PGOビルドhttp://mxr.mozilla.org/mozilla2.0/source/build/pgo/profileserver.py by A B E H i rok i a k a h A Tra y f l ood
  91. 91. 2011/5/21 N SEG V o l .15eyeD3http://eyed3.nicfit.net/Google App Enginehttp://code.google.com/intl/ja/appengine/Trachttp://trac.edgewall.org/Mercurialhttp://mercurial.selenic.com/ by A B E H i rok i a k a h A Tra y f l ood

×