Recent Posts
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
250x250
Tags
- AI 플랫폼을 활용한 데이터 분석
- DB
- python
- Machine Learning
- 파이썬
- 빅분기
- 인공지능기초다지기
- boostcourse
- [멀티잇]데이터 시각화&분석 취업캠프(Python)
- 부스트코스
- 난생처음 R코딩&데이터 분석 저서
- 빅데이터분석기사
- 데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- 코딩테스트
- PY4E
- 데이터베이스
- r
- 프로그래머스
- Oracle
- boostcoures
- 이기적
- 네이버부스트캠프
- 정보처리기사
- 이것이 취업을 위한 코딩테스트다 with 파이썬
- 기초다지기
- 코딩테스트 python
- 빅데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- SQL
- 오라클
- Ai
- Today
- Total
매일공부
[AI 기초 다지기] 파이썬 advanced function 본문
- 함수 호출 방식
- Call by Value 값에 의한 호출
- 기본 데이터 타입의 값이 전달될 때
- 함수에 인자를 넘길 때 "값만 넘김"
- 함수 내 인자 값 변경 시, 호출자에게 영향x
def f(x): ~~
a = 5
f(a) > a값이 복사되어 x에 들어감
def f(x): x = 7 ~~
a = 5
f(a) > x값이 7로 바뀌어도 a값에는 변화x
- Call by Reference 참조에 의한 호출
- 집합 데이터 타입인 경우
- 함수에 인자를 넘길 때 "메모리 주소"를 넘김
- 함수 내 인자 값 변경 시, 호출자의 값도 변경됨
- Call by Object Reference 객체 참조에 의한 호출
- 파이썬 함수 호출 방식 > 객체의 주소(위치)가 함수로 전달
- 전달된 객체를 참조하여 변경시 호출자에게 영향o
but, 새로운 객체를 만들 경우 호출자 영향x
- 교환 swap
- 함수를 통해 변수 간의 값을 교환하는 함수
def swap_value (x, y):
temp = x
x = y
y = temp
|
def swap_offset (offset_x, offset_y):
temp = a[offset_x]
a[offset_x] = a[offset_y]
a[offset_y] = temp
|
def swap_reference (list, offset_x, offset_y):
# temp_list = list_a[:] temp = list[offset_x]
list[offset_x] = list[offset_y]
list[offset_y] = temp
|
변경x | a 리스트의 전역 변수 값을 직접 변경 | a 리스트의 객체 주소 값을 받아 값 변경 > 리스트 값을 직접적으로 변경하는 것은 위험 > 호출된 값 변경 위험 UP > #처럼 복사하는 과정이 있으면 좋음 |
a = [1,2,3,4,5]
swap_value(a[1], a[2])
print (a) #[1,2,3,4,5]
swap_offset(1,2)
print (a) #[1,3,2,4,5]
swap_reference(a, 1, 2)
print (a) #[1,2,3,4,5]
- 변수의 범위 Scoping Rule >> 스코핑 룰(scoping rule)
- 변수가 사용되는 범위(함수 or 메인 프로그램)
- 지역변수 local variable : 함수 내에서만 사용
- 전역변수 global variable : 프로그램 전체에서 사용
- 이름 검색 규칙(LGB 규칙)
: 변수가 호출 및 실행되는 우선순위
: Local(지역) > Global(전역) > Built-in(내장)
: 함수 호출 시 LGB 규칙 이루어짐
: 네임스페이스(namespace, 이름공간)의 영역과 LGB 규칙은 역순
def test(t):
print(x) #이 x값은 변화가 없음
t = 20 #지역변수
print ("In Function :", t)
x = 10
test(x)
print(t) #전역변수 > 위 t는 지역변수이기 때문에 밖의 t(전역변수)는 정의x
- 함수 내에 전역변수와 같은 이름의 새로운 지역변수 생성 가능
def f():
s = 'I love London!' #지역변수
print(s)
s = 'I love Paris!' #전역변수
f()
print(s)
#I love London!
#I love Paris! > 서로 다른 변수이기에 다르게 나옴
- 함수 내에서 전역변수 사용 시, global 키워드 사용
def g():
global s
s = "I love London!"
print(s)
s = "I love Paris!"
g()
print(s)
#I love London!
#I love London! > 전역변수로 s를 선언했기에 값 변경
- 재귀함수 recursive Function
- 자기자신을 호출하는 함수
- 점화식과 같은 재귀적 수학 모형을 표현할 때 사용(팩토리얼 계산 등)
- 재귀 종료 조건 존재, 종료 조건까지 함수 호출 반복
# n == 1이 아닐때 까지 자신의 함수를 계속 호출
def factorial(n):
if n == 1:
return 1
else:
return n + factorial(n-1)
print (factorial(int(input("Input Number for Factorial Calculation: "))))
#5! = 5(4)(3)(2)(1) = 120
- function type hints
- 파이썬의 가장 큰 특징 : dynamic typing
- 처음 함수를 사용하는 사용자가 interface를 알기 어렵다는 단점
- python 3.5 버전 이후로는 PEP 484에 기반하여 type hints 기능 제공
- Type hints의 장점
- 사용자에게 인터페이스 명확히 명시 가능
- 함수의 문서화시 parameter에 대한 정보 명확히 알 수 있음
- mypy 또는 IDE, linter 등을 통해 코드의 발생 가능한 오류를 사전에 확인
- 시스템 전체적인 안정성 확보
- function docstring
- 함수에 대한 상세스펙을 사전에 작성 > 함수 사용자의 이해도 UP
- 함수명 아래, 세개의 따옴표로 docsing 영역 표시
728x90
'Programming > Python' 카테고리의 다른 글
[AI 기초 다지기] 파이썬 데이터 구조, 자료구조 (0) | 2022.07.30 |
---|---|
[AI 기초 다지기] 파이썬 - 함수 개발 가이드라인 (0) | 2022.07.29 |
[AI 기초 다지기] 파이썬 condition, loop 예제; random.randint (0) | 2022.07.27 |
[AI 기초 다지기] 파이썬 debugging; __name__ (0) | 2022.07.26 |
[AI 기초 다지기] 파이썬 논리키워드 & Boolean (0) | 2022.07.25 |
Comments