함수(Function)

이상해씨·2023년 4월 5일
0

AI 기초

목록 보기
6/15

함수 (Function)

  • 함수 :특정 기능을 수행하는 코드 덩어리

함수특징

  • 코드 재사용
  • 하나의 논리적 단위 (보고서)
  • 캡슐화 :
  • 타인의 코드를 쉽게 사용할 수 있음

함수 선언

  • 함수 이름, parameter, indentation, return value
def 함수 이름(parameter ):
	수행문(statements)
    return 반환값

함수 실행 순서

  • 함수는 상단에 작성하는 것이 좋음
    함수 실행시 메모리가 할당됨
  • 메인 코드 -> 함수 -> 메인프로그랭 수행 -> 함수호출

parameter vs argument

  • parameter : 함수의 입력값

  • argument: parameter의 할당된 값

  • return 값이 없을 경우, print된 부분은 값에 할당이 되지 않는다. (메모리 연결이 안됨.)

  • 함수 실행 후, c 값만 실행시켰을 때, None 나옴

* list에서 sort와 sorted차이

  • sort
    return 값이 없어 화면에는 출력되지 않으나, list 값 자체는 변화

  • sorted
    return 값이 있어 sorted 된 것은 복사해서 출력
    따라서, list 자체 값은 변화하지 않고 그대로 찍힘.

return

  • print는 return 값을 갖지 않는다. (할당 안됨)
  • return print(함수)는 함수값을 출력하고 return은 실행하지 않는다.

return, print에 따른 함수 유형

함수 호출방식

1) call by Value :

  • 함수에 parameter를 넘길 때 값만 넘김.
  • 함수에서 값변경시, 호출자에게 영향 X
    2) call by Reference :
  • 함수에 parameter를 넘길 때 메모리 주소를 넘김.
  • 함수에서 parameter 변경시, 호출자의 값도 변경 (c의 포인터 같은 개념)
    3) call by Object Reference : 객체의 주소가 함수로 전달 (list 방식과 유사)
  • 참조 변경시 호출자에게 영향
  • 새로운 객체 생성시 호출자에게 영향 X
  • swap 기능에 보편적으로 사용됨.
    - 함수를 통해 변수들을 교환

변수의 범위

1) 지역변수 ( local variable) :함수내에서만 사용
2) 전역변수(global variable): 코드 전체에서 사용

  • 지역변수 -> 전역변수 : global 사용

재귀함수 (recursive function)

  • 자기 자신을 호출하는 함수
  • 예를 들어 팩토리얼(factorial)

type hint

  • input, output의 type을 알려줌
  • 인터페이스 명확, parameter 정보를 명확히 파악, 오류 사전확인 가능
def function(name: type) -> return_type:
	pass

docstring

  • 파이썬 함수에 대한 스펙을 미리 작성
  • """로 표시
  • 함수에 대한 설명을 미리 고지함으로써 사용자가 함수를 더 잘 이해할 수 있다.
def function():
	"""목적: return the parameter of the Data root directiory.
    	parameters:
        	a(int) : a devial integer
        returns: 
        	sum(str): string of the sum 
    """
    pass
  • VScode에서 실행

    - 함수에서 ctrl+shift+p, docstring
    ![](https://velog.velcdn.com/images/tett_77/post/41a05750-dfcf-45c7-be45-8653400949cc/image.png)
    ![](https://velog.velcdn.com/images/tett_77/post/1e105286-75d0-446f-9746-cefbaaa423c2/image.png)

함수 작성

  1. 함수는 짧게 여러개 ,
  2. 함수의 의도가 명확
  3. 띄어쓰기는 _
  4. 통일성
  5. 받은 값을 바꾸는 것은 ㅈ다제

함수 만드는 상황

  1. 여러번 사용하는 기능
  2. 복잡한 수식
  3. 복잡한 조건

코딩 컨벤션

사람이 이해할 수 있는 코드를 짠다. -마틴 파울러-
외계인 코드가 되지 않도록 코딩

  • flask8 모듈을 사용하여 코딩 컨벤션에 적합한 지 확인할 수 있다. (확인용)
  • black 모듈을 사용하여 자동으로 수정할 수 있다.(자동수정용)
  • flake8 -> black-> flake8

참고

profile
공부에는 끝이 없다

0개의 댓글