BootCamp/모두의연구소:오름캠프

24.01.08

혼복필 2024. 1. 8. 18:26
728x90
300x250
SMALL

오늘은 벌써 3주 차가 시작되었습니다.

각자 Class를 배정받았고 8명씩 구성되었습니다.

월요일 아침이라 바로 수업을 진행하시진 않았어요.

강사님 최고

 

아침 1시간 동안 저를 포함한 여덟 분을 알아갈 시간이었어요.

안타깝게 두 분은 오늘 참여하시질 못하셨어요.

각자 어디에 거주하고, 학과는 어떤지, MBTI와 희망하는 분야로 많은 소통을 한 것 같아요.

그리고 Class1의 멘토님도 만났습니다.

 

간단하게 몸도 풀고 목도 풀고 자세를 고쳐 앉으며 수업을 진행할 준비를 다 마쳤어요.

본격적으로 함수에 들어가는 날입니다.

함수는 예제로도 접하고 실제 프로젝트 하면서도 해봤지만 이해하는 듯싶을 때 또 헷갈리는 거 같아요

 

학습 순서로는 함수에 대해 알아보고 간단한 함수를 만들었어요.

그리고 아큐먼트와 파라미터, 지역변수, 전역변수, pass, 빌트인 함수와 연습문제로 오늘 수업을 마쳤습니다.

 

함수란?

1. 모든 프로그래밍의 기본 구성 요소 중 하나

2. 특정 작업을 수행하는 코드 블록을 하나의 이름 아래로 모음

3. 함수명을 호출하여 코드 블록을 실행할 수 있음

 

 

함수의 정의

만들 때 def 키워드 사용

함수의 이름을 적고 콜론(:)을 붙임

이 키워드를 통해 Python에 새로운 함수 my_function이 정의되었음을 알림

들여 쓰기 (Tab키 또는 띄어쓰기 4칸)

함수를 사용하지 않으면 코드의 가독성이 떨어지며 유지보수에 어려움

 

함수의 기본 구조

선언 : def

이름 : function_name (사용자 지정)

입력 : x, y는 function_name에서 사용할 변수, 매개변수 (파라미터)

기능과 연산 : z = x + y는 function의 내부에서 수행되는 연산 

(아무 코드를 넣지 않았을 경우에는 pass 키워드를 포함해야 error 발생 안 함)

출력 : function에서 값을 변환 (print문으로 값 출력)

호출 : function_name(x, y)로 함수 호출

 

기본 구조 실습

1. 입력 매개변수가 없고, 반환 값도 없는 함수

2. 파라미터가 없고, 반환 값은 있는 함수

3. 입력 매개변수가 있고, 반환 값이 없는 함수

4. 입력 매개변수가 있고, 반환 값이 있는 함수

등으로 기본 구조 실습을 진행하였습니다.

 

+ print는 화면에 찍어내는 일만 하는 특징

+ return은 화면에 어떤 값을 찍어내지 않더라도 특정한 값을 가지도록 만들어진 함수

 

파라미터와 아규먼트란?

함수의 아규먼트(argument)와 파라미터(parameter)는 프로그래밍에서 함수를 정의하고 호출할 때 사용

파라미터 (parameter) : 함수를 정의할 때 사용되는 변수, 파라미터는 함수가 호출될 때 들어온 값을 변수에 할당하는 역할

아규먼트 (argument) : 함수를 호출할 때 전달하는 실제 값, 함수 호출 시 파라미터에 할당

+ 함수를 정의할 때 설정된 파라미터의 수와, 함수 호출 시 전달되는 아규먼트의 수가 일치해야 함

 

1. 파라미터의 기본 사용

=  키워드 인자(keyword arguments)를 사용하여 원하는 파라미터에 값을 할당

2. 기본값을 가진 파라미터

= 기본값이 설정된 파라미터는 함수 호출 시 생략할 수 있음, 함수 호출 시 기본값이 아닌 다른 값을 사용하려면 새 값을 전달

3. 일부 파라미터만 기본값을 가지는 경우 (잘못된 ex)

= python에서는 기본값이 없는 파라미터가 기본값을 가진 파라미터 뒤에 올 수 없음

4. 일부 파라미터만 기본값을 가지는 경우 (올바른 ex)

= b와 c 파라미터에 기본값을 설정하면 a는 기본값이 없음, 기본값이 없는 파라미터에는 반드시 값을 전달해야 함

 

+ 컨밴션 자료형을 아규먼트로 넣었을 때

 

 

+ 권장하지 않는 기본값

Python에서 함수의 기본값은 함수가 정의될 때만 한 번 평가,

리스트와 같이 변경 가능한 객체를 기본값으로 사용할 때 문제 될 수 있음

= 기본값은 함수가 정의될 때 한 번만 생성, 같은 리스트 객체가 모든 함수 호출에 대해 공유

이 때문에 리스트가 변경될 때마다 (함수가 호출될 때마다) 변경된 내용 유지 = 예상치 못한 결과 초래 할 수 있음

 

파라미터의 기본값을 None로 설정, 함수 본문 내에 None 값을 새로운 리스트로 바꾸어

주어, 함수, 호출, 사이에 리스트가 공유되지 않도록 함

= 함수 호출이 독립적인 리스트를 가지게 되어 예상치 못한 부작용을 피할 수 있음

 

지역 변수

