27 Sep 2017 » python

2017-09-27-python_2

Script를 활용하자.

  • 외부 파일
In [1]:
# check home directory
%pwd
Out[1]:
'/Users/Leo/Blog/2017-09'

다음 스크립트를 미리 작성해 둬야 한다.

  • test.py
  • demo.py
  • demo2.py

test.py

message = "Hello how are you?" for word in message.split(): print (word)

In [2]:
!cat test.py
message = "Hello how are you?"
for word in message.split():
    print (word)
In [3]:
%run test.py
Hello
how
are
you?

demo.py

"A demo module."

def print_b():
    "Prints b."
    print ('b')

def print_a():
    "Prints a."
    print ('a')


c = 2
d = 2
In [4]:
import demo
In [5]:
demo.print_a()
a
In [6]:
demo.print_b()
b
In [7]:
demo.c
Out[7]:
2
In [8]:
demo.d
Out[8]:
2
In [9]:
help(demo)
Help on module demo:

NAME
    demo - A demo module.

FUNCTIONS
    print_a()
        Prints a.
    
    print_b()
        Prints b.

DATA
    c = 2
    d = 2

FILE
    /Users/Leo/Blog/2017-09/demo.py


In [10]:
## 지금까지 사용한 변수가 무엇이며, 그 변수에 대한 자세한 설명
%whos
Variable   Type      Data/Info
------------------------------
demo       module    <module 'demo' from '/Use<...>eo/Blog/2017-09/demo.py'>
message    str       Hello how are you?
word       str       you?
In [11]:
# demo의 메소드 목록 출력
dir(demo)
Out[11]:
['__builtins__',
 '__cached__',
 '__doc__',
 '__file__',
 '__loader__',
 '__name__',
 '__package__',
 '__spec__',
 'c',
 'd',
 'print_a',
 'print_b']
In [12]:
from demo import print_a, print_b

demo 모듈 안에서 print_a, print_b만 import

In [13]:
%whos
Variable   Type        Data/Info
--------------------------------
demo       module      <module 'demo' from '/Use<...>eo/Blog/2017-09/demo.py'>
message    str         Hello how are you?
print_a    function    <function print_a at 0x1047a7158>
print_b    function    <function print_b at 0x1032ede18>
word       str         you?
In [14]:
print_a()
a
In [15]:
## 기존의 값을 reset
%reset
from demo import *
Once deleted, variables cannot be recovered. Proceed (y/[n])? y
In [16]:
%whos
Variable   Type        Data/Info
--------------------------------
c          int         2
d          int         2
print_a    function    <function print_a at 0x1047a7158>
print_b    function    <function print_b at 0x1032ede18>

demo2.py

def print_b():
    "Prints b."
    print ('b')

def print_a():
    "Prints a."
    print ('a')

# print_b() runs on import
print_b()

if __name__ == '__main__':
    # print_a() is only executed when the module is run directly.
    print_a()
In [17]:
import demo2
b
In [18]:
import demo2
if __name__ == '__main__':
    # print_a() is only executed when the module is run directly.
    print_a()

위 코드 때문에 처음 demo2 모듈을 불러왔을 때만 출력을 한다. 두 번째부터는 출력을 하지 않음.

In [19]:
!python demo2.py
b
a

Package 패키지

복수의 모듈을 tree구조로 만들어서 사용

__init__.py 파일이 포함된 디렉토리Main!!

sound/                          Top-level package
      __init__.py               Initialize the sound package
      formats/                  Subpackage for file format conversions
              __init__.py
              wavread.py
              wavwrite.py
              aiffread.py
              aiffwrite.py
              auread.py
              auwrite.py
              ...
      effects/                  Subpackage for sound effects
              __init__.py
              echo.py
              surround.py
              reverse.py
              ...
      filters/                  Subpackage for filters
              __init__.py
              equalizer.py
              vocoder.py
              karaoke.py
              ...

지난번에 포스팅한 자동테스트 패키지도 위와 같은 원리로 만든 것이다.



Related Posts