λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

🐍 | Python40

*args 와 **kwargs *args *argsλŠ” *arguments의 μ•½μžμ΄λ‹€! μž…λ ₯κ°’μ˜ μˆ˜κ°€ μ •ν•΄μ Έ μžˆμ§€ μ•Šμ„ λ•Œ, μ—¬λŸ¬ 개의 인자λ₯Ό ν•¨μˆ˜λ‘œ 받을 λ•Œ μ‚¬μš©ν•˜λ©΄ λœλ‹€. def ν•¨μˆ˜λͺ…(*λ§€κ°œλ³€μˆ˜): μ‹€ν–‰λ¬Έμž₯ 이전에도 ν•œ 번 λ‹€λ€˜μ—ˆμ§€λ§Œ *args의 ν˜•νƒœλŠ” μž…λ ₯값을 λ°›μœΌλ©΄ νŠœν”Œλ‘œ μ²˜λ¦¬ν•œλ‹€. def sum(*num): result = 0 for i in num: result += i return result a = sum(1,2,3,4) print(a) γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘ 10 μœ„μ˜ μ˜ˆμ‹œμ²˜λŸΌ μž…λ ₯값을 μ—¬λŸ¬ 개 넣어주어도 그것을 μ²˜λ¦¬ν•  수 μžˆλ‹€. def sum(*num): result = 0 for i in num: result += i print(type(num), num) return result a = sum(1,2,3,4) print.. 2021. 10. 15.
ν•¨μˆ˜μ™€ λ©”μ†Œλ“œ ν•¨μˆ˜(function) 기본ꡬ쑰 : ν•¨μˆ˜λͺ…( ) - ν•¨μˆ˜ 이름을 톡해 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€. ex) print(), str(), int(), type() λ“± - ν•¨μˆ˜μ˜ 값을 λ³€μˆ˜μ— λŒ€μž…ν•  수 μžˆλ‹€. λ©”μ†Œλ“œ(method) 기본ꡬ쑰 : 객체.λ©”μ†Œλ“œ( ) - λ©”μ†Œλ“œ λͺ…μœΌλ‘œ μ‚¬μš©ν•  수 μžˆλ‹€. But, 객체와 μ—°κ΄€λ˜μ–΄ μ‚¬μš©λœλ‹€. ex) .append(), .join(), .insert() λ“± - list, str, set κ³Ό 같은 μžλ£Œν˜•λ“€μ€ λͺ¨λ‘ 객체이고, 이것듀과 μ—°κ΄€λ˜μ–΄ μ‚¬μš©λ˜λŠ” 것이 'λ©”μ†Œλ“œ'! γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘ κ΅¬λΆ„λ˜λŠ” λ‘˜μ˜ 차이점 - ν•¨μˆ˜λŠ” λ…λ¦½μ μœΌλ‘œ μ •μ˜λ˜λ―€λ‘œ μ΄λ¦„λ§ŒμœΌλ‘œλ„ 호좜 κ°€λŠ₯ - λ©”μ†Œλ“œλŠ” 'μ •μ˜λœ 클래슀의 μ°Έμ‘°'에 μ˜ν•΄μ„œ 클래슀λ₯Ό ν˜ΈμΆœν•΄μ•Ό μ‚¬μš©μ΄ κ°€λŠ₯ - λ©”μ†Œλ“œ.. 2021. 10. 2.
pickle 파이썬으둜 ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜κ³  싀행을 ν•  λ•Œ λ§Žμ€ λ³€μˆ˜λ“€μ΄ 생겼닀가 사라지기도 ν•˜κ³  λ³€μˆ˜μ˜ 값도 λ§Žμ€ 변동이 μžˆλ‹€. λ˜ν•œ ν”„λ‘œκ·Έλž¨μ€ 싀행이 λλ‚˜λ©΄ λͺ¨λ“  데이터가 사라진닀. μ΄λ•Œ 이 데이터λ₯Ό μ €μž₯을 ν–ˆλ‹€κ°€ λ‹€μ‹œ μ‚¬μš©μ„ ν•œλ‹€κ±°λ‚˜ λ‹€λ₯Έ νŒŒμΌμ—μ„œ 이 데이터λ₯Ό κ·ΈλŒ€λ‘œ μ‚¬μš©ν•˜κ³  싢을 λ•Œ. λ°”λ‘œ pickle이 이것을 μΆ©μ‘±μ‹œμΌœμ€€λ‹€. pickle은 ν”„λ‘œκ·Έλž¨μ—μ„œ μ‚¬μš©ν•˜κ³  μžˆλŠ” 데이터λ₯Ό 파일 ν˜•νƒœλ‘œ μ €μž₯ν•˜κ±°λ‚˜ 뢈러올 수 있게 ν•΄μ£ΌλŠ” 파이썬의 λͺ¨λ“ˆμ΄λ‹€. μ‚¬μš©λ²• import pickle λ¨Όμ € pickle λͺ¨λ“ˆμ„ importν•΄μ€€λ‹€. 1. 데이터 파일 μƒμ„±ν•˜κΈ° import pickle λ°μ΄ν„°νŒŒμΌλ³€μˆ˜ = open("파일λͺ….pickle", "wb") νŒŒμΌν˜•μ‹μ€ .pickle둜 λ§Œλ“€μ–΄μ£Όκ³  μ“°κΈ°λͺ¨λ“œμΈ wλ₯Ό μ‚¬μš©ν•˜λŠ”λ° μ΄λ•Œ pickle둜 .. 2021. 9. 28.
파일 μž…μΆœλ ₯ μ§€κΈˆκΉŒμ§€λŠ” 값을 μž…μΆœλ ₯ν•˜λŠ” 것을 직접 μž…λ ₯ν•˜κ³  λ°”λ‘œ 좜λ ₯ν•˜λŠ” λ°©μ‹μ΄μ—ˆλ‹€. ν•˜μ§€λ§Œ νŒŒμΌμ„ μ΄μš©ν•΄ μž…μΆœλ ₯ν•˜λŠ” 것도 κ°€λŠ₯ν•˜λ‹€! μ‚¬μš©λ²•) 파일 객체 = open("파일λͺ….txt",'w',encoding='utf8') νŒŒμΌμ„ μƒμ„±ν•˜κΈ° μœ„ν•΄μ„œ openν•¨μˆ˜λ₯Ό μ‚¬μš©ν–ˆκ³  파일λͺ…, νŒŒμΌμ—΄κΈ°λͺ¨λ“œλ₯Ό μž…λ ₯κ°’μœΌλ‘œ λ°›λŠ”λ‹€. 인코딩 방식을 지정해주면 ν•œκΈ€μ— λŒ€ν•œ 였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€κ³  ν•œλ‹€. μ΄λ•Œ 파일 μ—΄κΈ°λͺ¨λ“œλŠ” 3가지가 μžˆλ‹€. w = μ“°κΈ°λͺ¨λ“œ / νŒŒμΌμ— λ‚΄μš©μ„ μ“Έ λ•Œ μ‚¬μš©, κΈ°μ‘΄ λ‚΄μš©μ„ λͺ¨λ‘ μ‚­μ œν•˜κ³  μƒˆλ‘­κ²Œ 기둝 a = μ΄μ–΄μ„œ μ“°κΈ°λͺ¨λ“œ / νŒŒμΌμ— λ‚΄μš©μ„ μ“Έ λ•Œ κΈ°μ‘΄ λ‚΄μš©μ„ λ³΄μ‘΄ν•˜κ³  뒀에 μ΄μ–΄μ„œ μ“Έ λ•Œ μ‚¬μš© r = 읽기λͺ¨λ“œ / νŒŒμΌμ„ 읽기만 ν•  λ•Œ μ‚¬μš© 파일 객체 = open("C:/Workspace/파일λͺ….txt",'w',enc.. 2021. 9. 23.
λ³€μˆ˜μ˜ μœ νš¨λ²”μœ„ ν•¨μˆ˜μ—μ„œ λΆ€ν„° μ΄μ–΄μ§€λŠ” 이야기! wafle = 20 def store(customer): wafle = 20 wafle = wafle-customer print("전체 μ™€ν”Œ 수 : {0}".format(wafle)) store(2) print("남은 μ™€ν”Œ 수 : {0}".format(wafle)) μœ„μ˜ μ˜ˆμ‹œλ₯Ό 보면 wafleμ΄λΌλŠ” λ³€μˆ˜μ— 20을 λŒ€μž…ν•˜κ³  ν•¨μˆ˜μ— μž…λ ₯κ°’ 2λ₯Ό μ£Όμ—ˆμœΌλ‹ˆ 남은 μ™€ν”Œ μˆ˜κ°€ 18이 λ‚˜μ™€μ•Ό ν•  것 κ°™λ‹€. ν•˜μ§€λ§Œ μ‹€μ œλ‘œ 싀행을 해보면 남은 μ™€ν”Œ μˆ˜λŠ” 20이 λ‚˜μ˜¨λ‹€. μ΄λŠ” ν•¨μˆ˜ λ‚΄μ˜ wafleμ΄λΌλŠ” λ³€μˆ˜λŠ” 'ν•¨μˆ˜λ§Œμ„ μœ„ν•œ λ³€μˆ˜'λΌλŠ” 것을 μ•Œ 수 μžˆλ‹€. 이름이 동일해도 적용이 λ˜λŠ” λ²”μœ„κ°€ λ‹€λ₯Έ 것이닀. wafle = 20 def store(customer): wafle = 20 #μ§€μ—­λ³€μˆ˜.. 2021. 9. 22.
ν•¨μˆ˜_(2) μ΄λ²ˆμ—” ν•¨μˆ˜ 2번째 이야기 λ§€κ°œλ³€μˆ˜&인수 λ§€κ°œλ³€μˆ˜(parameter)와 인수(argument)λŠ” μ•„μ£Ό λΉ„μŠ·ν•΄μ„œ ν—·κ°ˆλ¦¬κΈ° 쉽닀! def func(a,b): return a+b v = func(x,y) μœ„μ˜ μ˜ˆμ‹œμ—μ„œ λ§€κ°œλ³€μˆ˜(parameter)λŠ” a,b / μ™ΈλΆ€μ—μ„œ λ“€μ–΄μ˜¨ 값을 λ°›λŠ” λ³€μˆ˜μ΄λ‹€. 인수(argument)λŠ” x,y / ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ μ „λ‹¬ν•˜λŠ” μž…λ ₯값이닀. μ΄λ ‡κ²Œ 정리할 수 μžˆλ‹€! γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘ κΈ°λ³Έκ°’ κΈ°λ³Έκ°’μ΄λž€ λ§€κ°œλ³€μˆ˜μ— 초기 μ„€μ •ν•΄μ€€ 값을 μ΄μ•ΌκΈ°ν•œλ‹€. def profile(name, age, team = "ManUtd"): |print(f"이름 : {name} | age : {age} | team = {team}") μœ„ μ˜ˆμ‹œλŠ” name, age, team 3개.. 2021. 9. 20.
ν•¨μˆ˜_(1) ν•¨μˆ˜λž€? ν•¨μˆ˜λŠ” μ–΄λ–€ μž¬λ£Œλ“€μ„ 가지고 뚝-λ”± μ™„μ„±ν’ˆμ„ λ§Œλ“€μ–΄μ£ΌλŠ” 역할을 ν•˜λŠ” 것이닀. ν”„λ‘œκ·Έλž¨μ—μ„œ ν•¨μˆ˜λ₯Ό ν™œμš©ν•  λ•ŒλŠ” μ–΄λ– ν•œ λ˜‘κ°™μ€ 일을 반볡적으둜 ν•΄μ•Ό ν•  λ•Œ ν•¨μˆ˜λ‘œ μ •μ˜ν•΄λ†“μœΌλ©΄ μ•„μ£Ό 효율적으둜 μ½”λ“œλ₯Ό μž‘μ„±ν•  수 μžˆλ‹€. 그리고 ν”„λ‘œκ·Έλž¨μ˜ 전체 흐름을 더 μ‰½κ²Œ νŒŒμ•…ν•  수 μžˆλ„λ‘ μ •λ¦¬ν•΄μ£ΌλŠ” 역할도 ν•  수 μžˆλ‹€. μ‚¬μš©λ²• def ν•¨μˆ˜λͺ…(λ§€κ°œλ³€μˆ˜): μ‹€ν–‰λ‚΄μš© ν•¨μˆ˜λͺ…은 μ‚¬μš©μžκ°€ μž„μ˜λ‘œ μ •ν•  수 μžˆλ‹€. ν•¨μˆ˜λͺ… λ’€ κ΄„ν˜Έ μ•ˆμ˜ μš”μ†ŒλŠ” ν•¨μˆ˜μ— 전달값을 받을 λ§€κ°œλ³€μˆ˜μ΄λ‹€. def sum1(a,b): return a+b def sum2(a,b): a+b print(sum1(1,2)) print(sum2(1,2)) γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘ 3 None ν•¨μˆ˜λŠ” 항상 ν˜ΈμΆœν•œ 곳으둜 리턴값을 μ „λ‹¬ν•΄μ£ΌλŠ”λ° λ§Œμ•½ λ”°λ‘œ 지정을 ν•˜μ§€ μ•Šμ•˜λ‹€λ©΄ N.. 2021. 9. 19.
λ¬Έμžμ—΄ ν¬λ§€νŒ… λ¬Έμžμ—΄ ν¬λ§€νŒ…(formatting)μ΄λž€ λ¬Έμžμ—΄ μ•ˆμ— νŠΉμ •ν•œ 값을 μ‚½μž…ν•˜λŠ” 방법이라고 ν•  수 μžˆλ‹€. μ‚¬μš©λ²• 1. 포맷 μ½”λ“œ ν™œμš© %s : λ¬Έμžμ—΄ | %d : μ •μˆ˜ | %c : 문자 (character) | %f λΆ€λ™μ†Œμˆ˜ | λ“± 숫자 "λ‚΄ λ‚˜μ΄λŠ” %d살이닀." %20 γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘ "λ‚΄ λ‚˜μ΄λŠ” 20살이닀." age = 20 "λ‚΄ λ‚˜μ΄λŠ” %d살이닀." %age γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘ "λ‚΄ λ‚˜μ΄λŠ” 20살이닀." μœ„μ²˜λŸΌ 숫자λ₯Ό λŒ€μž…ν•  λ•ŒλŠ” %dλ₯Ό μ΄μš©ν•œλ‹€. 숫자λ₯Ό 직접 넣을 μˆ˜λ„ 있고, λ³€μˆ˜λ₯Ό μ΄μš©ν•  μˆ˜λ„ μžˆλ‹€. λ¬Έμžμ—΄ "λ‚΄κ°€ κ°€μž₯ μ’‹μ•„ν•˜λŠ” 과일은 %s이닀." %"사과" γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘ "λ‚΄κ°€ κ°€μž₯ μ’‹μ•„ν•˜λŠ” 과일은 사과이닀." fruit = "사과" "λ‚΄κ°€ κ°€μž₯ μ’‹μ•„ν•˜λŠ” 과일은 %s이닀." %fruit γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘.. 2021. 9. 18.
얕은 볡사와 κΉŠμ€ 볡사 얕은 볡사(shallow copy) 값을 μƒˆλ‘œμš΄ 객체둜 볡사할 λ•Œ 'μ°Έμ‘° κ°’'만 λ³΅μ‚¬ν•˜λŠ” 방식 1. copy import copy a = [1,2,3] b = a.copy() a[2] = 2 print(a) print(b) γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘ [1, 2, 2] [1, 2, 3] κ°’λ§Œ 볡사λ₯Ό ν•΄μ˜€λŠ” κ²ƒμ΄λ―€λ‘œ a에 ν• λ‹Ήλœ 값을 바꾸어도 b의 값은 λ³€ν™”κ°€ μ—†λ‹€! 'b = a'λΌλŠ” μ½”λ“œμ™€ λŒ€λΉ„λ˜λŠ” 방식이닀. 2. [:] a = [1,2,3] b = a[:] a[2] = 2 print(a) print(b) γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘ [1, 2, 2] [1, 2, 3] 인덱싱을 ν™œμš©ν•˜μ—¬ 얕은 볡사λ₯Ό ν•˜λŠ” 방법도 μžˆλ‹€. 주의 import copy a = [1,2,3,[4,5,6]] b = a.copy() a[3][0] = 2 pr.. 2021. 9. 13.