모플로 2021. 7. 15. 20:26
반응형

목차

  1. 함수에서 parameter값 전달하는 방식

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이 있음

반응형