python--함수 설명

함수의 작용


나는 농사를 지을 때 호미를 써야 한다. 나는 매번 사용할 때마다 호미를 다시 만들까, 아니면 미리 호미를 만들어 필요할 때 직접 가져와서 쓸까?분명히 매번 다시 하는 것은 반복적인 노동이기 때문에 우리는 미리 한 번 잘 하고 매번 직접 가져오는 것을 선택했다. 이것은 바로 복용하는 사상이다.만약 빈번하게 이 문제를 해결해야 한다면 이 문제를 해결하는 코드는 미리 쓸 수 있고 이 문제를 해결해야 할 때 직접 가져와서 사용할 수 있다.
예를 들어 코드 파일의 여러 곳에서 1-100 누적과 이 기능을 계산해야 하는데 어떻게 이 문제를 해결합니까?
가장 간단한 방법은 그 코드를 필요한 곳으로 복제하는 것이다. 그러나 코드의 양도 크게 증가한다. 만약에 이 누적과 기능이 바뀌었다면 모든 부분을 수정해야 하고 코드의 유지보수량을 증가시켰다는 것을 의미한다.
어떻게 해결할까요?이 기능을 하나의 단독 기능 코드 블록으로 봉인함으로써 이 기능이 필요하면 이 기능 코드 블록을 직접 사용한다. 이 기능 코드 블록을 우리도 함수라고 부른다.요컨대 함수의 역할은 자주 사용하는 코드를 봉하여 나중에 사용하기 편리하게 하는 것이다.

함수 구문 형식


