Skip to content

생물정보학 파이썬 변수와함수 모듈 #

Find similar titles

5회 업데이트 됨.

Edit
  • 최초 작성자
    Kyooyeol Lee
  • 최근 업데이트

Structured data

Category
Programming

Chapter 2. 이름(names), 함수(functions)및 모듈(modules) #

Modules(모듈) #

파이썬에서는 다른 언어와 마찬가지로 다양하게 활용하기 위해 만들어진 이미 많은 함수가 있다. 이는 파이썬 설치 시에 library 혹은 module로써 정의되어 있다. 즉 특별한 목적으로 만들어진 외부 소스를 특정 폴더 안에 넣어서 호출할 수 있게 만들어진 것이 모듈이다. 모듈 파일은 대부분 def로 정의된 함수이다. 간단한 사용법은 다음과 같다.

improt name

import 이후에 해당 모듈의 이름을 적어주면 되는데 대부분은 특정 라이브러리 폴더 아래에 있는 파일 이름인 경우가 많다. 예를 들어 OS에 관련된 함수들은 os라는 모듈 안에 많은 것이 정의되어 있으며 다음과 같이 import 해주면 된다.

>>> import os

그러면 이제 os 모듈을 사용할 준비가 된 것이다. 인터프리터 모드에서 os를 입력하면 해당 파일이 있는 위치를 알려준다.

>>> os
<module 'os' from '/usr/local/Cellar/python/2.7.8_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.pyc'>

다음은 이 모듈 안에 어떤 함수가 정의되어 있는지 확인하기 위해서 dir()을 해보면 사용할 수 있는 함수의 목록이 출력된다.

>>> dir(os)
>>> ['EX_CANTCREAT', 'EX_CONFIG', 'EX_DATAERR', 'EX_IOERR', 'EX_NOHOST', 'EX_NOINPUT', 'EX_NOPERM', 'EX_NOUSER', 'EX_OK', 'EX_OSERR', 'EX_OSFILE', 'EX_PROTOCOL', 'EX_SOFTWARE', 'EX_TEMPFAIL', 'EX_UNAVAILABLE', 'EX_USAGE', 'F_OK', 'NGROUPS_MAX', 'O_APPEND', 'O_ASYNC', 'O_CREAT', 'O_DIRECTORY', 'O_DSYNC', 'O_EXCL', 'O_EXLOCK', 'O_NDELAY', 'O_NOCTTY', 'O_NOFOLLOW', 'O_NONBLOCK', 'O_RDONLY', 'O_RDWR', 'O_SHLOCK', 'O_SYNC', 'O_TRUNC', 'O_WRONLY', 'P_NOWAIT', 'P_NOWAITO', 'P_WAIT', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'UserDict', 'WCONTINUED', 'WCOREDUMP', 'WEXITSTATUS', 'WIFCONTINUED', 'WIFEXITED', 'WIFSIGNALED', 'WIFSTOPPED', 'WNOHANG', 'WSTOPSIG', 'WTERMSIG', 'WUNTRACED', 'W_OK', 'X_OK', '_Environ', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '_copy_reg', '_execvpe', '_exists', '_exit', '_get_exports_list', '_make_stat_result', '_make_statvfs_result', '_pickle_stat_result', '_pickle_statvfs_result', '_spawnvef', 'abort', 'access', 'altsep', 'chdir', 'chflags', 'chmod', 'chown', 'chroot', 'close', 'closerange', 'confstr', 'confstr_names', 'ctermid', 'curdir', 'defpath', 'devnull', 'dup', 'dup2', 'environ', 'errno', 'error', 'execl', 'execle', 'execlp', 'execlpe', 'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fchdir', 'fchmod', 'fchown', 'fdopen', 'fork', 'forkpty', 'fpathconf', 'fstat', 'fstatvfs', 'fsync', 'ftruncate', 'getcwd', 'getcwdu', 'getegid', 'getenv', 'geteuid', 'getgid', 'getgroups', 'getloadavg', 'getlogin', 'getpgid', 'getpgrp', 'getpid', 'getppid', 'getsid', 'getuid', 'initgroups', 'isatty', 'kill', 'killpg', 'lchflags', 'lchmod', 'lchown', 'linesep', 'link', 'listdir', 'lseek', 'lstat', 'major', 'makedev', 'makedirs', 'minor', 'mkdir', 'mkfifo', 'mknod', 'name', 'nice', 'open', 'openpty', 'pardir', 'path', 'pathconf', 'pathconf_names', 'pathsep', 'pipe', 'popen', 'popen2', 'popen3', 'popen4', 'putenv', 'read', 'readlink', 'remove', 'removedirs', 'rename', 'renames', 'rmdir', 'sep', 'setegid', 'seteuid', 'setgid', 'setgroups', 'setpgid', 'setpgrp', 'setregid', 'setreuid', 'setsid', 'setuid', 'spawnl', 'spawnle', 'spawnlp', 'spawnlpe', 'spawnv', 'spawnve', 'spawnvp', 'spawnvpe', 'stat', 'stat_float_times', 'stat_result', 'statvfs', 'statvfs_result', 'strerror', 'symlink', 'sys', 'sysconf', 'sysconf_names', 'system', 'tcgetpgrp', 'tcsetpgrp', 'tempnam', 'times', 'tmpfile', 'tmpnam', 'ttyname', 'umask', 'uname', 'unlink', 'unsetenv', 'urandom', 'utime', 'wait', 'wait3', 'wait4', 'waitpid', 'walk', 'write']

