#함수
#기본 사용법 : 매개변수 있고, 리턴값 있는 경우
def sum(a,b): #앞에 def, 마지막에 : 적어준다.
result = a + b
return result
print(sum(2,7)) #9
#입력 값 여러개 일 경우
def sum_many(*args): #args 아규먼트
sum = 0
for i in args:
sum = sum + i
return sum
print(sum_many(2,3,5,6,7)) #23
#딕셔너리 형태로 값이 여러개 들어올 수 있는 걸 처리할 때
#입력받은 딕셔너리에서 name이라는 키가 있으면 출력하겠는 의미
def print_kwargs(**kwargs):
....
print_kwargs(name="홍길동", old="24세")
#함수의 리턴 값은 하나지만..3개 값을 묶어서 튜플형태로 리턴하는 방법
def sum_and_mul(a,b):
return a+b, a*b, a-b
print(sum_and_mul(3,4)) #(7, 12, -1) 3개 값이 1개의 튜플로 리턴됨
print(sum_and_mul(3,4)[0]) #7 튜플의 첫번째 더한 값만 쓰고자 할 때..
print(sum_and_mul(3,4)[1]) #12 튜플의 2번째 곱한 값만 쓰고자 할 때..
#매개변수 초기값 미리 설정하기
#매개변수 초기값이 미리 설정되어 있으면 호출할 때 그 매개변수는 생략해도 오류 없이 실행된다.
#매개변수 초기값 지정 없이 호출할 때 매개변수를 생략하면 오류가 발생한다.
#기본값을 설정해 놓은 매개변수는 제일 끝에 적어줘야 나중에 호출할 때 오류가 발생하지 않는다.
def say_myself(name, old, man=True): # man=True 초기값 지정
print("이름 : %s" % name)
print("나이 : %d" % old)
if man:
print("남자")
else:
print("여자")
say_myself("aaa", 24) #aaa 24 남자 3번째 매개변수를 생략하면 True가 초기값으로 처리
say_myself("aaa", 24, False) #aaa 24 여자 3번째 매개변수가 있으면 입력된 값으로 처리
say_myself(old=25, man=False, name="bbb") #bbb 25 여자 매개변수 순서대로 입력해야 하지만 그 순서대로 따르기 싫으면 변수명을 직접 적어주면 된다. 직접매핑
#가운데 매개변수에 초기값을 지정하고, 호출할 때 가운데 매개변수를 생략하면 오류가 뜬다.
#호출할 때 매개변수를 생략 가능하게 하고자 한다면 초기값을 지정한 변수는 맨 끝으로 이동시켜야 한다.
"""
def say_myself2(name, man=True, old): # man=True 초기값 지정
print("이름 : %s" % name)
print("나이 : %d" % old)
if man:
print("남자")
else:
print("여자")
say_myself2("ccc", , 30) #오류발생
"""
#함수 안에서 선언된 변수의 효력범위
a = 1
def vartest(a):
a = a + 1 #함수 안에서만 쓰는 a지역변수
vartest(a)
print(a) #1 함수 밖에 있는 a변수에 영향을 주지 않는다.
a = 1
def vartest(a):
a = a + 1 #함수 안에서만 쓰는 a지역변수
return a
a = vartest(a)
print(a) #2 리턴된 값 2를 a변수에 넣어서 출력
#global 변수선언
a = 1
def vartest():
global a #밖에 있는 a를 전역변수로 선언
a = a + 1
vartest()
print(a) #2
#lambda 함수를 간단하게 표현하는 방법
#def add(a,b):
# return a+b
#위에 함수를 간단하게 표현하면
#함수이름 = lambda 매개변수: 수행하고 리턴할 내용
add = lambda a,b: a+b
print(add(3,4))
#리스트 안에도 lambda를 넣을 수 있다.
#함수 이름은 생략 = 리스트 인덱스가 함수 이름을 대신함.
myList = [lambda a,b: a+b, lambda a,b: a*b]
print(myList[0](4,5)) #9
print(myList[1](4,5)) #20
"""
#사용자 입력(input)과 출력(print)
a = input() #input() 내장함수 키보드 입력을 받아 입력내용을 리턴하는 함수
print(a)
number = input("숫자를 입력하세요 : ") #안내문자를 출력하고 키보드 입력을 받을 준비를 한다.
print(number)
"""
print("aaa" + "bbb" + "ccc") #aaabbbccc
print("aaa" "bbb" "ccc") #aaabbbccc +더하기 안써줘도 자동으로 붙여준 걸로 인식한다.
print("aaa", "bbb", "ccc") #aaa bbb ccc
for i in range(10):
print(i, end=' ') #0 1 2 3 4 5 6 7 8 9 줄바꿈 하지 않고 공백 한 칸을 만들어주고 끝낸다.
#파일 쓰기
f = open("z:/새파일.txt", "w", encoding="UTF-8") #3번째 인자 encoding="UTF-8"은 한글 깨짐을 방지하기 위해서 사용
for i in range(1,11):
data = "%d번째 줄입니다.\n" % i #\n = 줄바꿈
f.write(data)
f.close()
#파일 한 줄씩 읽기 : readline()
f = open("z:/새파일.txt", "r", encoding="UTF-8") #3번째 인자 encoding="UTF-8"은 한글 깨짐을 방지하기 위해서 사용
while True:
line = f.readline() #한 줄 읽어오기
if not line: break #line 변수에 읽어온 값이 없을 때 while문을 빠져나와라 break
print("1 : %s" % line.strip("\n")) #txt파일에 이미 줄바꿈되어 저장되어 있고 그 내용을 print하면 또 줄바꿈이 일어나서 2줄이 띄워져 출력 되는데 이걸 1줄만 띄워지게 하려고 strip("\n") 함수로 줄바꿈 한 개를 없애준다.
f.close()
#파일 여러줄 읽기 : readlines() : 리스트형태로 저장됨
f = open("z:/새파일.txt", "r", encoding="UTF-8") #3번째 인자 encoding="UTF-8"은 한글 깨짐을 방지하기 위해서 사용
lines = f.readlines() #모든 줄 읽어오기 : 리스트 형태로 저장됨
for line2 in lines:
print("2 : %s" % line2.strip("\n"), end=" ") #1줄로 붙여서 출력되게 하려고 strip('\n')하고 end=" " 까지 해줌
print("3 : %s" % lines) #['1번째 줄입니다.\n', '2번째 줄입니다.\n', '3번째 줄입니다.\n', '4번째 줄입니다.\n', '5번째 줄입니다.\n', '6번째 줄입니다.\n', '7번째 줄입니다.\n', '8번째 줄입니다.\n', '9번째 줄입니다.\n', '10번째 줄입니다.\n'] 리스트형태로 저장됨
f.close()
#파일 읽기 : read() : 통째로 읽어오는 방법
f = open("z:/새파일.txt", "r", encoding="UTF-8") #3번째 인자 encoding="UTF-8"은 한글 깨짐을 방지하기 위해서 사용
data = f.read() #통째로 읽어온다.
print(data) #파일 원본 그대로 출력
f.close()
#파일 추가
#파일 쓰기 옵션 W는 싹 갈아업고(?) 새로 작성하는 것이고, 옵션 A는 파일 원본 뒷부분에 추가로 작성하는 것
f = open("z:/새파일.txt", "a", encoding="UTF-8") #3번째 인자 encoding="UTF-8"은 한글 깨짐을 방지하기 위해서 사용
for i in range(11, 20):
data = "%d번째 줄입니다.(추가)\n" % i #\n = 줄바꿈
f.write(data)
f.close()
#f.close()를 하지 않는 방법도 있다.
#with문과 함께 사용하기
#with ~ as f: 이렇게 쓰게되면 여기서 f는 지역변수 취급을 받게 된다. with문 안에서만 쓸 수 있다.
#그래서 witn문을 벗어나면 자동으로 close 되기 때문에 f.close()를 쓸 필요가 없다.
with open("z:/새파일2.txt", "w", encoding="UTF-8") as f:
f.write("Life is too short, you need python")
#https://www.youtube.com/watch?v=jRsXLEPnd6Q&list=PLU9-uwewPMe2AX9o9hFgv-nRvOcBdzvP5&index=6
[파이썬] 내장함수, 외장함수 (유튜브 보다가 메모) (0) | 2020.08.18 |
---|---|
[파이썬] 클래스, 모듈, 패키지, 예외처리 (유튜브 보다가 메모) (0) | 2020.08.18 |
[파이썬] 제어문 (조건문 if문, 반복문 while문 for문) 유튜브 보면서 메모.. (0) | 2020.08.17 |
[파이썬] 자료형2, 튜플,딕셔너리, 집합, 불, 변수와 메모리, 변수 만드는 방법 (유튜브 보면서 메모) (0) | 2020.08.17 |
[파이썬] 자료형, 리스트 추가/삭제 (유튜브 보면서 메모) (0) | 2020.08.16 |