= 함수 내부에서만 정의되고 사용되는 변수

이를 통해 다른 함수나 프로그램의 전체 흐름에 영향을 주지 않고 함수 내부에서만 데이터 관리 가능

여러 개발자가 작업할 때 변수 이름 충돌을 방지, 코드의 유지 보수를 용이하게 함

+ 지역에 선언된 변수 목록을 보려면 locals()를 사용하면 됨

 

전역 변수

= 전역 변수는 프로그램 전체, 어떤 함수에서도 접근 가능한 변수

함수 내부에서 함수 외부에 정의된 변수를 변경하려면 그 변수를 global로 선언

+ 키워드 사용 시 함수 내부에서 전역 변수를 참조하고 수정할 수 있음

함수 안에서 전역 변수를 global 키워드 없이 수정하는 것을 허락하지 않음, 따라서 error 발생

불러와서 읽기만 하는 경우는 사용 가능, 이처럼 변수를 쓰지 않아도 외부 변수에 접근하는 것은 가능

 

 

다른 예제로 예를 들어 여러 개의 중첩 함수를 정의하고 호출하면서 지역 변수 a의 스코프를 보여주면

각 함수(f, ff, fff) 내에서 a라는 이름의 지역 변수가 따로 생성되고, 해당 함수의 스코프 내에서만 그 변수가 유효함

 

Pass

1. Python에서 아무것도 하지 않는 구문

2. pass가 있는 위치에서 어떠한 연산도 수행되지 않음

3. pass문은 코드의 특정 부분이 아직 구현되지 않았을 때 유용하게 사용

 

빌트인 함수(Built-in Function)란?

Built-in functions 또는 내장 함수는 파이썬 언어에 기본적으로 포함되어 있는 함수들

이러한 함수들은 추가적인 코드를 작성하지 않고도 사용할 수 있음 (개발자의 효율적인 코드작성을 도움)

 

빌트인 함수 종류

1. 요소 전체의 True, False 판별 : all, any

= all() 함수는 iterable(반복 가능한) 객체(튜플, 리스트, 문자열 등)를 인수로 받아 그 안에 있는 모든 요소가 T로 평가되면 T반환

그렇지 않으면 F반환

= any() 함수도 마찬가지
2. 숫자를 문자로 바꾸거나 문자를 숫자로 바꾸는 함수 : chr, ord

= chr() 함수는 정수를 인수로 받아 그에 해당하는 유니코드 문자를 반환

= ord() 함수는 문자를 인수로 받아 그 문자의 유니코드(또는 ASCII 코드) 값을 반환 (int 함수도 ord와 같은 기능)

3. 함수와 순회할 수 있는 객체의 연산 : map, filter

= map() 함수는 기존의 리스트(또는 튜플)의 모든 요소에 특정 함수를 적용한 결과를 map 객체 형태로 반환

map 객체는 다시 list() 형태로 변환할 수 있음

= filter() 함수는 순회할 수 있는 객체의 요소 중 특정 조건을 만족하는 요소만을 선택하여 반환

filter 함수도 list() 형태로 변환할 수 있음

4. 순회할 수 있는 객체의 묶음 : zip

= zip() 함수는 여러 개의 순회할 수 있는 객체의 요소를 묶어서 반환
5. 형식 변환 : format

= format() 함수는 특정 값을 지정된 형식으로 변환하여 문자열로 반환
6. 길이 반환 : len

= len() 함수는 주어진 시퀀스(문자열, 리스트, 튜플 등) 또는 컬렉션(딕셔너리, 세트 등)의 길이(요소의 개수)를 반환
7. 큰 값, 작은 값, 다 더한 값 : max, min, sum

= max, min, sum 등의 내장 함수를 사용하여 최댓값, 최솟값, 모든 요소의 합을 구할 수 있음
8. 문자열, 대표 문자열, 문자열 출력 : str, repr, print

= print 함수는 Python의 내장 함수로, 객체를 문자열 형태로 출력

객체가 __str__ 메서드를 가지고 있으면, 이 메서드를 호출하여 출력할 문자열을 얻음

= repr 함수는 Python의 내장 함수로, 객체의 "공식" 문자열 표현을 가져옴

9. 순회할 수 있는 객체 : enumerate, range

= range 함수는 순회할 수 있는 숫자 객체를 만들어주는 함수, 기본 구조는 range(start, stop, step)

= enumerate 함수는 반복할 수 있는 객체의 인덱스와 값을 함께 반환하며 주로 반복문에서 사용

10. 역순과 정렬 : reversed, sorted

sorted 함수는 시퀀스를 정렬하여 새로운 리스트를 반환

= reverse 및 key 아규먼트를 전달하여 정렬 방법을 사용자가 원하는 대로 변경할 수 있음

 

등으로 함수에 대해 알아보는 시간을 가졌습니다.

꼭 필요하고 효율적인 만큼 정확히 알고 넘어가야 할 부분이 많은 것 같아요.

앞으로 코딩하게 되면서 자주 사용해야 하니 복습에 복습을 반복하여 학습해야 할 것 같습니다.

728x90
300x250
LIST

'BootCamp > 모두의연구소:오름캠프' 카테고리의 다른 글

24.01.10  (2) 2024.01.10
24.01.09  (2) 2024.01.09
23.01.05  (4) 2024.01.05
24.01.04  (4) 2024.01.05
24.01.03  (5) 2024.01.03