파이썬 중급 1

한영석·2022년 7월 11일
0

함수란?

  • 함수는 파이썬에서 기본으로 제공하는 내장함구와 사용자가 직접 선언하는 사용자 함수가 있다.

  • 내장함수 : 기본적으로 파이썬 내부에 선언되어있는 함수(개발자들이 미리 만들어서 파이썬 내부에 만들어둔 함수)

  • 사용자함수 : 직접 만들어서 사용하는 함수


함수를 사용하는이유

  • 특정 기능을 재사용하기 위해서 사용한다.

함수를 선언하는 방법

  • 함수는 def키워드, 함수명,:, 들여쓰기를 이용해서 선언한다.

함수를 호출하는방법

  • 함수명과 '()'를 이용해서 함수를 호출한다.

함수 내에서 또 다른 함수를 호출

함수내부에 함수를 호출하여 중복해서 사용할 수 있다.


pass 사용

  • pass를 이용해서 실행문을 생략할 수 있다.

인수와 매개변수

  • 함수 호출시 함수에 데이터를 전달할 수 있다.
def greet(): # 함수 선언부
	print('안녕하세요')
greet()      # 함수 호출부

def greet(customer): # 함수 선언부 customer -> 매개변수
	print(f'{customer} 고객님 안녕하세요.')
greet('홍길동')      # 함수 호출부 홍길동 -> 인수
  • 매개변수는 선언한 함수 내부에서만 사용할수 있다.
  • 매개변수를 두개이상도 사용가능하나 인수도 같은 수의 인수를 사용하여야한다.(매개변수와 인수는 항상 일치하여야한다.)

데이터 반환

  • return 키워드를 이용하여 함수 실행 결과를 호출부로 반환할 수 있다.

함수 실행 결과 반환

  • 함수가 return을 만나면 실행을 종료한다.(return 이후의 구문은 절대 실행이 될수 없다.)

지역변수와 전역변수

  • 전역변수
    • 함수 밖에 선언된 변수로 어디에서나 사용은 가능하지만 함수 안에서 수정할 수는 없다.
  • 지역변수
    • 함수 안에 선언된 변수로 함수 안에서만 사용 가능하다.
num_out = 10 # 전역변수(전역변수이기때문에 함수 안에서 변경할수 없다.)
def printNumbers():
	num_out = 20 # 지역변수 (함수안에서 선언을 했기떄문에 안에서만 사용할 수 있다.)
    print(f'num_out:{num_out}')
    
printNumbers() # 함수를 먼저 실행 했기떄문에 함수에있는 지역변수 20이 먼저 출력된다.
print(f'num_out:{num_out}') 
# 함수 이후에 출력했기때문에 처음 선언한 전역변수에있는 10이 출력된다.

위 코드의 출력 결과로는
num_out: 20
num_out: 10

global 키워드

  • global을 사용하면 함수 안에서도 전역변수의 값을 수정할 수 있다.

중첩함수

  • 함수안에 또 다른 함수가 있는 형태
    • 내부함수는 함수안에서는 호출할 수 있지만 함수 밖에선 호출할 수 없다.(중첩함수로 내부에 함수를선언할경우 내부에서만 사용할 수 있다.)
      내부함수를 밖에서 호출하여 에러가 뜬 예시

lambda 함수

  • lambda 키워드를 이용하면 함수 선언을 보다 간단하게 할 수 있다.
calculator =  lambda n1, n2: n1+n2
# lambda 매개변수 : 계산식으로 선언할수 있다. 
# 간단한 함수는 람다함수로 쉽게 선언할 수 있다.
returnValue = calculator(10, 20)
print(returnValue)

모듈

  • 함수가 선언되어있는 파이썬 파일

  • 내부 모듈 : 파이썬 설치시 기본적으로 사용할 수 있는 모듈

  • 외부 모듈 : 별도 설치 후 사용할 수 있는 모듈

  • 사용자 모듈 : 사용자가 직접 만든 모듈

