[파이썬] 010_함수 & 모듈 & 패키지(중급) ⭐️

Soo·2023년 8월 6일
0

✏️ 함수

함수 명령 실행!!!

  • 함수명 (실행부의 변수 이름)
  • pass 키워드 사용 : 실행문 생략 조건문 either
  • 종류
    * 내장 함수
    * 사용자 함수

💡 인수와 매개변수

  • 매개 변수 : 호출부와 선언부를 이어줌, 매개변수에 인수 대입, 매개변수가 없으면 함수 그 자체 진행
  • 인수 : 대입할 데이터
def greet (customer) :					--- 선언부
	print(f'{customer} 고객님 안녕하세요.')	--- 실행부
    
greet('홍길동')							--- 호출부

/ customor - 매개변수 
/ '홍길동' - 인수
  • 매개변수와 인수의 개수는 일치해야 한다.

  • 매개변수 개수가 정해지지 않은 경우 앞에 * 사용

    	def printNumber(*numbers) :
    		for number in numbers : 
    			print(number)
    
    	printNumber ( )
    	printNumber (1,2)
    	printNumber (1,2,3)

💡 전역 변수, 지역 변수, global 변수

  • 종류

    • 전역 변수 : 함수 바깥에서 지정된 변수
    • 지역 변수 : 함수 안에서 지정된 변수
    • global 변수 : 지역 변수값을 전역 변수로 저장
  • 전역 변수 VS 지역변수 : 전역과 지역은 이름이 같아도 동명이변(?)일뿐 노는 바운더리가 다름

  • global 변수 : 변수 대통합 권력

    	<누적 방문객 카운트>'
    	totalVisit = 0             - 전역변수
    	def countTotalVisit() : 
    		glbal totalVisit       - global 변수
      
    		totalVisit += 1        - 지역변수
    		print(f'누적 방문객 : {totalVisit}')
      
    	countTotalVisit( )
    	countTotalVisit( )
    	countTotalVisit( )
    	countTotalVisit( )
    	---
    	누적 방문객 : 1
    	누적 방문객 : 2
    	누적 방문객 : 3
    	누적 방문객 : 4
    
    	❌오답❌
    	totalVisit = 0
    	def countTtlVisit ():
    		totalVisit+=1
      print (f'누적 방문객 : {totalVisit}')
      
    	countTtlVisit ()
    	countTtlVisit ()
    	countTtlVisit ()
    	countTtlVisit ()
    	---
    	UnboundLocalError: cannot access local variable 'totalVisit' where it is not associated with a value)

💡 사용자 함수

def 함수명 ( ) :
        실행구

💡 return (키워드)

  • return : 함수 실행 결과를 호출부로 반환 실행

  • return 명령어를 만나면 함수는 종료됨

  • 값이 계산되는 함수에는 return 걸어주기

    	def calculator(n1,n2):
    		result = n1+n2
    		return result
      
    	print(f'returnValue : {calculator(20,10)}')
    	---
    	returnValue : 30
    
    	/return result를 사용하지 않으면 선언만 진행 & 실행 X
    	 따라서 결과값 none

💡 중첩 함수

  • 호출을 1번만 해도 실행이 여러개 가능한 기능

  • 내부 함수를 바깥으로 호출 불가능

💡 lambda 함수

✏️ 모듈

  • 함수 / 변수 / 클래스를 모아둔 .py 파일
  • 기초 모듈 정리 (클릭)
  • 관련 키워드
    • import
    • as
    • from ~ as
  • 종류
    • 내부 모듈 : 파이썬 기본 모듈
    • 외부 모듈 : 설치후 사용할 수 있는 모듈
    • 사용자 모듈 : 사용자가 직접 만든 모듈

💡 모듈 가져오기

  • import
    기본적으로 사용하는 키워드

  • from A(모듈/패키지) import B(함수/모듈)

    	<모듈 파일> - 파일명 : calculator
    	def add (n1, n2) :
    		print(f'덧셈 결과 : {n1 +n2}')
      
    	def sub (n1, n2) : 
    		print(f'뺄셈 결과 : {n1 - n2}')
      
    	<실행 파일>
    	from calculator import add
    	from calculator import sub
    	-> from calculator import add,sub으로도 표기 O
    
    	add(10,20)
    	sub(10,20)
  • as
    기존 모듈 이름을 별칭으로 단축시킬 수 있는 기능

    	<모듈 파일> - 파일명 : calculator
    	def add (n1, n2) :
    		print(f'덧셈 결과 : {n1 +n2}')
        
    	def sub (n1, n2) : 
    		print(f'뺄셈 결과 : {n1 - n2}')
            
        <실행 파일>
    	import calculator as cal
    
    	cal.add(10,20)
    	cal.sub(10,20)
    	
    	/cal = 모듈, add & sub = 함수

💡 if _ _name_ _ == '_ _ main_ _'

  • 모듈 파일에 출력같은 다양한 output 기능이 있을 수 있으나, 실행 파일에서 이를 실행하고 싶지 않을 때 _ _name _ _ 을 통해 컨트롤 할 수 있다.

  • name (지금 파일)이 main(실행 파일)일 때!!!

    	<모듈 파일> - 파일명 : unitConversion
    	def cmToMm(n) :
    		return round (n*10,3)
      
    	def cmToInch(n) :
    		return round (n * 0.393,3)
      
    	if __name__ == '__main__' :
    		print(f'10cm : {cmToMm(10)}mm')
    		print(f'10cm : {cmToInch(10)}inch')
    
    	<실행 파일>
    	import unitConversion as uc
    
    	if __name =='__main__' :
    		inputNumber = int(input('길이(cm) 입력 : '))
    
    	returnValue = uc.cmToMm(inputNumber)
    	print(f'{inputNumber}cm :{returnValue}mm')
    
    	returnValue = uc.cmToInch(inputNumber)  --- 변수 재설정
    	print(f'{inputNumber}cm :{returnValue}Inch')
    
    	<출력 파일>
    	모듈 파일 - 10cm : 100mm \n 10cm : 3.93inch
    	실행 파일 - 위 내용 출력 없이 실행 파일 값만 출력됨 ∵ 실행 파일에선 모듈 파일이 메인이 아니기 때문

✏️ 패키지

: 모듈을 관리하는 일종의 폴더

💡 from 명령어

패키지가 다른 모듈을 불러올 때 사용

from 패키지명 Import 모듈명

💡 site package

  • 본디 모듈은 실행 파일과 같은 패키지 안에 있어야 불러올 수 있음
  • but, site package 폴더에 두면 어디서든지 불러올 수 있음

 

현재 '제로베이스 데이터 취업 스쿨' 수강중

profile
데린이인데요 ໒꒰ྀ ˶ • ༝ •˶ ꒱ྀིა (잘못 된 부분은 너그러이 알려주세요.)

0개의 댓글

관련 채용 정보