2013年4月26日金曜日

開発環境

『初めてのPython 第3版』(Mark Lutz 著、夏目 大 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-393-7)のII部(ビルトインオブジェクト)、9章(タプル、ファイルオブジェクト、その他)の練習問題を解いてみる。

その他参考書籍

1, 2, 3, 4, 5, 6.

コード(BBEdit)

sample.py

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

t1 = ('a','b')
t2 = ('a','b','c','d','e')

print(t1, len(t1)) # len関数でタプルの大きさを取得
print(t2, len(t2))

t = (4, 5, 6)
t = (1,) + t[1:]
print(t)

with open('sample.txt') as f: # open関数の第2引数のデフォルトは読み込みのr
    print("読み込み")
    print(f.read())
    print("読み込み終了")
    print("書き込み(エラー)")
    try:
        f.write("Hello, World!")
        print("書き込み終了")
    except Exception as err:
        print(type(err), err, err.args)

# pythonのオブジェクトを文字列に変換せずにファイルに保存したり
# 読み込んだりするためのモジュール
import pickle

d = {'a':1,'b':2}

with open('tmp.txt', 'wb') as f:
    pickle.dump(d, f)

with open('tmp.txt', 'rb') as f:
    o = pickle.load(f)
    print(o)

l1 = [['a','b'], 'c', 'd']
l2 = l1[:] # shallow copy

l1[1] = 'e'
l1[0][0] = 'f'
print(l1, l2, sep="\n")

import copy

l1 = [['a','b'], 'c','d']
l2 = copy.deepcopy(l1) # deep copy
l1[1] = 'e'
l2[0][0] = 'f'
print(l1, l2, sep="\n")

# 0, False, None, 空文字、空の複合オブジェクト以外はTrue
print(bool(0), bool(None), bool(""), bool([]), bool(()), bool({}), bool(set()))
print(bool(10), bool(-10), bool("0"),bool([0]), bool((0,)), bool(set([0])))

入出力結果(Terminal)

$ ./sample.py
('a', 'b') 2
('a', 'b', 'c', 'd', 'e') 5
(1, 5, 6)
読み込み
sample
python
読み込み終了
書き込み(エラー)
<class 'io.UnsupportedOperation'> not writable ('not writable',)
{'b': 2, 'a': 1}
[['f', 'b'], 'e', 'd']
[['f', 'b'], 'c', 'd']
[['a', 'b'], 'e', 'd']
[['f', 'b'], 'c', 'd']
False False False False False False False
True True True True True True
$

0 コメント:

コメントを投稿