모듈 만들기

  • 모듈은 측정 기능을 가지고 있는 파이썬 파일을 말한다.

    모듈안의 함수를 사용하기위해선 모듈명.함수명(인수)를 입력해주면 사용할수 있다.

모듈 사용

  • import, as, from ~ as
    • import 키워드를 이용해서 모듈을 임포트 한다.
    • as 키워드를 이용해서 모둘의 이름을 단축 시킬 수 있다.
    • from ~ as 키워드를 이용해서 모듈의 특정 기능만 사용할 수 있다.
from calculator import add, sub # ,콤마로 여러 함수를 불러올수도있다.

실행(메인) 파일 01

__name__전역변수
  __name__에는 모듈 이름이 저장되거나 '__main__'이 저장된다.


패키지

  • 패키지를 이용하면 관련 있는 모듈을 그룹으로 관리할 수 있다.
from CalculatorForInt import divCal, subCal, mulCal, addCal
print(addCal.add(10,20))
print(subCal.sub(10,20))
print(mulCal.mul(10,20))
print(divCal.div(10,20))
print('-'*20)
from CalculatorForFloat import divCal, subCal, mulCal, addCal
print(addCal.add(10,20))
print(subCal.sub(10,20))
print(mulCal.mul(10,20))
print(divCal.div(10,20))

예시

site-packages

  • site-packages에 있는 모듈은 어디서나 사용할 수 있다.

자주사용하는 모듈

  • 기본적으로 알아두면 좋은 모듈
# 수학 관련 함수
# 합
listVar = [2, 5, 3.14, 58, 10, 2]
print(f'sum(listVar) : {sum(listVar)}')

#최대값
listVar = [2, 5, 3.14, 58, 10, 2]
print(f'max(listVar) : {max(listVar)}')

#최소값
listVar = [2, 5, 3.14, 58, 10, 2]
print(f'min(listVar) : {min(listVar)}')

#거듭제곱
print(f'pow(13, 2) : {pow(13, 2)}')

#반올림
print(f'round(3.141592, 1) : {round(3.141592, 1)}')
print(f'round(3.141592, 2) : {round(3.141592, 2)}')
print(f'round(3.141592, 3) : {round(3.141592, 3)}')
print(f'round(3.141592, 4) : {round(3.141592, 4)}')
print(f'round(3.141592, 5) : {round(3.141592, 5)}')

import math
#절대값
print(f'math.fabs(-10) : {math.fabs(-10)}')
print(f'math.fabs(-0.12895) : {math.fabs(-0.12895)}')

#올림
print(f'math.ceil(5.21) : {math.ceil(5.21)}')
print(f'math.ceil(-5.21) : {math.ceil(-5.21)}')

#내림
print(f'math.floor(5.21) : {math.floor(5.21)}')
print(f'math.floor(-5.21) : {math.floor(-5.21)}')

#버림
print(f'math.trunc(5.21) : {math.trunc(5.21)}')
print(f'math.trunc(-5.21) : {math.trunc(-5.21)}')

#최대공약수
print(f'math.gcd(14,21) : {math.gcd(14,21)}')

#팩토리얼
print(f'math.factorial(10) : {math.factorial(10)}')

#제곱근
print(f'math.sqrt(4) : {math.sqrt(4)}')
print(f'math.sqrt(12) : {math.sqrt(12)}')

# 시간 관련 모듈
import time
lt = time.localtime()
print(f'time.localtime() : {lt}')

print(f'lt.tm_year : {lt.tm_year}')
print(f'lt.tm_mon : {lt.tm_mon}')
print(f'lt.tm_mday : {lt.tm_mday}')
print(f'lt.tm_hour : {lt.tm_hour}')
print(f'lt.tm_sec : {lt.tm_sec}')
print(f'lt.tm_wday : {lt.tm_wday}')
profile
코딩공부중

0개의 댓글