2014年4月5日土曜日

開発環境

Learning Python (Mark Lutz (著)、Oreilly & Associates Inc)のPART V.(Modules and Packages)、CHAPTER 23(Module Coding Basics)、Test Your Knowledge: Quizを解いてみる。

その他参考書籍

Test Your Knowledge: Quiz

  1. ファイル名に気をつける(if.pyとか予約語とぶつかるようにしない)等以外は、通常のpythonのコードを書いたファイルを作成するのと同じ。
  2. fromステートメントでモジュール名を指定して、importステートメントでそのモジュールからインポートする属性名(全部の場合はアスタリスク「*」)を指定する。(from module import attribute)
  3. 一度インポートしたモジュールを、変更をした上で再度インポートしたい場合はimpモジュールのreload関数を使う必要がある。importステートメントでインポートしたモジュールは、もう一度importステートメントでインポートしてもインポートされない。(パフォーマンスへの影響が大きいため)
  4. 変数名や関数名とインポートするモジュールの属性名が衝突する場合は、fromステートメントではく、importステートメントを使う必要がある。
    1. どこ(どのモジュール)で定義した変数、関数か分かりにくくなる。
    2. 4のように名前が衝突する可能性がでてくる。
    3. reload関数を使用した場合に問題が起きる可能性が出てくる。

コード(BBEdit)

sample.py

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

# a = 10

# def f():
#     print('Hello, World!')

# 書き換え
a = 20

def f():
    print('Hello, World!(2)')

入出力結果(Terminal)

$ python3
Python 3.3.5 (default, Mar 15 2014, 14:51:54) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.2.79)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 100
>>> f = 200
>>> a
100
>>> f
200
>>> from sample import a, f
>>> a
10
>>> f
<function f at 0x100e66680>
>>> f()
Hello, World!
>>>   C-c C-z
[1]+  Stopped                 python3
$ fg
python3
import sample
>>> sample.f()
Hello, World!
>>> sample.a
10
>>> import imp
>>> imp.reload(sample)
<module 'sample' from './sample.py'>
>>> sample.a
20
>>> sample.f()
Hello, World!(2)
>>> a
10
>>> f
<function f at 0x100e66680>
>>> quit()
$

0 コメント:

コメントを投稿