<jupyter_start><jupyter_text>함수<jupyter_code>def movie1(name):
    print('영화명:',name) #리턴타입은 명시하지 않는다.
movie1('킹덤')
movie1('청춘 기록')
movie1('테넷')
def movie2(name, genre):  # 인수 여러개 사용 가능
    print('영화명: ' + name)        
    print('장  르: ' + genre)
#인수 부족하면 에러
movie2('1987','역사')
movie2('종이의 집','범죄 드라마')
def movie3(name, genre, score=5.0):  # 기본값 사용,파이썬의 기능
    print('영화명: ' + name)        
    print('장  르: ' + genre)  
    print('평  점: ' + str(score))
movie3('기생충','드라마') #기본값이 전달된 상태
movie3('검은 사제들','퇴마',9.5)
movie3('컨저링2') # X 기본값 지정 안된것은 에러
def movie4(time, name, genre):  
    print('영화명: ' + name)        
    print('시  간: ' + str(time)) #문자열과 숫자는 +사용 불가하므로 형변환 필요
    print('장  르: ' + genre)  
movie4(120,'안시성','역사')
movie4(name='업사이드',time=100,genre='휴먼') #파라미터 순서 변경 가능
def movie5(*actors):  # tuple, 가변인자 처리, 전달되는 변수의 수나,타입등 제한없다
    print(type(actors))
    print(actors)
movie5('안시성', '조인성', '김태리')
movie5('맘마미아', '피어스브로스넌', '메릴스트립', '아만다 사이프리드')
movie5('인터스텔라', '메튜 맥커너희', '엔 헤서웨이', 2014)
def movie6(movie, *actors):  # 고정과 가변인자 병합 처리
    print(type(actors))
    print(movie)
    print(actors)  # Dictionary
# 첫번째 인자가 고정으로 들어간 후(movie) 나머지 인자가 가변인자(actors)로 들어감
movie6('안시성', '조인성', '김태리') 
movie6('맘마미아', '피어스브로스넌', '메릴스트립', '아만다 사이프리드')
movie6('인터스텔라', '메튜 맥커너희', '엔 헤서웨이', 2014)
def movie7(movie, **actors):  # 고정과 가변인자 병합 처리, Dictionary
    print(movie)
    print(type(actors))
    print(actors)  # Dictionary
# movie7('안시성', '조인성', '김태리') # X
movie7('인터스텔라', actor1='맥커너희', actor2='<NAME>',
       actor3='<NAME>') # Dictionary
def season(month): #기본적으로 파이썬은 리턴타잆이 없어도 된다.
    season=''
    if month == 1:
        season='January'
    elif month == 2:
        season='February'
    elif month == 3:
        season="March"
    else:
        season="Only input 1 ~ 3"
    
    return season #그러나 리턴타입을 쓰는 경우도 존재한다
test=season(1) #리턴타입을 명시했으므로, 사용 가능, 없으면 None 출력
print(test)
str1='전역변수'
def fun1():
    str1='지역 변수'
    print(str1)
fun1() #전역 변수와 지역변수 중 지역 변수가 우선순위가 높음
print(str1) #함수 밖에서는 전역변수가 우선순위가 높음
str1='전역변수'
def fun2():
    global str1  # 전역변수를 사용
    str1 = '지역 변수값 적용'
    print(str1)
fun2()
print(str1) #global 변수 선언시,지역 변수가 전역변수로 대체.
def fun3():
    print(str1) # 해당하는 지역변수가 없으면 전역 변수 자동 인식
fun3()
def maxno(x,y): #x,y:지역 변수
    if x > y:
        return x
    else:
        return y
su= maxno(100,200)
print(type(su))
print(su)
def reverse(x,y,z): #리턴값 다수 선언 가능
    return z,y,x
ret=reverse(10,20,30)
print(ret)
r1,r2,r3=reverse(10,20,30)
print(r1,r2,r3)
r1,r2,r3=reverse("A","B","C")
print(r1,r2,r3)
# swap 알고리즘,중요한 개념★★
r1,r2=10,20 
print(r1,r2)
r1,r2=r2,r1 #값 교채하기
print(r1,r2)
#자바 방식
r1 = 10
r2 = 20
temp=r1
r1=r2
r2=temp
print(r1,r2)
def data():
    return(1,2),('A','B')
# a,b,c,d=data() #X,사용불가
ret=data()
print(type(ret))
print(ret)
(a,b),(c,d)=data() #개발자가 타입을 알고 있어야 한다.
print(a,b,c,d)
def data():
    return[1,2,3] #list타입 리턴
ret =data()
print(type(ret))
print(ret)
def data():
    return[1,2,3],[4,5,6]
ret =data() 
print(type(ret))
print(ret) #list가 결합된tuple
print(type(ret[0]))
print(ret[0])
print(type(ret[1]))
print(ret[1])
ret1,ret2=data()
print(ret1)
print(ret2)
#파이썬 파일을 모듈이라고 부름<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.19139512812401138, 'fraction_numerical': 0.04682062638405568, 'mean_word_length': 3.956112852664577, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 8, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '405166', 'license': 'OLDAP-2.4', 'n_tokens_mistral': 1947, 'n_tokens_neox': 2349, 'n_words': 346, 'path': 'notebook/core/module/Def.ipynb', 'repo_name': 'seongsik-choi/Python', 'size': '3161'}