그중에 해당 작업 디렉토리를 확인하는 함수를 호출하려면 os.함수명() 과 같이 호출하면 된다. 파이썬은 객체 형식으로 되어 있으므로 . 을 이용하여 "모듈명.함수명"과 같이 사용하면 된다.

>>> os.getcwd()
'/Users/kylee'

그 외에도 로그인 사용자의 결과를 보고 싶다면 다음과 같이 호출한다.

>>> os.getlogin()
'kylee'

그러나 이미 알고 있는 모듈이라 할지라도 사전에 먼저 import를 하지 않으면 다음과 같이 정의되지 않는 이름이라고 name error가 발생하게 된다.

>>> sys
Traceback (most recent call last):
File "<pyshell#103>", line 1, in <module> sys
NameError: name 'sys' is not defined
>>> version
Traceback (most recent call last):
File "<pyshell#105>", line 1, in <module> version
NameError: name 'version' is not defined

대부분의 경우에 "모듈명.함수명" 과 같이 호출하면 되지만 특정 함수를 자주 사용하거나 전체 모듈을 불러오지 않고 특정 함수만 불러올 수도 있다. 이 경우에는 "from 모듈명 import 함수명" 과 같이 분리해서 특정 함수만을 import 시킨다.

>>> from sys import version
>>> version
'3.0 (r30:67503, Jan 2 2009, 12:13:58) \n[GCC 4.0.1 (Apple Inc. build 5488)]'

그러나 최종적으로 sys는 import 되지 않았기 때문에 다음과 같이 사용하고자 한다면 NameError가 발생한다.

>>> sys
Traceback (most recent call last):
File "<pyshell#108>", line 1, in <module> sys
NameError: name 'sys' is not defined

또 다음과 같이 해당 모듈에 관련 함수가 없으면 import 할 수 없으므로 importError가 발생하기 때문에 주의 깊게 사용하여야 한다.

>>> import sys
>>> from sys import version_number
Traceback (most recent call last): File "<stdin>", line 1, in <module>
ImportError: cannot import name version_number 
>>> import version
Traceback (most recent call last): File "<stdin>", line 1, in <module>
ImportError: No module named version

Suggested Pages #

0.0.1_20231010_1_v71