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파일']

내용을 넣어줘야 한다.


'결과'

'''


============================ Python ============================

+ Recent posts