-
[Python 기초 #6] 함수, 사용자 입력과 출력, 파일 읽고 쓰기Programming 기초/Python 2023. 4. 19. 16:50
* 파이썬 함수의 구조
def 함수 이름(매개변수)
수행할 문장1
수행할 문장 2
...- def는 함수를 만들 때 사용하는 예약어(keyword)
- 매개변수(parameter) : 함수에 입력으로 전달된 값을 받는 변수.
- 인수(arguments) : 함수를 호출 할 때 전달하는 입력값.
- 매개변수와 인수는 혼용해서 사용됨.
* 입력값과 결괏값에 따른 함수의 형태
- 일반적인 함수
결괏값을 받을 변수 = 함수 이름(입력 인수1, 입력 인수2, ...)
예)
def add(a, b):
result = a + B
result result # a+b의 결괏값 반환- 입력값이 없는 함수
결괏값을 받을 변수 = 함수 이름()
예)
def say():
return 'Hi'- 결과값이 없는 함수
함수 이름(매개변수1, 매개변수2,...)
예)
def add(a,b):
print("%d, %d의 합은 %d입니다." % (a, b, a+b))
>>>a = add(3,4)
3, 4의 합은 7입니다.
>>>print(a)
None # '거짓'값 출력됨.- 입력값도 결괏값도 없는 함수
함수 이름()
예)
def say():
print('Hi')* 입력값이 몇 개가 될지 모를 때 함수 정의법
def 함수이름(*매개변수):
수행할 문장매개변수 앞에 *을 붙인다.
def add_mul(choice, *args): # 매개변수로 choice와 *args를 받음. if choice == "add": result = 0 for i in args: result += i elif choice == "mul": result = 1 for i in args: result = result * i return result result = add_mul('add', 1, 2, 3, 4, 5) print(result) result = add_mul('mul', 1, 2, 3, 4, 5) print(result)
* 키워드 파라미터
딕셔너리를 매개변수로 쓰고자 할 때 사용된다. 매개 변수 앞에 **이 붙는다.
def print_kwargs(**kwargs): print(kwargs) print_kwargs(a=1) #keyword =a, value =1 딕셔너리 입력 print_kwargs(name='foo', age=3) ------------------------------------------- {'a': 1} {'name': 'foo', 'age': 3}
* 함수의 결과값은 언제나 하나이다.
def add_and_mul(a, b): return a+b, a*b result = add_and_mul(3, 4) print(result) ----------------------------- (7, 12) # 1개의 튜플 값으로 출력된다.
* 매개변수에 초깃값 미리 설정하기
- 초기화시키고 싶은 매개변수는 항상 뒤에 놓아야 한다.
def say_myself(name, age, man=True): print("나의 이름은 %s" % name) print("나이는 %d 입니다." % age) if man: print("남자입니다.\n") else: print("여자입니다.\n") say_myself("김유빈", 20) #say_myself("김유빈", 20, True) 두 문장은 완전히 같다. say_myself("김유빈", 25, False) --------------------------------- 나의 이름은 김유빈 나이는 20 입니다. 남자입니다. 나의 이름은 김유빈 나이는 25 입니다. 여자입니다.
*함수 안에서 함수 밖의 변수를 변경하는 방법.
1. return 사용
2. global 명령어 사용 : 사용을 권장하지 않는다.
- 리스트, 딕셔너리, 집합은 mutable(변할 수 있는 자료형)로, 함수 내에서 바뀐 값이 함수 밖에서도 바뀐다. C언어에서 '참조에 의한 호출'과 같은 개념으로, 포인터로 생각하면된다.
- 정수, 실수, 문자열, 튜플은 변하지 않는 자료형이다.
a = 1 def vartest(): global a a = a+1 vartest() print(a) -------------------- 2
* lambda
- 함수를 생성할 때 사용하는 예약어로 def와 동일한 역할을 한다.
- 보통 함수를 한 줄로 간결하게 만들 때 사용한다.
lambda 매개변수1, 매개변수2, .. : 매개변수를 사용한 표현식
>>> add=lambda a, b: a+b >>> result = add(3,4) >>> print(result) 7
* input()
a = input("내용을 입력하세요: ") # input()로 써도 됨. print(a) ------------------------------ 내용을 입력하세요: life is too short, you need python life is too short, you need python
*print()
print("Life" "is" "too short") print("Life"+"is"+"too short") # +연산은 위 문장과 동일하다. print("Life", "is", "too short") # 문자열 띄어쓰기는 콤마로 한다. ---------------------------------- Lifeistoo short Lifeistoo short Life is too short
(복습) 한 줄에 결괏값 출력하기 - for 구문에서 배웠던 end=""
for i in range(10): print(i, end=" ") --------------------- 0 1 2 3 4 5 6 7 8 9
* 파일 읽고 쓰기
파일 객체 = open(파일 이름, 파일 열기 모드)
f = open("절대주소/새파일.txt", 'w') #절대주소에 '새파일'을 생성한다. 쓰기모드 w f.close() # 파일 객체를 닫아 주는 역할.
파일 열기 모드 설명 r 읽기 모드 - 파일을 읽기만 할 때 사용 w 쓰기 모드 - 파일에 내용을 쓸 때 사용 a 추가 모드 - 파일의 마지막에 새로운 내용을 추가할 때 사용 * 파일을 쓰기 모드로 열어 출력값 적기(w)
- 쓰기모드('w')로 파일을 열 때 이미 존재하는 파일을 열면 그 파일의 내용이 모두 사라지게 된다. (추가할 때는 'a' 사용.)
f = open("C:/(절대주소)/새파일.txt", 'w', encoding="UTF-8") # encoding 형식을 지정해준다. for i in range(1, 11): data = "%d번째 줄입니다.\n" % i f.write(data) # data를 파일 객체 f에 써라. f.close()
* readline 함수
- 외부 파일을 읽어 줄 단위로 출력
f = open("C:/(주소)/새파일.txt", 'r', encoding="UTF-8") while True: line = f.readline() # 첫 번째 줄을 읽고 그 다음 줄을 차례로 읽는다. if not line: break print(line) f.close()
* readlines 함수
- 파일의 모든 줄을 읽어서 각각의 줄을 요소로 갖는 리스트로 돌려준다.
f = open("C:/주소/새파일.txt", 'r', encoding="UTF-8") lines = f.readlines() #lines의 자료형은 '리스트'이다. for line in lines: print(line.strip("\n"), end= " ") # strip은 내용 제거모듈이다. f.close()
* read 함수
파일의 내용 전체를 문자열로 돌려준다.
f = open("C:/주소/새파일.txt", 'r', encoding="UTF-8") data = f.read() # data는 파일 전체 내용이다. print(data) f.close()
* 파일에 새로운 내용 추가하기(a)
f = open("C:/주소/새파일.txt", 'a', encoding="UTF-8") for i in range(11, 20): # 11부터 19까지 i에 대입 data = "%d번째 줄입니다.\n" % i f.write(data) # data를 파일 객체 f에 추가하라. f.close()
* with문
- 파일을 열고 닫는 것을 자동으로 처리해주는 역할
- with 블록을 벗어나는 순간 열린 파일 객체 f가 자동으로 close 된다.
with open("C:/주소/새파일.txt", 'a', encoding="UTF-8") as f: f.write("Life is too short, you need python\n")
위 문장과 아래 문장은 같은 문장이다.
f = open("C:/주소/새파일.txt", 'a', encoding="UTF-8") f.write("Life is too short, you need\n") f.close()
'Programming 기초 > Python' 카테고리의 다른 글
[Python 기초 #8] 모듈 (0) 2023.04.25 [Python 기초 #7] 클래스, 객체와 인스턴스 차이, 생성자, 상속, 오버라이딩 (0) 2023.04.21 [Python 기초 #5] 제어문 if, while, for (0) 2023.04.18 [Python 기초 #4] 집합(set), 불(bool), 변수(variable) (0) 2023.04.15 [Python 기초 #3] 튜플(tuple), 딕셔너리(dictionary) (0) 2023.04.14