2주 : day6

daye·2023년 3월 8일

달성한 목표

강의 : ~중급19

정리할 파트

강의 : 중급 1~19 요약

1 함수란

함수 = "기능"

  • 함수는 특정기능을 재사용하기 위해 사용한다.

sort() : 정렬

: 리스트를 오름차순으로 정렬하는 함수

  • 숫자; 음수-0-양수 / 문자; 대문자-소문자

reverse() : 수 뒤집기

: 리스트의 순서를 뒤집어줌

clear() : 모두 삭제

: 리스트의 모든 요소 제거

사용자 함수를 만들 때에는 ‘def’를 사용해야 함.
함수를 만들었다고 해서 프로그램에 들어가는 것이 아니라,
단지 선언만 했을 뿐이다.

2 함수 선언과 호출

함수 선언


<작명 할 떄>
변수 -> 데이터 : 명사를 주로 사용
함수 -> 기능 : 동사를 주로 사용

함수 호출

(위 예시)
addCal() --> 함수명()

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

def fun1():
	print('fun1 호출!')
    fun2()
    print('fun2 호출 후에 실행!')

def fun2():
	print('fun2 호출!')
    fun3()

def fun3():
	print('fun3 호출!')
    
fun1()
  • 함수 내에서 또다른 함수를 호출할 수 있다.
  • 함수A 내에서 호출된 함수B를 먼저 처리하고 함수A로 돌아와서 함수B 아래 있는 실행문들을 실행한다.
# 위 실행문 실행 결과
fun1 호출!
fun2 호출!
fun3 호출!
fun2 호출 후에 실행!

pass

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

def printTodayWeather():
	pass

4 인수와 매개변수

인수와 매개변수

  • 함수 호출 시 함수에 데이터를 전달할 수 있다.
def addFunc(n1, n2):
	print(f'{n1} + {n2} = {n1 + n2}')

addFunc(10, 20)
  • 인수와 매개변수 개수는 일치해야한다.
def printNumber(*numbers):
	for number in numbers:
    	print(number, end='')
    print()

printNumber()
printNumber(1)
printNumber(1, 2, 3)
  • 매개변수 개수가 정해지지 않은 경우 '*'를 이용한다

5 데이터 반환

return 키워드

  • 함수 실행 결과를 호출부로 반환할 수 있다.

6 지역변수와 전역변수

전역 변수

  • 함수 밖에서 선언된 변수
  • 어디에서나 사용 가능
  • but 함수 안에서 수정할 수 없다.

지역 변수

  • 함수 안에 선언된 변수
  • 함수 안에서만 사용 가능
    (위 예시에서 파란박스 안의 num_out)

global 키워드

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

7 중첩함수

중첩 함수

def out_function():
	print('out_function called!')
    
    def in_function():
		print('in_function called!')
    in_function()

out_function()			# out_function called!
						in_function called!
in_function()			# NameError: name 'in_function' is not defined
  • 함수 안에 또다른 함수가 있는 형태
  • 내부 함수를 밖에서 호출할 수 없다.

operator

del calculator(n1, n2, operator):
	def addCal():
    	print(n1 + n2)
    def subCal():
    	print(n1 - n2)
    def mulCal():
    	print(n1 * n2)
    def divCal():
    	print(n1 / n2)
    
    if operator == 1:
    addCal()
    if operator == 2:
    subCal()
    if operator == 3:
    mulCal()
    if operator == 4:
    divCal()

while True:
	num1 = float(input('n1 입력: '))
    num1 = float(input('n1 입력: '))
    opeartorNum = int(input(1. 덧 2. 뺄 3. 곱 4. 나눗 5. 종료))
    
    if operatorNum == 5:
    	print('bye')
        break
        
    calculator(num1, num2, operatorNum)

8 lambda 함수

lambda 키워드

  • 함수 선언을 보다 간단히 할 수 있다

9 - 11 모듈/제작/사용

9.

모듈

  • 이미 만들어진 훌륭한 기능
    계산 모듈 / 난수 모듈 / 날짜, 시간 모듈
  • 내부 모듈 : 파이썬 설치시 기본 구성
  • 외부 모듈 : 별도 설치 후 사용 가능 (ex/ pandas, Numpy, 빅데이터 분석 툴 etc)
  • 사용자 모듈 : 사용자가 직접 만든 모듈

random

random.randint

random.randint(n, m)
n부터 m사이의 수 사이의 랜덤 정수를 리턴한다.

random.sample

