[파이썬] 함수, 사용자 입력과 출력, 파일 읽고 쓰기

osdsoonhyun·2022년 1월 28일
0

파이썬

목록 보기
6/10
post-thumbnail

함수


프로그래밍에서 함수는 입력, 출력이 없고 function만 있을 수도 있다

파이썬 함수의 구조

>>> def 함수명(매개변수):   //def define의 약자 
>>> 	<수행할 문장1>
>>> 	<수행할 문장2>
>>>		...
>>>		return 리턴 값

매개변수 -> INPUT

<수행할 문장1>
<수행할 문장2> -> FUNCTION
...

return 리턴 값 -> OUTPUT

예제로 익혀보자!

>>> 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))

>>> sum(1,2)
1, 2의 합은 3입니다.

 >>> print(sum(1,2))
None // return 값이 없어 None이 찍힌다

출력값(return)이 없고 print만 해준다

함수라는 것이 다른 언어와 마찬가지로 입력값출력값이 무조건 있어야 되는것이 아니다

입력값, 출력값 둘 다 없는 함수

>>> def say():
>>> 	print('Hi')
>>>	print(say())
None // return이 없으므로

>>> say()
Hi

여러 개의 입력값

>>> def sum_many(*args):
>>> 	sum = 0
>>> 	for i in args:
>>>			sum = sum + i
>>>		return sum

>>> print(sum_many(1,2,3))
6

변수의 갯수를 모를 때*args라 쓰면 몇 개든 상관없이 다 들어갈 수 있다

>>> def print_kwargs(**kwargs):
>>> 	for k in kwargs.keys():
>>>			if(k == "name"):
>>>				print("당신의 이름은 :" + kwargs[k])
>>> print(print_kwargs(name="int 조수", b="2"))

**kwargs는 딕셔너리 형태로 여러개의 값이 들어올 수 있는 매개변수

함수의 결과값은 언제나 하나

>>> def sum_and_mul(a,b):
>>> 	return a+b,a*b
>>> print(sum_and_mul(3,4))
(7,12) // 튜플 형태로 나옴

>>> print(sum_and_mul(3,4)[0])
7 // 하나씩 나눠 쓰기

return 값은 하나이므로 튜플 형태로 나온다
여러개의 값을 한번에 리턴하고 튜플 형태로 받아 하나씩 나눠서 쓰면 된다

매개 변수에 초기값 미리 설정하기

>>> def say_myself(name, old, man = True): // man = True 초기값 설정
>>> 	print("나의 이름은 %s입니다." % name)
>>> 	print("나이는 %d살입니다", % old)
>>> 	if man:
>>>			print("남자입니다")
>>>		else:
>>>			print("여자입니다")

>>> say_myself("문제아",27) // say_myself(name,old,man)으로 하면
TypeError 

>>> say_myself("알로하",27) // 초기값을 True라 주어 자동으로 해당됨
나의 이름은 알로하입니다.
나이는 27살입니다.
남자입니다.

>>> say_myself("알로하",27,False) //False넣으면 변경됨
나의 이름은 알로하입니다.
나이는 27살입니다.
여자입니다.

기본 값은 조건 나열할 때 맨 뒤에 써주는 것을 원칙으로 한다

함수 안에서 선언된 변수의 효력 범위

>>> a = 1
>>> def vartest(a):
>>> 	a = a+1   //함수 내에서는 2 return을 안해주었으므로  함수 안에서만 쓰인다

>>> vartest(a)
>>> print(a)
1

함수 안에서 함수 밖의 변수를 변경하는 방법

return 값을 활용해준다

>>> b = 1
>>> def vartest(b):
>>>    b = b+1   
>>>    return b    //추가된 output

>>> b = vartest(b)
>>> print(b)
2

함수 안에서 함수 밖의 변수를 변경하는 방법2

global 라는 예약어를 사용한다

>>> a = 1
>>> def vartest():
>>> 	global a
>>> 	a = a+1

>>> vartest()
>>> print(a)
2

Lambda

Lambda는 함수를 간단하게 표현하는 방법

>>> def add(a,b):
>>> 	return a+b

>>> add= lambda a,b: a+b
>>> print(add(1,2))
3

파이썬에서는 lambda함수가 있어 함수 이름을 안 정하고 매개 변수를 안 정하고 리턴값을 정하지 않고 축약 모드로 정할 수 있다
def를 못 쓰는 곳에서 유용하게 쓰인다

>>> myList = [lambda a,b: a+b,lambda a,b: a*b]

