開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Python (プログラミング言語)
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
- ファイル名に気をつける(if.pyとか予約語とぶつかるようにしない)等以外は、通常のpythonのコードを書いたファイルを作成するのと同じ。
- fromステートメントでモジュール名を指定して、importステートメントでそのモジュールからインポートする属性名(全部の場合はアスタリスク「*」)を指定する。(from module import attribute)
- 一度インポートしたモジュールを、変更をした上で再度インポートしたい場合はimpモジュールのreload関数を使う必要がある。importステートメントでインポートしたモジュールは、もう一度importステートメントでインポートしてもインポートされない。(パフォーマンスへの影響が大きいため)
- 変数名や関数名とインポートするモジュールの属性名が衝突する場合は、fromステートメントではく、importステートメントを使う必要がある。
-
- どこ(どのモジュール)で定義した変数、関数か分かりにくくなる。
- 4のように名前が衝突する可能性がでてくる。
- 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 コメント:
コメントを投稿