random.sample(x, y) --> (범위, 갯수)
: 리스트 타입으로 출력됨
x 자리에는 range()가 올 수도 있고, []가 올 수도 있다.

# 0부터 100사이의 난수 10개
import random

rNums - random.sample(range(1, 101), 10)
print(f'난수 10개: {rNums}')

# 난수 10개 : [59, 5, 48, 28, 16, 60, 57, 92, 77, 66]

10.

  • 모듈 : 특정 기능을 가지고 있는 파이썬 파일

11.

import

import ~ as ~

import calculator				#calculator.py 모듈 임포트
calculator.add(10, 20)

import calculator as cal		# as로 모듈 이름 단축
cal.add(10, 20)

실행파일에서 import calculator를 입력하여 모듈 사용

from ~ import ~

from calculator import add
from calculator import sub

# 위 두줄과 같은 기능: from calculaotr import add, sub

add(10, 20)
sub(10, 20)
from calculator import *
# * : '모두' 라는 뜻을 가짐
# 즉, calculator.py 모듈 내 모든 기능을 다 가져오겠다.

append() *메모

array.append()
: 괄호 안에 입력한 값을 array 맨 끝에 객체로 추가한다.

nums = [1, 2, 3]
nums.append(4)			# [1, 2, 3, 4]
nums.append([5, 6])		# [1, 2, 3, 4, [5, 6]]

12 - 13

name 전역 변수

  • name 에는 모듈 이름이 저장되거나 'main'이 저장된다.

14

패키지

: 관련있는 모듈을 그룹으로 관리할 수 있다.

from CalculatorForInt import addCal

실행 파일에서 위와 같은 실행문을 이용해서 아래 모듈 패키지를 이용할 수 있음.

  • 모듈 패키지는 실행파일과 패키지가 같은 디렉토리(폴더) 내에 있을 떄에만 사용 가능.

15

site-packages

  • 이 안에 있는 모듈은 어디서나 사용할 수 있다.
  • 파이썬 기본 제공 모듈. venv 내 위치.

venv (virtual envrionment)

  • venv 라는 디렉토리가 모든 파이썬에 존재.
  • 가상 환경
  • 다른 버전의 환경설정끼리 부딪히지 않게 함
  • site-packages 가 이 안에 존재.
  • 다른 이용하고 싶은 패키지 폴더를 (우클릭-Refactor-Move Directory)를 이용하여 이곳의 site-packages에 옮겨 놓으면 다른 py 파일에서도 사용 가능.
  • 기타 메모
    sys : 시스템에 대한 간략한 정보를 알려주는 모듈
    sys 모듈 중 path : 모듈들이 들어있는 경로를 나열해주는 모듈

소수 & 약수 구하기 모듈 (실습) ***

16

자주 사용하는 모듈

** 외워두면 좋겠다. (아래)

수학 관련 함수

# 합
import random

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'pow(13, 3): {pow(13, 3)}')
print(f'pow(13, 4): {pow(13, 4)}')

# 반올림
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)}')

math 모듈

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)}')

random 모듈

# 0이상 1미만 난수
print(f'random.random(): {random.random()}')

# 1이상 20이하 난수
print(f'random.randint(1, 20): {random.randint(1, 20)}')

# 1이상 20미만 난수
print(f'random.randrange(1, 20): {random.randrange(1, 20)}')

# 1이상 21미만 난수 5개
print(f'random.sample(range(1, 21), 5): {random.sample(range(1, 21), 5)}')

# 무작위 한개 추출
listVar = [0, 1, 2, 3, 4, 5, 6]
print(f'random.choice(listVar): {random.choice(listVar)}')

# 섞음
print(f'listVar: {listVar}')
random.shuffle(listVar)
print(f'shuffle listVar: {listVar}')

time 모듈

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_min: {lt.tm_min}')
print(f'lt.tm_sec: {lt.tm_sec}')
print(f'lt.tm_wday: {lt.tm_wday}')

17

객체 지향 프로그래밍

객체

  • 클래스에서 생성된다
  • 속성과 기능으로 구성된다
  • 코드 재사용, 모듈화에 좋다 (배터리 교체형 자동차)

18 - 19

  • 객체를 이용한 프로그램으로, 객체는 속성과 기능으로 구성된다.

클래스

  • 클래스는 class 키워드와 속성(변수) 그리고 기능(함수)를 이용해서 만든다.

  • 객체는 클래스의 생성자를 호출한다.

객체 속성 변경

  • 객체 속성은 변경할 수 있다.

0개의 댓글