ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [python]파이썬 특정 기능 수행 정의 함수/내장 함수/지역변수/전역변수/람다 함수/가변인자/딕셔너리인자/라이브러리/함수 map()/...
    Languages/python 2021. 4. 14. 12:41
    반응형

     

     

     

     

     

     

     

    함수 개요

     

    특정한 기능을 수행하는 프로그램 단위인 함수

     

    여러 입력을 받아 특정한 기능을 수행하고 결괏값을 반환하는 코드

    사용자가 직접 정의해 사용

    파이썬에 설치된 다양한 함수를 활용

     

    사용자 정의 함수의 함수 정의와 함수 호출

    사용자 정의 함수와 내장 함수로 구분

    print() input(),str(),int()... 등과 같은 내장 함수 사용

     

    파이썬 함수 정의 구문 : 함수 이름과 인자,반환값

     

     

     

     

    함수 머리는 키워드 def

    함수 이름과 괄호,괄호사이의 인자들

    함수 정의의 몸체인 블록을 예고하는 콜론(:)이 필요

     

    함수 몸체는 들여쓰기로 시작

     

    기능을 수행하는 문장들

    마지막으로 키워드 return에 의해 반환 값을 돌려 주는 구문이 필요

     

    인자(arguments)와 return 문장은 선택적(optional)

     

     

    함수 호출은 함수 정의 이후

     

    ex)

    def hello():

          print('Hello Python!')

     

     

    >>>hello()

    >>>'Hello Python!'

     

     

     

     

    return문으로 함수 기능을 수행핱 후 반환 값을 전달

     

    def hello(name):
        print('안녕, {}!'.format(name))
        return '{}에게 인사'.format(name)
    print(hello('희정'))
    
    
    >>>
    안녕, 희정!
    희정에게 인사
    >>> 

     

    반환 값에는 변수,표현식,시퀀스 등이 모두 가능하며 여기서는 문자열이다.

    반환 값이 print()에 의해 출력된 값

    위의 안녕 희정!은 함수 실행 중에 출력된 값이다.

     

     

     

     

    예제)

    인자인 두 수의 합을 반환하는 함수 mysum(x,y)

     

     

    def mysum(x,y = 0):
        return x+y
    hap = mysum(5)
    print(hap)
    hap = mysum(5,10)
    print(hap)
    
    >>>    
    5
    15
    >>> 

     

     

     

    인자와 같이 반환 값도 여러 개가 가능하다.

     

    def getprime():
    
         return 2,3,5,7
    
    
    
    a,b,c,d = getprime()
    
    print(a,b,c,d)
    
    
    
    >>> 2 3 5 7

     

     

     

     

     

     

     

     

    지역 변수와 전역 변수

     

     

    파이썬에서는 변수가 메모리에 생성되고 유지되는 범위

     

    지역변수

    함수 내부에서 대입돼 생성된 변수

    지역변수는 함수외부에서 절대 사용할 수 없다!!!

     

     

    ex>

    def addone():     
    i = 30 // 지역변수 생성    
    i+= 1 //지역 변수 수정
    print('\t 지역 변수 i:' , i)

     

    전역변수

    함수 외부에서 대입돼 생성된 변수

     

    ex>

    i = 20
    
    print('i:' ,i)
    
    addone()
    
    print('i' ,i)
    
    
    
    >>>20
    
          20

     

     

     

     

    함수에서 값을 대입하지 않고 지역 변수를 참조하면 오류

     

    생성되지 않은 변수 참조는 오류 발생

     

     

     

     

    함수에서 golbal 문장으로 변수를 전역 변수를 지정

     

     

    def addone():
        global i // global 함수 지정 시 어디든 사용 가능
        print('\t 전역 변수 i 읽기, i+1:',i+1)
        i+=1
    
    i = 20
    print('i = ',i)
    addone()
    print('i = ',i)
    
    >>>
    i =  20
    	 전역 변수 i 읽기, i+1: 21
    i =  21
    >>> 

     

     

     

     

     

    위치 인자와 키워드 인자

     

    위치인자

    함수 호출 시 인자를 전달하는 일반적인 방법을 위치인자 방식

    고정적,호출의 순서에 따라 인자를 구별하는 방식

    위치인자 사용

     

    def mysubstract(pre,post):
    	return pre-post
        print(mysubstract(10,5))
        

     

    키워드 인자

    함수를 호출할 때 값을 전달한 인자를 직접 대입으로 지정하는 방식

    키워드 인자 사용

     

    print(mysubstract(post = 5,pre = 10))

     

    키워드 인자는 모든 위치 인자 이후에 사용

     

     

    print(mysubstract(10,post=5))
    print(mysubstract(post =5,10))
    
    >>>error
    
    print(mysubstract(10,pre=5))
    
    >>>error

     

     

     

    가변 인자 *args

     

    인자 *args, 가변 인자로 전달하고 처리

     

    *리스트

     

    별표는 리스트나 튜플을 풀어 가변 인자 형태로 변환한다는 의미

     

     

     

    def hello(*names):
        for each in names:
            print('안녕, {}!'.format(each))
    
    hello('smith')
    hello('kim','lee','park')
    hello(*['bts','blackpink'])
    
    >>>
    안녕, smith!
    안녕, kim!
    안녕, lee!
    안녕, park!
    안녕, bts!
    안녕, blackpink!
    >>> 

     

     

     

    딕셔너리 인자 **kwargs

     

     

    키워드 인자 형태의 가변 인자로 전달하고 처리

    위치인자/가변인자와 같이도 사용가능 하다

     

     

     

     

    def mykey(**kwargs):
        for key in kwargs:
            print('{}:{}'.format(key,kwargs[key]),end=' ')
        print()
    
    mykey(여자친구 = 6, 마마무 = 4)
    mykey(엑소 = 9,트와이스 = 9,블랙핑크 = 4,방탄소년단 = 7)
    
    >>>
    여자친구:6 마마무:4 
    엑소:9 트와이스:9 블랙핑크:4 방탄소년단:7 
    >>> 

     

     

     

     

     

     

     

    람다함수

     

     

    작고 이름이 없는 익명 함수

    키워드 lambda 이후에 콤마로 구분된 인자 목록

    람다 함수는 여러개의 인자를 취할 수 있지만 표현식은 하나만 가능

    키워드 return없이 하나의 표현식 결괏값이 반환

     

    lambda 인자1,인자2,... : 표현식

     

    lambda x: x+1

    lambda x,y : x+y

    lambda x,y :pow(x,y)

     

     

     

    print((lambda x : x ** 3)(3))
    print((lambda a,b:a%b)(10,3))
    
    div = lambda a,b :a/b
    print(div(10,2))
    
    >>>
    27
    1
    5.0
    >>>

     

     

     

     

    표준라이브러리와 내장함수

     

     

    라이브러리

     

    필요한 기능을 담당하는 함수나 클래스를 모아두는 모듈의 집합

     

    표준 라이브러리

     

    파이썬과 함께 설치돼 다른 부가적인 작업 없이 사용할 수 있는 라이브러리

    내장함수

     

    써드 파티 라이브러리

     

    파이썬 패키지 색인 사이트에서 제공

    파이썬 프로그래밍 언어의 방대한 소프트웨어 저장소

    교육부문, 과학 및 수치 컴퓨팅, 빅데이터및 머신 러닝,웹 및 인터넷 개발, 그래픽,gui,게임등 매우 다양하다

     

     

     

     

     

     

     

    산술 연산 관련 내장 함수

     

    절댓값 함수 abs()

    진수로 변환된 문자열을 반환하는 함수 bin(),oct(),hex()

    내장 함수 format()

    pow(), round(), divmod()

    min(),max(), sum()

     

     

    함수 sorted()에서 정렬의 비교 키로 사용하는 키워드 인자 key

     

     

    words = "the core of extensible programming is defining functions".split()
    print(sorted(words, key = str.lower))
    print(sorted(words, key = lambda word : word[1]))
    
    groupnumber = [('잔나비',5),('트와이스',9),('블랙핑크',4),('방탄',7)]
    print(sorted(groupnumber))
    print(sorted(groupnumber, key = lambda singer:singer[1]))
    
     ===========
    ['core', 'defining', 'extensible', 'functions', 'is', 'of', 'programming', 'the']
    ['defining', 'of', 'the', 'core', 'programming', 'is', 'functions', 'extensible']
    [('방탄', 7), ('블랙핑크', 4), ('잔나비', 5), ('트와이스', 9)]
    [('블랙핑크', 4), ('잔나비', 5), ('방탄', 7), ('트와이스', 9)]
    >>> 

     

     

     

     

     

    항목의 논리를 검사하는 함수 all(),any()

    함수 all (시퀀스)

    시퀀스의 모든 항목이 참이거나 항목이 비어 있으면 true를 반환

     

     

    b = all([3 > 4,'p' in 'py'])
    print(b)
    >>>False
    print(all('python'))
    >>>True
    print(all(''))
    >>>True
    print(all({}))
    >>>True

     

    함수 any(시퀀스)

    시퀀스에서 하나의 항목이라도 참이거나 항목이 비어 있지 않으면 true를 반환

     

    b = any([3 > 4,'p' in 'py'])
    print(b)
    >>>True
    print(any(''))
    >>>False
    print(any({}))
    >>>False

     

     

    함수 map()

    -이터러블의 모든 항목에 function을 적용한 후 그 결과를 돌려주는 이터레이터를 반환

    -이터러블(iterable)

    항목을 하나씩 차례로 반환할 수 있는 객체

    -시퀀스인 문자열,리스트와 튜플 모두 대표적인 이터러블

    이터레이터는 시퀀스인 튜플이나 리스트로 변환해 항목을 활용

     

     

    def addone(n):
    	return n+1
        
       lst = list(map(addone,[10,30,50,20]))
       print(lst)
       >>>[11,31,51,21]

     

     

     

    함수 dir()

     

     

     

    인자 없는 함수 dir()

    현재 정의된 변수와 함수 이름의 리스트를 반환

     

    파이썬 쉘을 처음 실행해 dir()을 입력

    파이썬 쉘에서 사용 되는 시스템 변수 리스트

    시스템에서 사용하는 모듈이나 변수는 앞뒤에 밑줄이 2개 붙어 _builtins_처럼 정의

    >>>

    dir()

    ['_EFsrgsr_','_DFSgs-','_Aefsg_', ...]

     

    이후 우리가 정의한 함수나 변수도 dir()로 확인 가능

     

     

    도움말 요청 함수 help() >>> 알아만 두기!!!

     

     

     

    반응형

    댓글

Designed by Tistory.