ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 49 - 프로그램, 루틴, 프로시저, 메서드, 함수
    study with Q - 파이썬 2024. 6. 2. 17:58

    # 프로그램(program)

    : 미리 작성한 것

     

    코드 전체에서 - 프로그램(program), 루틴(routine)

    디른 의미로 변경 -  절차(procedure), 방법(method)

     

    예시) 케이크를 먹는 프로그램

     

    한 입 냠)

    print("400g의 케이크가 있다.")
    
    # 케이크를 먹는 프로그램, 루틴
    cake = {
      "name":"dankge",
      "left": 400
    }
    
    # 케이크를 먹는 서브프로그램, 서브루틴
    print("케이크를 80g 자른다")
    print("냠")
    cake["left"] -= 80
    
    print(f"남은 케이크의 무게는 {cake['left']}이다.")
    >>>
    400g의 케이크가 있다.
    케이크를 80g 자른다
    냠
    남은 케이크의 무게는 320g이다.

     

    #서브 프로그램, 서브 루틴 전용 문법, def

     

    print("400g의 케이크가 있다.")
    
    # 케이크를 먹는 프로그램, 루틴
    cake = {
      "name":"dankge",
      "left": 400
    }
    
    # 케이크를 먹는 서브프로그램, 서브루틴
    def var():
      print("케이크를 80g 자른다")
      print("냠")
      cake["left"] -= 80
      print(f"남은 케이크의 무게는 {cake['left']}g이다.")
      print()
    
    print(var())
    print(var())
    >>>
    400g의 케이크가 있다.
    케이크를 80g 자른다
    냠
    남은 케이크의 무게는 320g이다.
    
    None
    케이크를 80g 자른다
    냠
    남은 케이크의 무게는 240g이다.
    
    None

     

    None은 왜 나오고 있는 걸까... 🧐

    더보기

    함수의 리턴값이 print 문에 의해 출력이 된 것인데요.

    해당 함수의 리턴값을 정해놓지 않앗기 때문에, None이 출력된 것이예요.

    해당 함수에서의 출력만 해보시려 하신 듯 한데, 그렇다면, print문 없이 작성하시면 None이 출력되지 않습니다.

     

    print("400g의 케이크가 있다.")
    
    # 케이크를 먹는 프로그램, 루틴
    cake = {
      "name":"dankge",
      "left": 400
    }
    
    # 케이크를 먹는 서브프로그램, 서브루틴
    def var():
      print(f"케이크를 {이만치}g 자른다")
      print("냠")
      cake["left"] -= 이만치
      print(f"남은 케이크의 무게는 {cake['left']}g이다.")
      print()
    
    이만치 = 80
    print(var())
    이만치 = 120
    var()
    >>>
    400g의 케이크가 있다.
    케이크를 80g 자른다
    냠
    남은 케이크의 무게는 320g이다.
    
    케이크를 120g 자른다
    냠
    남은 케이크의 무게는 200g이다.

     

    코드 긴 거 싫어...

     

    print("400g의 케이크가 있다.")
    
    # 케이크를 먹는 프로그램, 루틴
    cake = {
      "name":"dankge",
      "left": 400
    }
    
    # 케이크를 먹는 서브프로그램, 서브루틴
    def para(이만치):
      print(f"케이크를 {이만치}g 자른다")
      print("냠")
      cake["left"] -= 이만치
      print(f"남은 케이크의 무게는 {cake['left']}g이다.")
    
    para(100)
    >>>
    400g의 케이크가 있다.
    케이크를 100g 자른다
    냠
    남은 케이크의 무게는 300g이다.

     

    개쩐다... 이건 변수라고 쓰기에는 너무 쩔어서 변수라고 할 수 없어... parameter(매개변수)라고 할거야...

    그리고 개쩌는 매개변수가 들어갔으니까 서브 루틴이라고 안하고 쩌는 이름인 절차(procedure)라고 부르자.

    그래서...

     

    #절차(procedure) 

    : 매개변수를 갖는 서브루틴

     

    근디 파이썬이라는 현대적인 프로그램은 함수 내부에서 함수 외부에 있는 변수의 스택값을 변경하는 것을 허용하지 않음.

    뭔 소리여? → 걍 그러려니 해봐...

    궁금해 죽겠네 왜 그랬대?

    위험혀, 왜냐면.. 

    서브루틴(서브프로그램)을 동시에 실행할 수 있는 문법이 있고. 이를 코루틴(co+routine)이라고 부르는디 말여. 코루틴으로 공시에 외부의 변수에 접근해서 값을 변경하면 충돌이 날 수 있디야. AKA 버그버그 이슈이슈

    그래서 나온 문법이 함수♡

     

    #함수

    :  수학에서 가져온 용어, 코드 자체가 값이 될 수 있게 하는 문법

    : 프로시저 + 리턴값

     

    # 함수를 써서 f(x) = x^2 + 2x + 1인 함수의 함수값을 계산해보면
    
    def f(x):
      return x**2 + 2*x + 1
    
    print(f(5))
    >>>
    36

     

    나를 기억해줘...🌿

     

    # 코드 전체 : 프로그램, 루틴 (+요즘 잘 안 써... 프로시저, 메서드)

    # 작은 코드 : 서브프로그램, 서브루틴 (+프로시저, 메서드)

    # 매개변수를 갖는 서브프로그램/서브루틴: 프로시저(procedure)

    # 리턴값을 갖는 프로시저 : 함수(function)

    # 클래스 내부에 있는 함수 : 메서드(method)

     


    https://replit.com/@wh3308/peurogeuraem-rutin-geurigo-pureun-suyeom-eojjeogu#main.py

    'study with Q - 파이썬' 카테고리의 다른 글

    51 - (파이썬) 가변 매개변수 함수  (0) 2024.06.03
    50 - 함수, 매개변수 기본  (0) 2024.06.02
    46-48 - 4강 도전 문제 외  (0) 2024.06.02
    45 - 4-4절 확인 문제  (0) 2024.05.28
    44 - join() 함수  (0) 2024.05.24
Designed by Tistory.