2012年12月15日土曜日

開発環境

『初めてのPython 第3版』(Mark Lutz 著、夏目 大 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-393-7) のV部(モジュール)まとめ演習3(__name__属性)を解いてみる。

その他参考書籍

3.

コード(TextWrangler)

sample.py

#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-

def count_lines(name):
    return len(open(name).readlines())

def count_chars(name):
    return len(open(name).read())

def test():
    name = 'sample.py'
    return "行数:{0} 文字数:{1}".format(
      count_lines(name), count_chars(name))

# test関数でのopen関数の呼び出しを2回ではなく1回で済むように修正
def count_lines1(file):
    file.seek(0)
    return len(file.readlines())

def count_chars1(file):
    file.seek(0)
    return len(file.read())

def test1():
    file = open('sample.py')
    return "行数:{0} 文字数:{1}".format(
      count_lines1(file), count_chars1(file))

if __name__ == '__main__':
    name = 'sample.py'
    print(count_lines(name))
    print(count_chars(name))
    # せっかくなのでopen関数の呼び出しが1回の場合と2回の場合の秒数を計測
    import time
    start = time.time()
    result1 = test()
    print("{0}秒".format(time.time() - start))
    print(result1)
    file = open(name)
    print(count_lines1(file))
    print(count_chars1(file))
    start = time.time()
    result2 = test1()
    print("{0}秒".format(time.time() - start))
    print(result2)

入出力結果(Terminal)

$ ./sample.py
44
1021
0.0005600452423095703秒
行数:44 文字数:1021
44
1021
0.0003170967102050781秒
行数:44 文字数:1021
$

0 コメント:

コメントを投稿