Changes between Version 49 and Version 50 of Pythonの短いソースコード集


Ignore:
Timestamp:
08/29/06 12:42:17 (13 years ago)
Author:
sgk
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Pythonの短いソースコード集

    v49 v50  
    11[[PageOutline]] 
    2 === 動かし方 === 
     2= Python:コードフラグメント = 
     3 
    34 * テキストをコピーして、適当なファイル名を作ります。 
    4  * python test.pyのように実行して動きを見てみるだけ 
     5 * python test.pyのように実行してみてください 
    56 * 研究課題も記述しておきました。お試しあれ。 
    67 
    7 === スレッドを作る === 
     8== スレッドを作る == 
    89{{{ 
    910#!python 
     
    2425  time.sleep(3) 
    2526}}} 
    26 === 外部コマンドの実行 === 
     27 
     28== 外部コマンドの実行 == 
    2729{{{ 
    2830#!python 
     
    3234print result 
    3335}}} 
    34 === 外部コマンドの実行 === 
     36 
     37== 外部コマンドの実行 == 
    3538{{{ 
    3639#!python 
     
    4043print w.read() 
    4144}}} 
    42 === 数値から文字へ === 
     45 
     46== 数値から文字へ == 
    4347{{{ 
    4448#!python 
     
    4852print msg 
    4953}}} 
    50 === 数値から文字へ === 
     54 
     55== 数値から文字へ == 
    5156{{{ 
    5257#!python 
     
    5459  print chr(n) 
    5560}}} 
    56 === 文字から数値へ === 
     61 
     62== 文字から数値へ == 
    5763{{{ 
    5864#!python 
     
    6268print n 
    6369}}} 
    64 === 一文字の数値化 === 
     70 
     71== 一文字の数値化 == 
    6572{{{ 
    6673#!python 
     
    7077  print v 
    7178}}} 
    72 === 16進数表記 === 
     79 
     80== 16進数表記 == 
    7381{{{ 
    7482#!python 
     
    7684print '%x' % v 
    7785}}} 
    78 === 大きな整数 === 
     86 
     87== 大きな整数 == 
    7988{{{ 
    8089#!python 
     
    8493 * Lを指定するとlongintegerになり大きなビット数の整数が扱える。 
    8594 * '''課題:''' 正しいことはどうやって証明するのか? 
    86 === タプル === 
     95 
     96== タプル == 
    8797{{{ 
    8898#!python 
     
    93103print a3 
    94104}}} 
    95 === リスト === 
     105 
     106== リスト == 
    96107{{{ 
    97108#!python 
     
    104115 * '''課題:'''リストのサイズが大きくなった場合削除に時間がかかるか? 
    105116 
    106 === 区切りで文字分割 === 
     117== 区切りで文字分割 == 
    107118{{{ 
    108119#!python 
     
    113124print a 
    114125}}} 
    115 === 時刻の表示 === 
     126 
     127== 時刻の表示 == 
    116128{{{ 
    117129#!python 
     
    120132print time.strftime("%Y%m%d%H%M%S ", time.localtime()) 
    121133}}} 
    122 === 空白除去 === 
     134 
     135== 空白除去 == 
    123136{{{ 
    124137#!python 
     
    129142print str1 
    130143}}} 
    131 === 商と余り === 
     144 
     145== 商と余り == 
    132146{{{ 
    133147#!python 
     
    136150print r 
    137151}}} 
    138 === ランダム === 
     152 
     153== ランダム == 
    139154{{{ 
    140155#!python 
     
    150165}}} 
    151166 * `randint`は二つめの引数の値を含む範囲の乱数を作ります。Pythonっぽくない。最近は`randrange`ってのがあって、こっちを使う方がわかりやすいですよ。--sgk 
    152 === 辞書の表示 === 
     167 
     168== 辞書の表示 == 
    153169{{{ 
    154170#!python 
     
    157173  print k, a[k] 
    158174}}} 
    159 === 基底クラスの呼び出し === 
     175 
     176== 基底クラスの呼び出し == 
    160177{{{ 
    161178#!python 
     
    167184 * Pythonでは基底クラスのコンストラクタは自動的には呼び出されない。呼び出すのを忘れないように。 
    168185 
    169 === キュー === 
     186== キュー == 
    170187{{{ 
    171188#!python 
     
    181198}}} 
    182199 * スレッド動作も考慮しているので便利かな。 
    183 === ソケット.TCPクライアント === 
     200 
     201== ソケット.TCPクライアント == 
    184202{{{ 
    185203#!python 
     
    195213}}} 
    196214 
    197 === ソケット.TCPサーバ === 
     215== ソケット.TCPサーバ == 
    198216{{{ 
    199217#!python 
     
    214232}}} 
    215233 
    216 === RPCサーバ === 
     234== RPCサーバ == 
    217235{{{ 
    218236#!python 
     
    237255 * 特別なプロトコル自分で作る必要がない。 
    238256 * '''練習問題:''' このサーバを起動して、一度だけRPCクライアントとの通信後サーバを`^C`で終了させてその直後にサーバをまた起動するとソケットがまだバインドされているというエラーがでてすぐに起動できない。さてどう改造したらうまく行くのでしょうか? 
    239 === RPCクライアント === 
     257 
     258== RPCクライアント == 
    240259{{{ 
    241260#!python 
     
    248267}}} 
    249268 * 関数を呼ぶだけです。 
    250 === データの連結 === 
     269 
     270== データの連結 == 
    251271{{{ 
    252272#!python 
     
    259279}}} 
    260280 * コピーを少なくしてデータを連結するため。 
    261 === バッファ === 
     281 
     282== バッファ == 
    262283{{{ 
    263284#!python 
     
    269290 * 長いデータの一部を取り出したり、見たりするときに便利。 
    270291 
    271 === 文字列バッファ === 
     292== 文字列バッファ == 
    272293{{{ 
    273294#!python 
     
    281302print f.read() 
    282303}}} 
    283 === バイナリデータを扱う === 
     304 
     305== バイナリデータを扱う == 
    284306{{{ 
    285307#!python 
     
    290312 * ネットワークのパケット処理などに活躍します。 
    291313 
    292 === データの表示 === 
     314== データの表示 == 
    293315{{{ 
    294316#!python 
     
    297319 * printはタプルにして表示すると便利 
    298320 
    299 === CGI === 
     321== CGI == 
    300322{{{ 
    301323#!python 
     
    306328def serveForever(addr, HandlerClass = CGIHTTPServer.CGIHTTPRequestHandler, 
    307329        ServerClass = BaseHTTPServer.HTTPServer): 
    308  
    309     HandlerClass.protocol_version = 'HTTP/1.0' 
    310     httpd = ServerClass(addr, HandlerClass) 
    311  
    312     sa = httpd.socket.getsockname() 
    313     print "Serving HTTP on %s:%d" % (sa[0], sa[1]) 
    314     httpd.serve_forever() 
     330  HandlerClass.protocol_version = 'HTTP/1.0' 
     331  httpd = ServerClass(addr, HandlerClass) 
     332  sa = httpd.socket.getsockname() 
     333  print "Serving HTTP on %s:%d" % (sa[0], sa[1]) 
     334  httpd.serve_forever() 
    315335 
    316336if __name__ == '__main__': 
     
    318338}}} 
    319339 
    320 === コマンド引数 === 
     340== コマンド引数 == 
    321341{{{ 
    322342#!python 
     
    334354 * 自分で作らなくても便利なので最近利用しています。 
    335355 
    336 === gzipファイルの展開 === 
     356== gzipファイルの展開 == 
    337357{{{ 
    338358#!python 
     
    345365}}} 
    346366 
    347 === FTPクライアント === 
     367== FTPクライアント == 
    348368{{{ 
    349369#!python 
     
    357377}}} 
    358378 
    359 === HTTPクライアント === 
     379== HTTPクライアント == 
    360380{{{ 
    361381#!python 
     
    372392 * http://www.yahoo.com/index.htmlのドキュメントを引く例 
    373393 * ドキュメントがない場合は404が返ってきますので、サイトのドキュメントの存在チェックに使えます。 
    374 === HTTPサーバ === 
     394 
     395== HTTPサーバ == 
    375396{{{ 
    376397#!python