Hatena::Groupfukuoka-py

taketin.py RSSフィード

 | 

2011-11-23

初めてのPython 3章プログラムの起動方法, 4章ビルトインオブジェクト

13:25 | 初めてのPython 3章プログラムの起動方法, 4章ビルトインオブジェクト - taketin.py を含むブックマーク はてなブックマーク - 初めてのPython 3章プログラムの起動方法, 4章ビルトインオブジェクト - taketin.py

3章 プログラムの起動方法

モジュール

一つのpythonプログラムファイルの事


インポートする

実行するプログラム内にモジュールを読み込む事。

import hoge

インポートは1セッションにつき1回のみ実行される。

hoge.py をインポートした場合、バイトコードファイルhoge.pycが作成される。

ファイルを見つける > コンパイルしてバイトコード化 > 実行


・reload()

インポートされたファイルを同セッション内でもう一度読み込みなおしたい場合はビルトイン関数 reload() を使用。


・ネームスペース

読み込まれたモジュールはネームスペースになる。

hoge.py の中で宣言された変数 fuga にアクセスするには、呼び出しもとから

hoge.fuga

で呼び出す。

また、

from hoge import fuga

とする事で、変数のコピーを取得する事ができ、呼び出しもとから

fuga

で呼び出せる。


4章 Pythonのビルトインオブジェクト

ビルトインオブジェクトリテラル
オブジェクトの型リテラル性質
数値1234, 3.14不変性
文字列'spam', "spam"不変性
リスト[1, [2, 'three'], 4]可変性
ディクショナリ{'food': 'spam', 'taste': 'yum'}可変性
タプル(1, 'spam', 4, 'U')不変性
ファイルmyfile = open('eggs', 'r')-
その他set, type, None, boolなど-
文字列 == シーケンス
s = 'spam'

・操作方法

インデクシング

s[1]          // s
s[-1]         // m

スライシング

s[1:3]       // pa

連結

s + '1'     // spam1

繰り返し

s * 3      // spamspamspam

・トリプルクォートで複数行改行込みの文字列作成

str = '''
Hello
World.
'''

・頭にr添付でraw(生)文字列

str = r'hoge'

・頭にu添付でunicode文字列

str = u'ほげ'

リスト == シーケンス

リスト内包表記

list = [ [1,2,3], [4,5,6], [7,8,9] ]
col2 = [row[1] for row in list]     // [2,5,8]

ディクショナリ == 写像

シーケンスではないので、並びは一定ではない。

一定に取り出したい場合、ソートすればOK。ビルトイン関数 sorted() が便利。

dic = {'name': 'yamada', 'age', 30}
for key in sorted(dic):
    print key, '=>', dic[key]    // name => yamada

指定したキーを保持しているか

if dic.has_key('name'):
    print 'has'

タプル == シーケンス

リストと違い不変性である。


ファイル
f = open('sample.txt', 'w')
f.write('hogehoge')
f.close()

その他の型

ビルトイン関数 set() で作成する集合型など

x = set('spam')
y = set(['h', 'a', 'm'])

x & y    // 交差 set(['a', 'm'])
x | y     // 結合 set(['a', 'p', 's', 'h', 'm'])
x - y    // 差 set(['p', 's'])

・型チェック

if type(x) == type([]):    // 型でチェック
    print 'list'

if type(x) == list:          // 型の名前でチェック
    pritn 'list'

if isinstance(x, list):      // オブジェクト指向的な確認法
    print 'list'

上記方法で型チェックできるが、動的言語通常型チェックは余り行わない。


ユーザ作成クラス

ユーザ定義クラスは、新たな型作成という事もできる。

定義の一例

class Worker:
    def __init__(self, name, pay):
        self.name = name
        self.pay = pay
    def lastName(self):
        return self.name.split()[-1]
    def giveRaise(self, percent):
        self.pay *= (1.0 * percent)



dir() 関数引数オブジェクトを渡せば持っているメソッド全部確認できる

※ help() 関数で PyDoc へアクセスできる

SanjanaSanjana 2012/06/06 09:46 Short, sweet, to the point, FREE-eaxlcty as information should be!

mwttpbhsghmwttpbhsgh 2012/06/06 16:49 fIsRZI <a href="http://zdemjrbfbayf.com/">zdemjrbfbayf</a>

uudmpcuudmpc 2012/06/07 11:39 Zr47Y2 , [url=http://hyapzwuuusux.com/]hyapzwuuusux[/url], [link=http://vzkrbcljabdm.com/]vzkrbcljabdm[/link], http://wayuiynoxcqn.com/

wawrlhmwawrlhm 2012/06/07 18:09 ITuqFW <a href="http://xzjgddqbbkzd.com/">xzjgddqbbkzd</a>

nntckhnntckh 2012/06/07 22:10 y2bF5R , [url=http://gpzuqwmkxusm.com/]gpzuqwmkxusm[/url], [link=http://koaazijtnztt.com/]koaazijtnztt[/link], http://nxrdhdjfuzmj.com/

ゲスト



トラックバック - http://fukuoka-py.g.hatena.ne.jp/tksthdnr/20111123
リンク元
 |