python 기초 지식 - 함수

카탈로그

  • 함수 기본 문법
  • 정의 함수
  • 함수 설명 문서
  • 전참 대상
  • 변수 및 반환값
  • 매개변수
  • 키워드 매개변수
  • 기본 매개변수
  • 부정확한 길이 매개 변수
  • lambda 표현식
  • 고급 함수
  • 일반 고급 함수
  • 내장 고급 함수
  • 함수 기본 문법


    정의 함수


    기본 구문:
    def    (  ):
    	  1
          2
    

    예:
    def print_hh():
    	print("  ")
    

    함수 설명 문서


    형식:
    def    (  ):
    	"""      """
            
    

    쓰기 및 호출 예:
    def print_hh():
        """            """
        print("  ")
    help(print_hh)
    
    #     :
    # Help on function print_hh in module __main__:
    # 
    # print_hh()
    #                 
    

    자체 함수도 help로 설명 문서를 출력할 수 있습니다

    전참 대상


    설명: 매개 변수 전달은 변경할 수 있는 대상과 변경할 수 없는 대상을 전달할 수 있으며 양자 처리에 차이가 있다.python에서strings,tuples,numbers는 변경할 수 없는 대상이고list,dict 등은 수정할 수 있는 대상이다.변경할 수 없는 객체의 예:
    def test_1(a):
        a=3
    a=2
    test_1(a)
    print(a)
    
    #     :
    # 2
    

    변경 가능한 객체의 예:
    def test_2(a):
        a=a.append([5,6])
    a=[1,2,3]
    test_2(a)
    print(a)
    
    #     :
    # [1, 2, 3, [5, 6]]
    
  • 변경할 수 없는 대상 중 a가 함수 내부에서 변경되지 않았음
  • 변경할 수 있는 대상에서 a 목록은 함수 내부에서 변경되었고 약간 C 언어의 수조로 구성된 것 같다
  • 변수 및 반환값


    함수 안에 없는 변수는 모두 전역 변수입니다. 함수체 내부에서 전역 변수를 어떻게 수정합니까?
    a=100
    def test_1():
        a=200
    test_1()
    print(a)
    #     :100(     )
    
    def test_2():
        global a
        a=200
    test_2()
    print(a)
    #     :200(    )
    

    함수는 여러 개의 반환 값이 있을 수 있으며, 목록, 사전 등 데이터 형식을 직접 반환할 수 있다
    def test_1():
        a=100
        b=200
        return a,b
    c=test_1()
    print(c)
    
    #     :
    # (100, 200)
    #      
    

    매개 변수


    키워드 매개 변수


    함수 호출은'키=값'형식을 통해 지정하면 함수를 더욱 뚜렷하고 실용적으로 할 수 있으며 매개 변수의 순서 수요를 없앨 수 있다
    def test_1(name,score):
        print(f'{name}    {score}!')
    test_1(score=100,name='jjb')
     #     :
     # jjb    100!
    

    기본 매개 변수


    함수를 호출할 때 기본 매개 변수의 값이 들어오지 않으면 기본값으로 간주됩니다.
    def test_1(name,score=100):
        print(f'{name}    {score}!')
    test_1('jjb')
    test_1('jjb',90)
     #     :
     # jjb    100!
     # jjb    90!
    

    부정확한 길이 매개 변수


    호출할 때 몇 개의 매개 변수를 전달할지 확실하지 않은 경우
  • 상황1: 여분의 매개 변수가 원조를 형성하고 하나*
  • 가 있다
  • 상황2: 여분의 매개 변수가 사전을 형성하고 두 개의 **
  • 가 있다
    #    :
    def test_1(a,*args):
        print(a,end=' ')
        for i in args:
            print(i,end=' ')
    test_1(1,2,3,4,5)
    
    #     :
    # 1 2 3 4 5
    
    #    :
    def test_2(a,**kwargs):
        print(a,end=' ')
        print(kwargs)
    test_2(1,x=2,y=3,z=4)
    
    #     :
    # 1 {'x': 2, 'y': 3, 'z': 4}
    

    pass 문장은 빈 문장으로 아무 일도 하지 않고 점위 문장으로 쓰인다

    lambda 표현식


    응용 장면: 만약에 함수에 반환 값이 있고 코드 한 마디만 있다면 lambda를 사용하여 간소화할 수 있고 컴퓨터 비용을 줄일 수 있다.
  • 형식: lambda 매개 변수 목록: 표현식
  • lambda 표현식의 매개 변수는 있어도 되고 없어도 된다. 함수의 매개 변수는 lambda 표현식에서 lambda 표현식은 모든 수량의 매개 변수를 수신할 수 있지만 하나의 표현식의 값만 되돌려줄 수 있다.
    def add(a,b):
        return a+b
    
    #        lambda   
    
    fn1=lambda a,b:a+b
    print(fn1(1,2))
    #     :
    # 3
    

    판단이 있는 lambda 표현식:
    fn1=lambda a,b:a if a>b else b
    print(fn1(500,1000))
    
    #     :
    # 1000
    

    목록의 사전을 키 값에 따라 정렬하기:
    a = [{"name":"wang","age":45},{"name":"ji","age":20},{"name":"qian","age":30}]
    a.sort(key=lambda x:x['age']) #        
    print(a)
    
    #     :
    # [{'name': 'ji', 'age': 20}, {'name': 'qian', 'age': 30}, {'name': 'wang', 'age': 45}]
    

    고급 함수


    일반 고급 함수


    정의: 변수는 함수를 가리킬 수 있다. 함수의 매개 변수는 변수를 받아들일 수 있다. 그러면 한 함수는 다른 함수를 매개 변수로 받아들일 수 있다. 이런 함수를 고급 함수라고 부른다.
    #     
    def abs_sum(a,b,f):
        return f(a)+f(b)
    print(abs_sum(-1,2,abs))
    
    #     :
    # 3
    

    내장형 고급 함수

  • map():map(func,list)은 전송된 함수 변수func를list 변수의 모든 요소에 작용하고 결과를 교체기로 되돌려줍니다(python3)
  • list_1=[1,-2,-3,4]
    list_2=map(abs,list_1)
    print(list_2)
    print(list(list_2))
    
    #     :
    # 
    # [1, 2, 3, 4]
    

    이상의 결과에서 알 수 있듯이 출력은 목록으로 강제로 변환되어야 하며, 그렇지 않으면 교체기 (주소) 로 되돌아와야 한다.
  • reduce():reduce(func,list) 중func는 두 개의 인자가 있어야 하며, 매번func계산의 결과와 서열의 다음 원소를 누적 계산
  • 해야 한다.
    import functools
    def add(a,b):
        return a+b
    list_1=[1,2,3,4,5]
    result=functools.reduce(add,list_1)
    print(result)
    
    #     :
    # 15
    
  • Filter (): filter (func,list) 함수는 필터 시퀀스에 사용되며 조건에 맞지 않는 요소를 필터하고 필터 대상을 되돌려줍니다. 목록으로 변환하려면list () 로 변환할 수 있습니다
  • list_1=[1,2,3,4,5,6]
    def func(x):
        return x%2==0
    result=filter(func,list_1)
    print(list(result))
    
    #     
    # [2, 4, 6]
    

    좋은 웹페이지 즐겨찾기