import, 모듈만들기 등을 했다.
============================ Python ============================
import string
print(dir(string))
string.a = 1 # 모듈에 이런 형태로 메서드나 값을 저장할 수 있다.
print(string.a) # 결과는 1.
# 내가 만든 모듈(.py파일) 사용하기. 자바의 .java와 같음. 새로운 클래스를 생성한다고 생각하면 쉽다.
import mymath # 내가 만든 mymath.py. 같은 폴더 안에 있다. 다른 폴더에 있으면 사용 못함.
'''
'mymath.py 내용'
mypi = 3.14
def add(a,b):
return a+b
def area(r):
return mypi * r * r
'''
print(mymath.mypi) # 결과는 3.14
# 다른 위치에 있는 .py파일을 클래스로 가져오기.
import os
print(os.getcwd()) # 일단 현재 위치를 확인. D:\PyCharmData
os.chdir('D:\\PycharmData\\test') # changeDirectory로 경로를 변경
print(os.getcwd()) # D:\PycharmData\test 바꾼 것을 확인.
import mod
print(mod.add(3,4))
import json
dict = {'555':'내용','asdf':'ㅁㄴㅇㄹ'}
with open('j.json', 'w', encoding='UTF-8') as file:
file.write(json.dumps(dict, ensure_ascii=False,indent=4))
# ensure_ascii는 유니코드로 저장되는 것을 막는다.
# indent는 자료 앞 띄어쓰기를 결정. 4라는 건 스페이스가 4개라는 뜻.
with open('j.json', 'r', encoding='UTF-8') as file:
data = json.load(file) # 불러오는 방법. load, loads가 있는데 load를 써야한다.
# loads는 에러 발생. TypeError: the JSON object must be str, not 'TextIOWrapper'
print(data)
mod = '테스트'
print(mod)
import mod
print(mod)
'''
'결과'
테스트
<module 'mod' from 'D:\\PyCharmData\\mod.py'>
'해석'
만약 객체와 클래스가 같은 이름이라면 제일 나중에 입력한 값이 저장된다.
즉, 위의 순서가
import mod
mod = '테스트'
print(mod)
로 바뀌면 '테스트'가 출력된다.
'''
import string
string.a = 'ss' # string모듈에 .a 메서드, 객체는 없다. 새로 생성된 객체이다.
import string
print(string.a)
'''
'결과'
ss
'해석'
import가 두 번 되더라도 이전에 저장된 객체는 유지된다.
'''
from mymath import add, area # mymath에 있는 add, area를 불러온다는 뜻. 다 불러오는 건 *.
print(add(3,4)) # mymath.add로 쓰는 것이 아닌 add만으로 단독으로 쓰게된다.
print(area(5))
import mymath as a # mymath를 a라는 이름으로 불러온다는 뜻. 모듈 이름이 길거나 중복될 때 사용.
print(a.add(1,1))
from mymath import add as a # 이런식으로 사용 가능.
def add(a):
return a+4
print(a(1,2))
print(add(1))
'''
'결과'
3
5
'해석'
add를 a로 불러와서 이후 add()라는 함수를 만들어서 사용해도 두 개가 개별적으로 동작했다.
'''
def stst():
import string # import는 위치에 상관없이 가능하다. 이 함수가 동작하는 동안에만 생성된다.
b = string.ascii_uppercase
return b
print(stst()) # 결과는 ABCDEFGHIJKLMNOPQRSTUVWXYZ.
print(__name__) # 최상위 실행 모듈(내가 쓰는 .py파일)인지 확인하는 방법.
# __main__이 나오면 최상위 모듈이다.
import mod
print(mod.__name__) # 결과는 mod.
### 단위 테스트 ###
def f():
print('ssss')
if __name__ == '__main__':
f() # 결과는 ssss. 최상위 실행 모듈이기 때문에 f()가 동작했다.
import test.mod
print(test.mod.add(5,3))
'''
test 폴더에 __init__.py(아무 내용 없음.)를 추가시켜주면 패키지가 된다.
정상적으로 실행되는 것을 확인.
최상위 폴더에만 있으면 된다. 가령 test/so/mod.py가 있어도 test에만 __init__.py가 있다면
import test.so.mod 로 안의 내용도 사용 가능하다.
*미확인*
from test import * <- 전부 불러오는 *를 쓰고싶으면 __init__ 안에
__all__ = ['다 불러오고 싶은 .py파일']
내용을 넣어줘야 한다.
'결과'
8
'''
============================ Python ============================
'프로그래밍 > Python, R 프로그래밍' 카테고리의 다른 글
[Python] Python 15일차(예제로 배우는 파이썬 데이터 시각화) (0) | 2018.06.07 |
---|---|
[Python] Python 14일차 (0) | 2018.06.04 |
[Python] json.dumps() 이용시 한글이 유니코드로 저장되는 현상 해결 (0) | 2018.05.31 |
[Python] Python 12일차 (0) | 2018.05.30 |
[Python] Python 11일차 (1) | 2018.05.29 |