Python에서 함수는 def 키워드로 정의되며 함수의 이름(기능의 이름), 함수의 실현(기능을 실현하는 코드)을 포함한다.
함수의 행위는 함수 정의와 함수 호출로 나뉜다.
  • 함수 정의는 함수 기능을 실현하는 과정이다.
  • 함수 호출은 기능 사용
  • 주의: 함수를 호출하지 않으면 자동으로 실행되지 않습니다.
    def    ():
             
    

    그러면 1-100이라는 기능을 우리는 이런 함수(기능 코드 블록)로 쓸 수 있다.
    #    
    def my_sum():
     i = 1
     s = 0
     while i <= 100:
      s = s + i
      i += 1
     print("1~100     :%d" % s)
    
    #     
    my_sum()
    

    함수의 매개 변수


    한 가지 더 생각해 보자. 우리는 이 함수가 1-100의 누적화만 계산할 수 있다는 것을 발견했다. 우리는 함수의 기능이 지정에서 끝까지 숫자의 누적화를 지원할 수 있을까?
    우리는 우리가 전달하고자 하는 숫자를 함수에 전달하고 함수를 우리가 전달하는 매개 변수에 따라 계산할 수 있다
    def my_sum(start, end):
     my_start = start
     my_end = end
     my_sum = 0
     while my_start <= my_end:
     	my_sum = my_sum + my_start
     	my_start += 1
     print("%d~%d     :%d" % (start, end, my_sum))
    #     
    my_sum(2, 50)
    

    함수 매개 변수의 작용은 바로 함수로 하여금 우리가 정한 값에 근거하여 연산하게 하는 것이다.이렇게 하면 함수의 통용성을 강화할 수 있다.함수에는 여러 개의 매개 변수가 있을 수 있다
    예를 들어 우리는 덧셈 기능을 가진 함수를 작성하려면 분명히 두 개의 인자가 필요하다
    def my_add(num1, num2):
     result = num1 + num2
     print('num1 + num2 =', result)  
    my_add(10, 20)
    

    우리가 함수를 호출할 때 전달하는 진실한 데이터를 실삼이라고 하고 함수 파라미터를 형삼이라고 하며 형삼은 진실하게 전달되는 수치를 대표할 뿐이다.
    여러 함수 매개 변수가 다시 전달될 때 왼쪽에서 오른쪽으로 전달된다.물론 파이톤에서도 우리는 그 형삼에게 어떤 값을 지정할 수 있다.
    def my_add(num1, num2):
     result = num1 + num2
     print('num1 + num2 =', result)
    my_add(num1=10, num2=20)
    my_add(num2=20, num1=10)
    

    1. 왼쪽에서 오른쪽으로 순서대로 전달하는 것을 위치 매개 변수라고 한다.
    2. 형삼 이름에 따라 전달하는 것을 키워드 매개 변수라고 한다.
    함수를 호출할 때 위치 매개 변수를 전달하고 키워드 매개 변수를 전달할 수 있습니까?
    def my_add(num1, num2, num3, num4):
     result = num1 + num2 + num3 + num4
     return result
    my_add(100, 200, 300, num2=10)
    

    네, 위치 파라미터가 키워드 파라미터 앞에 있기만 하면 됩니다.

    함수의 반환값


    다음 두 가지 문제를 생각해 보세요.
  • 현재 우리의 함수는 결과를 계산한 후에 결과를 어디에 두었습니까?
  • 내 프로그램은 함수의 결산과를 계속 사용하여 다음 계산을 진행해야 하는데 어떻게 해야 합니까?

  • return 문장을 사용하여 함수의 운행 결과를 함수의 호출자에게 되돌려줍니다
    def my_add(num1, num2):
     result = num1 + num2
     return result
    #                
    my_add_result = my_add(10, 20)
    #            
    finish_result = my_add_result + 100
    #       
    print('    :', finish_result)
    

    print 함수와return의 차이는 무엇입니까?
    print는 내용을 화면에 출력하는 것만 책임집니다.리턴은 함수 계산 결과를 함수의 호출자에게 되돌려줍니다.
    예를 들어 함수는 하나의 공장과 유사하다. 우리는 공장 생산에 필요한 재료를 파라미터의 형식을 통해 공장에 전달하고 공장은 우리가 전달하는 재료를 사용하여 제품을 생산한다.
    print는 제품을 생산한 후'제품 생산 완료'라고 말했지만 사용자에게 제품을 주지 않는다.
    리턴은 제품을 생산한 후 사용자에게 제품을 건네주는 셈이다.그러면 사용자는 하나의 바구니로 제품을 담아야 한다. (변수로 함수의 반환값을 저장해야 한다.)물론 공장에서 제품을 사용자에게 주었지만 사용자도 함수의 반환값을 무시하지 않을 수 있다.
    return에 관해서는 다음과 같은 몇 가지를 주의하시오.
  • 함수 실행이 리턴에 닿으면 실행이 정지됩니다.
  • 함수에는 여러 개의return을 작성할 수 있지만, 한 개의return만 실행할 수 있습니다.
  • return 뒤에 되돌아올 값을 따라갈 수 있고 return None에 해당하는 값도 단독으로 사용할 수 있다.
  • break는 순환에 사용되며 순환 실행을 중지하는 데 사용됩니다.return은 함수에 사용되며, 함수 실행을 중지하는 데 사용됩니다.

  • 로컬 및 글로벌 변수


    전역 변수: 함수 외부에 정의된 변수.전역은 이 변수가 현재python 파일 범위 내에서 보이는 것을 가리킨다.전역 변수는 현재python 파일의 모든 함수에 직접 사용할 수 있습니다.
    국부 변수: 함수 내부에 정의된 변수입니다.이 변수는 정의된 함수 내부에서만 사용할 수 있습니다.
    #       
    g_val = 100
    
    #              
    def my_function1():
     print(g_val)
    #             my_val
    def my_function2():
     my_val = 100
    
    
    #      my_function2           
    def my_function3():
     print(my_val)#        ,           ,      
    
    
    #     
    my_function1()
    my_function2()
    my_function3()
    

    로컬 변수와 전역 변수 이름이 충돌하면 Python 해석기는 어떻게 합니까?근접 원칙에 따르면 국부 변수의 우선순위는 전체 변수보다 크다
    total_value = 100
    def my_function():
     total_value = 200
     print('total_value:', total_value)
    my_function() #200
    

    함수의 기본 매개변수(기본 매개변수)


    기본 매개 변수는 함수 호출에서 실참이 생략되었을 때 기본적으로 사용하는 값을 가리킨다.
    기본 매개변수의 구문 및 사용:
  • 함수가 성명되거나 정의될 때 매개 변수에 직접 값을 부여한다.이것이 바로 형삼을 설정하는 기본 매개 변수입니다.
  • 함수를 호출할 때 일부 또는 모든 파라미터를 생략합니다.이 때 기본 매개 변수로 대체할 수 있습니다.
  • def my_function(a, b=20, c=30):
     return a+b+c
    my_function(10) #   b,c  20,30
    my_function(10, 100)
    my_function(10, 100, 1000)
    

    참고: 기본값이 있는 매개변수는 매개변수 목록의 맨 뒤에 있어야 합니다.

    함수 문서 및 역할


    함수도 주석을 추가하여 함수 기능, 매개 변수와 반환 값의 의미를 호출자가 알 수 있도록 해야 한다.그러나 일반적인 단행 다행 주석은 함수 정의를 볼 때 볼 수 있는데 호출할 때 함수 관련 정보를 신속하게 볼 수 있는 방법이 있습니까?
    DocString은 프로그램 문서를 더욱 간단하고 쉽게 이해할 수 있도록 도와주는 중요한 도구입니다.
    #          
    def my_function(param):
     """       ,       ."""
     return param + 10
    #          
    def my_add(num1, num2):
     """        .
     :param int num1:          
     :param int num2:          
     :return             
     """
     result = num1 + num2
     return result
    

    우리는 ctrl + q 단축키를 통해 함수 정보를 볼 수도 있고, help() 함수를 통해 함수 정보를 볼 수도 있다.

    단일 책임 원칙


    실례합니다: 업무 중에 한 사람이 책임지는 직책이 많을수록 좋습니까? 아니면 적을수록 좋습니까?같은 이치로 함수를 만들면 함수가 완성할 수 있는 기능이 많을수록 좋습니까? 아니면 적을수록 좋습니까?
    단일 직책 원칙은 하나의 함수로 한 가지 일을 책임진다는 것이다.한 함수가 맡은 직책이 너무 많으면 이런 직책을 혼합하는 것과 같아서 한 직책의 변화가 다른 직책의 능력에 영향을 줄 수 있기 때문이다.
  • 단일 직책 원칙으로 약칭하는 영문 명칭은Single Responsibility Principle, 약칭RSP이다.
  • 정의는 한 함수에 대해 말하자면 그 변화를 일으키는 원인이 하나밖에 없어야 한다. 쉽게 말하면 한 함수 중에는 관련성이 높은 봉인이 있어야 한다.즉, 하나의 종류는 하나의 직책만 책임지고 여러 직책을 동시에 책임져서는 안 된다.
  • 문제, 예를 들어 A 함수는 두 가지 서로 다른 직책을 담당한다. B와 C.B 기능 수요에 변화가 발생할 때 A 함수를 변경하면 원래 정상적으로 운행하던 C에 오류가 발생할 수 있고 코드의 결합성이 너무 높고 복잡하다.
  • 기능을 독립시켜 단일 직책 원칙을 만족시키도록 해결한다.예를 들어 두 개의 함수 A1과 A2를 만들고 A1은 기능 B를 완성하고 A2는 기능 C를 완성한다. 어떤 기능에 문제가 발생하더라도 다른 기능에 문제가 생기지 않는다
  • 좋은 웹페이지 즐겨찾기