반응형
목차
1. 함수에서 parameter값 전달하는 방식
- Call by Value (값에 의한 호출)
- 함수에 인자를 넘길 때 값만 넘김
- 함수내에 인자 변경시 호출자에게 영향이 가지 않음
- Call by Reference (참조에 의한 호출)
- 함수에 인자를 넘길 때 메모리 주소를 넘김
- 함수내에 인자값 변경시 호출자의 값도 변경됨
- Call by Object Reference 또는 Call by assignment (객체 참조에 의한 호출)
- Python에서 사용하는 방식
- 객체의 주소가 함수로 전달
- 전달된 객체를 참조하여 변경 시 호출자에게 영향을 줌
- 하지만 전달받은 객체에 새롭게 값을 할당할 경우 호출자에게 영향을 주지 않음
def re(x): x.append(1) print(x) #[0,1] x=["AB","CD"] # 여기서 메모리 주소 연결이 끊어지고 새롭게 할당됨 print(x) #["AB","CD"] temp = [0] re(temp) print(temp) #[0,1]
2. Scoping Rule (변수의 범의)
- 지역변수(local variable): 함수내에서만 사용
def test(t): print(x) -> 1) 10 t = 20 print(t) -> 2) 20 x = 10 test(x) print(t) -> Error
- 전역변수(global varible): 프로그램 전체에서 사용
- 변수를 선언할 때 global 키워드 사용 ex) global gl = "I am global"
def test(t): print(x) -> 1) 10 global t = 20 print(t) -> 2) 20 x = 10 test(x) print(t) -> 3) 20
3. Recursive Function (재귀함수)
- 자기자신을 호출하는 함수
- 점화식과 같은 재귀적 수학 모형을 표현할 때 사용
- 재귀종료 조건 존재함, 종료 조건까지 함수 호출 반복
- 대표적으로 Factorial이 있음
4. Function Type Hint
```
def make_hello(name: str) -> str:
return f"hello {name}"
```
5. Function Docs
- vscode에 python docstring generator 사용
6. 함수 작성 가이드라인
- 함수는 가능하면 짧게 생성 (줄수 줄이기)
- 함수명에 역할 의도 명확히 (동사,목적어, 띄어쓰기는 _ 사용)
- 하나의 함수에는 유사한 역할을 하는 코드만 포함
- 프린트문 남발 X
- 인자로 받은 값 자체를 바꾸지 말기 (복사해서 사용 -> a[:] or copy.deepcopy(a))
- 공통함수를 사용할 때
- 복잡한 수식은 함수로
- 복잡한 조건은 함수로
코드규칙으로 구글 파이썬 컨벤션을 확인해보자 -> 추후에 공부할 예정
prettier + lint 역할을 하는 conda install black이 있음
반응형
'부스트캠프 AI Tech 2기 > Precourse' 카테고리의 다른 글
Python Module, Package (0) | 2021.07.18 |
---|---|
Python OOP(Object Oriented Programming) (0) | 2021.07.18 |
Python Pythonic (0) | 2021.07.18 |
Python Data Structure (0) | 2021.07.15 |
Python String에 대해서 (0) | 2021.07.14 |