함수 Import 방법 / 외장함수

2022. 10. 9. 12:35Dev.Program/Python & R

728x90

======== test8.py

207p

모듈 / 패키지

# test8.py
# p207
# 모듈 : 변수, 함수, 클래스, 모아놓은 파일
# 패키지 : 모듈을 모아서 저장하는 폴더

# sum() 두 수를 받아서 합을 구해서 리턴
def sum(a, b):
   return a + b
  • cmd 창에서 함수를 호출해보자!

test8.py 의 위치 : D:\workspace_py\py1\test8.py

 

cmd 창 열기

> d:

  • D드라이브로 이동

> cd D:\workspace_py\py1

  • 파일 들어있는 위치로 이동

> dir

  • 안에 있는 거 확인

> python

  • 파이썬 창으로 이동

 

> sum 함수 찾아보기

  • 이렇게 하면 함수 못찾고 오류남!

> 파일 임포트 해오기

  • test8 파일을 가져오겠다는 명령(모듈 파일)

> 다시 sum 함수 호출

  • test8.sum() 으로 호출!
  • 이제 결과값 잘 나온다

 

# safe_sum() 함수 정의 두 수를 받아서
# type()  타입이 틀리면 "더할 수 없는 데이터입니다" 리턴
#                같으면 두 수 더해서 리턴
def safe_sum(a, b):
   if type(a) != type(b):
       return "더할 수 없는 데이터입니다"
   else:
       return a + b
  • 타입이 다를 때와 같을 때 출력창이 다르다!

 

< 함수 Import 방법 >

# from 모듈이름(파일이름) import 함수이름
# from test8 import sum
# from test8 import sum. safe_sum
# from test8 import *       # 모든 함수 import
# print(sum(1, 2)) # 3
# print(safe_sum(1, 2)) # 3

 

# import 모듈이름(파일이름) as 약자
# import test8 as t8
# print(t8.sum(1, 2)) # 3
# print(t8.safe_sum(1, 2)) # 3

 

# Math 클래스 slov() 원면적 함수
PI = 3.141592
class Math:
   def solv(self, r):
       return PI*(r**2)

print(PI)
# 객체 생성
m = Math()
# solv() 함수 호출
print(m.solv(5))
  •  

  • 우리가 테스트로 출력한 게 cmd 창에도 나온다

 

# 테스트용으로 파일 실행할 때 동작
# import 할 때는 동작안됨
if __name__=="__main__":
   print(PI)
   # 객체 생성
   m = Math()
   # solv() 함수 호출
   print(m.solv(5))
  • 이제 아무것도 안뜬다!
  • if __name__=="__main__":
  • 이거 기억 안나면 그냥 주석처리하깈ㅋㅋㅋ

 

======== test9.py

  • py1_1 Package 만들기
  • py1_1 밑에 py1_2 Package 만들기

 

======== py1_2 패키지 안에 ptest.py 만들기

# ptest.py

def prn():
   print("py1_1 패키지 py1_2 패키지 prn() 함수")

 

< test9.py >

# test9.py

# 패키지 : 파이썬 파일을 계층적으로 관리, 폴더
#          ex) 폴더.폴더.파일이름

# ptest.py 파일 가져오기
# prn() # ptest.py 안에 있는 prn() 함수 호출 못함!
import py1.py1_1.py1_2.ptest
py1.py1_1.py1_2.ptest.prn()

import py1.py1_1.py1_2.ptest as pt # 가장 많이 쓰임
pt.prn()

from py1.py1_1.py1_2.ptest import prn
prn()

 

< 다른 파일의 함수 호출하기 >

# test8.py   sum() safe_sum() 호출
import py1.test8
print(py1.test8.sum(10, 20))
print(py1.test8.safe_sum('a', 40))

import py1.test8 as t8
print(t8.sum(50, 60))
print(t8.safe_sum(70, 80))

from py1.test8 import sum, safe_sum
print(sum(90, 100))
print(safe_sum('a', 'b'))

 

< 외장함수 >

247p

< random() >

# 외장함수   p247 : import 해야만 쓸 수 있는 함수
# 랜덤함수 random()
import random as r
print(r.random())
print(r.randint(1, 10)) # 1 에서 10 사이의 값을 랜덤으로 뽑아옴
  • 랜덤하게 숫자 값 뽑아옴

 

< webbrowser >

# webbrowser
import webbrowser
webbrowser.open("http://www.naver.com")
  • 네이버 창 열림!




======== py2 패키지 만들기

======== test1.py 만들기

확장성 있게 공부하고 싶다면 파이썬을 하기!(R은 그런 게 없음 : 그냥 분석만 하는 거면 r)

  • File | Settings | Project: workspace_py | Python Interpreter

 

  • numpy 검색하고
  • Install 설치하기
  • 설치 완료 시 success 뜸!

 

# 데이터 분석
# numpy   pandas 설치
# numpy : 파이썬에서 과학연산을 쉽고, 빠르게 하는 패키지
#       : 다차원 배열을 효과적으로 관리
# www.numpy.org

import numpy as np

# 배열 생성
data1 = [0, 1, 2, 3, 4, 5]
# numpy 배열객체
a1 = np.array(data1)
print(a1)
print(a1.dtype) # data1 = [0, 1, 2, 3, 4, 5] int32 정수형
print(a1.dtype) # data1 = [0, 1, 2, 3, 4, 5.5] float64 실수형
  • 정수형
  • 실수형

 

a2 = np.array([[1,2,3], [4,5,6], [7,8,9]])
print(a2)
  • 파이썬에는 없는 배열형태로 나타남

 

a3 = np.arange(0, 11, 2)
print(a3)
print(a3.shape) # 1차원 출력
  • shape() 6개 나옴!

 

a4 = np.arange(12).reshape(4, 3) # 4행 3열
print(a4)
print(a4.shape) # (4, 3)
  • 4행 3열로 출력( 다시 차원을 바꾸겠다 - reshape() )

 

# 1 ~ 10 까지 10 개 일정한 간격으로 데이터 만듦
a5 = np.linspace(1, 10, 10) # 1에서 10 까지 10개 만들겠다
print(a5)

# 0 으로 10개 만듦
a6 = np.zeros(10)
print(a6)

# 1 로 10개 만듦
a7 = np.ones(10)
print(a7)

 

# 타입 변환 문자 => float
str_a1 = np.array(['1.5', '5.4', '9', '8'])
num_a1 = str_a1.astype(float)
print(num_a1)



# 난수 발생
ran_a1 = np.random.randint(10, size=(3,4))
print(ran_a1)
  • 3행 4열 형태로 가져옴

 

# 배열 연산
arr1 = np.array([10, 20, 30, 40])
arr2 = np.array([1, 2, 3, 4])
print(arr1 + arr2)
print(arr1 > 20)

 

# 통계 연산
arr3 = np.arange(5)
print(arr3) # [0 1 2 3 4]
print(arr3.sum()) # 합계 10
print(arr3.mean()) # 평균 2.0
print(arr3.min()) # 최소값 0
print(arr3.max()) # 최대값 4
print(arr3.std()) # 표준편차 1.4142135623730951
print(arr3.var()) # 분산 2.0

 

728x90