def 함수명(매개변수 input):
<수행할 문장1>
<수행할 문장2>
<...>
return 리턴값 output
def sum(a, b): #함수 정의
result = a + b
return result
print(sum(1, 2)) #함수 호출
def say():
return "Hi"
print(say()) #Hi 출력
def sum(a, b):
print("%d, %d의 합은 %d입니다" %(a, b, a+b))
def say()
print("Hi") #Hi 출력
print(say()) #None 출력
❗list의 메소드(함수st) 중 print 했을 때 값이 나오는 경우가 있고 아닌 경우 존재
❗print(<메소드>) 했을 때 값이 나오면 출력(return)이 있는 것, 값이 none이면 출력이 없는 것
*args : 여러 개의 입력 받기**kwargs : 딕셔너리 형태의 입력 받기#ex1)
def sum_many(*args): #*args : 여러 개의 값을 입력하라는 의미, args를 대신해 다른 변수명을 사용해도 되지만 일반적으로 args 사용
sum = 0
for i in args: #args가 리스트처럼 여러 개의 요소를 담고 있음
sum = sum + i
return sum
#ex2)
def print_kwargs(**kwargs): #**kwargs : 딕셔너리 형태로 입력 받음, *args와 마찬가지로 변수 명이 정해진건 아님
for k in kwargs.keys(): #key를 k변수에 담음
if (k=="name"):
print("당신의 이름은: " + kwargs[k]) #kwargs[k]에서 k는 key이므로 해당 key에 관한 value 값 출력
print(print_kwargs(name = "int조수", b = "2"))
#ex)
def sum_and_mul(a, b):
return a+b, a*b, a-b #return 값은 언제나 하나이므로 튜플 형태로 return
print(sum_and_mul(1, 2)) #(3, 2, -1) 튜플 형태로 출력
print(sum_and_mul(1, 2)[0]) #3 출력
#ex)
def say_myself(name, old, man=True):
print("나의 이름은 %s입니다" %name)
print("나이는 %d입니다" %old)
if man:
print("남자입니다")
else:
print("여자입니다")
say_myself("라이유튜브", 20, True)
say_myself("라이유튜브", 20) #직전 코드와 같은 결과, man = True를 쓰지 않을 경우 오류 발생
say_myself(old = 20, name = "라이유튜브", man = True) #순서가 바뀔 경우 맵핑해야 함)
✔ 지역변수 : 함수 내에 존재하는 변수는 함수 밖에 영향을 주지 않음
ex)
a = 1
def vartest(a): #이 함수 내에 존재하는 a는 함수 밖에 영향을 주지 않음(return 값 x)
a = a + 1
vartest(a)
print(a) #1 출력
✔ 지역변수 -> 전역 변수
return
a = 1
def vartest(a):
a = a + 1
return a
a = vartest(a)
print(a) #2 출력
예약어 global
a = 1
def vartest():
global a
a = a + 1
vartest()
print(a)
✔ Lambda 기본 구조
#ex1)
def add(a, b):
return a + b
#ex2)
add = lambda a,b : a + b
✔ 기존 함수 정의 사용 못하는 경우에도 사용 가능
#ex) Lambda 사용 예제
myList = [lambda a,b: a+b, lambda a,b: a*b] #myList는 [덧셈, 곱셈] 함수가 각각 들어있음
print(myList[0](1, 2)) #3 출력, a+b
print(myList[1](1, 2)) #2 출력, a*b
❗알고리즘 문제 해결할 때 주로 쓰임
number = input("숫자를 입력하세요: ")
print(number)
print("life""is""too short") #lifeistoo short 출력, 자동으로 + 생성
print("life"+"is"+"too short") #직전 코드와 같은 결과
print("life", "is", "too", "short") #life is too short 출력
for i in range(10):
print(i, end = " ") #1 2 3 4 5 6 7 8 9 10출력
for i in range(10):
print(i) #1\n 2\n 3\n 4\n 5\n 6\n 7\n 8\n 9\n 10\n
for i in range(10):
print(i, end = "hi") #1hi2hi3hi4hi5hi6hi7hi8hi9hi10
❗ 파일은 open 했으면 반드시 close 해야함.
-> 하지 않을 경우 오류 발생 가능성 존재
f = open("새파일.txt", "w") #상대주소
f.close()
| 파일열기모드 | 설명 |
|---|---|
| r | 읽기모드 : 파일을 읽기만 할 때 사용 |
| w | 쓰기모드 : 파일에 내용을 쓸 때 사용 |
| a | 추가모드 : 파일의 마지막에 새로운 내용을 추가시킬 때 사용 |
❗ w은 기존 파일의 내용을 삭제하고 작성하는 것이고, a는 기존 파일 뒤에 내용을 추가하는 것
❗ 크롤링할 때 유용하게 사용 가능
write()함수 사용f = open("C:/Python/새파일.txt", "w", encoding="UTF-8") #절대주소, 한글이 깨지지 않도록
for i in range(1, 11):
data = "%d 번째 줄입니다.\n" %i
f.write(data)
f.close
readline() 함수 사용 : 파일을 한 줄 씩 읽어오는 함수f = open("새파일.txt", "r", encoding = "UTF-8")
line = f.readline()
print(line)
f.close()
readline() 함수 사용f = open("새파일.txt", "r", encoding="UTF-8")
while True:
line = f.readline()
if not line: break #빠저나갈 조건에 성립하면 무한반복에서 빠져나간다
print(line)
f.close()
readlines() 함수 사용❗ 리스트 형태
f = open("새파일.txt", "r", encoding="UTF-8")
lines = f.readlines() #리스트 형태
for line in lines:
print(line)
f.close()
❗ 기존 파일에 한 문장이 끝날 때마다 \n이 존재하는데, print는 기본적으로 한 문장씩 내려가므로 두 번 내려가는 것처럼 보임
-> 방지하려면 : end = " " or .strip("\n") 작성
read() 함수 사용f = open("새파일.txt", "r", encoding="UTF-8")
data = f.read()
print(data)
f.close()
for i in range(11, 20):
data = "%d번째 줄입니다. \n" %i
f.write(data)
f.close()
with open("새파일.txt", "w", encoding="UTF-8") as f:
f.write("Life is too short, you need python")
<[출처] 조코딩, "최신 파이썬 코딩 무료 강의", https://www.youtube.com/watch?v=KL1MIuBfWe0&list=PLU9-uwewPMe2AX9o9hFgv-nRvOcBdzvP5> 을 참고하여 작성한 글입니다.