📌 1. 함수
- input이 들어와 function(함수)를 거쳐 output 출력
- 입력과 출력이 없는 프로그램도 있음
1) 함수 정의
- 매개변수 : input
- 리턴값 : output
- 수행할 문장 : function
def 함수명(매개변수 input):
<수행할 문장1>
<수행할 문장2>
<...>
return 리턴값 output
2) 함수 호출
- 함수 호출 : 함수를 사용하는 것
- 함수를 정의하기만 하면 아무것도 출력하지 않음
def sum(a, b): #함수 정의
result = a + b
return result
print(sum(1, 2)) #함수 호출
3) 입출력 값이 없는 경우
✔ 입력값만 없는 경우
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"))
✔ 함수의 결과(return)값은 언제나 하나
#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
- 함수를 간단하게 표현하는 방법
- 함수명 없을 수도 있음
🔶 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
📌 2. 사용자 입력과 출력
1) input 함수
- 내장 함수 : input과 같이 사전에 정의된 함수
- 사용자 정의 함수 : def를 사용해 함수를 정의한 함수
❗알고리즘 문제 해결할 때 주로 쓰임
number = input("숫자를 입력하세요: ")
print(number)
2) print 함수
- 기본적으로 하나 출력 후 다음 줄로 넘어가서 출력
✔ 띄어쓰기
print("life""is""too short") #lifeistoo short 출력, 자동으로 + 생성
print("life"+"is"+"too short") #직전 코드와 같은 결과
print("life", "is", "too", "short") #life is too short 출력
✔ end = " " or end = ' '
- 한 줄 씩 내려가지 말고 옆으로 주어진 문자를 넣고(end = " "은 띄어쓰기) 출력
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
📌 3. 파일 읽고 쓰기
- 텍스트 파일을 여고 작성한 후 파일을 닫고 저장하는 개념
❗ 파일은 open 했으면 반드시 close 해야함.
-> 하지 않을 경우 오류 발생 가능성 존재
1) 파일 생성하기
f = open("새파일.txt", "w") #상대주소
f.close()
2) 파일 열기 모드
파일열기모드 | 설명 |
r | 읽기모드 : 파일을 읽기만 할 때 사용 |
w | 쓰기모드 : 파일에 내용을 쓸 때 사용 |
a | 추가모드 : 파일의 마지막에 새로운 내용을 추가시킬 때 사용 |
❗ w은 기존 파일의 내용을 삭제하고 작성하는 것이고, a는 기존 파일 뒤에 내용을 추가하는 것
3) 파일 쓰기 모드("w")로 열고 출력값 작성
- 주소 작성
- 절대 주소 : 처음부분(C:/)부터 주소 작성
- 상대 주소 : 현재 실행하는 파일을 기준으로 상대적인 경로 작성, 현재 폴더에 작성
❗ 크롤링할 때 유용하게 사용 가능
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
4) 파일 읽기 모드("r")로 읽고 처리
✔ 파일 한 줄 씩 읽어오기
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()
5) 파일 추가 모드("a")로 수정하기
for i in range(11, 20):
data = "%d번째 줄입니다. \n" %i
f.write(data)
f.close()
6) with문
- close() 사용하지 않아도 자동으로 파일 닫는 기능
with open("새파일.txt", "w", encoding="UTF-8") as f:
f.write("Life is too short, you need python")
<조코딩, "최신 파이썬 코딩 무료 강의"> 을 참고하여 작성한 글입니다.
PREV
[Python] 03. 제어문
📌 1. 조건문 들여쓰기를 잘못할 경우 SyntaxError 발생 VSCode에서 코드 진행 상황을 보려면 코드 번호 왼쪽에 Breakpoint(시작포인트)를 건 후 Run->Start debugging 실행해 한 줄씩 확인 가능 ++연산자와 --연
nyeroni.tistory.com
NEXT
'Language > Python' 카테고리의 다른 글
[Python] 03. 제어문 (1) | 2024.01.21 |
---|---|
[Python] 02. Python 프로그래밍의 기초, 자료형 (0) | 2024.01.21 |
[Python] 01. Python이란 무엇인가? (0) | 2024.01.21 |