>>> print(myList[0](1,2))
3 

>>> print(myList[1](1,2))
2

사용자 입력과 출력

input의 사용

>>> a = input()
Life is too short, you need python
>>> a
'Life is too short, you need python'

input이라는 함수는 내장함수로 미리 정의된 함수이다

input 안에 인자를 넣을 수도 있다

>>> number = input("숫자를 입력하세요: ")

>>> print(number)
숫자를 입력하세요: 10
10
>>> print("life" "is" "too short")
lifeistoo short
>>> print("life"+"is"+"too short")
lifeistoo short

>>> print("life","is","too short") // ,가 띄어쓰기 역할을 한다
life is too short

>>> for i in range(10)
>>>		print(i,end=' ')
>>>
0 1 2 3 4 5 6 7 8 9 

print는 기본적으로 출력하고 다음줄로 넘어가는데 end=' ' i뒤에 띄어쓰기하고 계속 출력하겠다

파일 읽고 쓰기
텍스트 파일을 형성하고 파일을 쓰고 파일을 닫고 저장하는 개념

파일 생성하기

>>> f = open("새파일.txt", 'w')
>>> f.close

f라는 변수를 open하고 새파일.txt를 만들고 쓰기모드로 사용

파일열기모드설명
r읽기모드-파일을 읽기만 할 때 사용
w쓰기모드-파일에 내용을 쓸 때 사용
a추가모드-파일의 마지막에 새로운 내용을 추가 시킬 때 사용

추가모드는 어떤 내용이 있으면 추가하고 저장을 한다
쓰기모드는 파일 내용을 다 지우고 새로 쓴다

파일을 쓰기 모드로 열어 출력값 적기

>>> f = open("C:/Python/새파일.txt",'w',encoding="UTF-8")
>>> for i in range(1,11):
>>> 	data = "%d번째 줄입니다.\n", %i
>>> 	f.write(data)
>>> f.close()

open 함수에 세 번째 인자에 encoding : 사용자가 입력한 문자나 기호들을 깨지지 않게 해준다

  • 절대주소 : 처음부터(C:/)부터 주소를 써주는 것
  • 상대주소 : 현재 실행하는 파일을 기준으로 상대적인 경로를 써주는 것

파일 읽기 모드 readline() 함수

readline은 파일을 한 줄씩 읽어오는 함수

>>> f = open("C:/Python/새파일.txt",'r')
>>> line = f.readline()
>>> print(line)
>>> f.close

한 줄 읽기

>>> f = open("C:/Python/새파일.txt", 'r',encoding="UTF-8")
>>> while True:
>>> 	line = f.readline()
>>> 	if not line: break
>>> 	print(line)
>>> f.close()

모든 줄 읽기

readlines() 함수 이용하기
>>> f = open("C/:Python/새파일.txt",'r')
>>> lines = f.readlines()
>>> for line in lines:
>>>		print(line)
>>> f.close 

readlines 함수를 통해서 리스트 형태로 모든 라인을 다 읽어올 수 있다

read() 함수 이용하기

>>> f = open("C:/Python/새파일.txt",'r')
>>> data = f.read()
>>> print(data)
>>> f.close()

read는 통째로 읽어온다

추가모드

>>> f = open("C:/Python/새파일.txt",'ㅁ',encoding="UTF-8")
>>> for i in range(11,20):
>>> 	data = "%d번째 줄입니다.\n", %i
>>> 	f.write(data)
>>> f.close()

...
9번째 줄입니다.
10번째 줄입니다.

11번째 줄입니다.
12번째 줄입니다.
...
19번째 줄입니다.

with문과 함께 사용하기

close를 사용하지 않는 경우

>>> f = open("foo.txt",'w')
>>> f.write("Life is too short, you need python")
>>> f.close()

>>> with open("foo.txt",'w') as f:
>>> 	f.write("Life is too short, you need python")

open("foo.txt",'w') foo.txt를 쓰기모드로 열어 f라는 변수에 저장한다(f 지역변수)

Immutable (정수, 실수, 문자열, 튜플)

>>> a = 1
>>> def vartest(a):
>>> 	a = a + 1
>>> vatest(a)
2
>>> print(a)
1

Mutable(리스트, 딕셔너리, 집합)

>>> b = [1,2,3]
>>> def vartest2(b):
>>> 	b = b.append(4)
>>> vartest2(b)
[1,2,3,4]
>>> print(b)
[1,2,3,4]

0개의 댓글