def function():
code...
return
# hello 파이썬이라는 글자를 출력하는 함수
def hello():
print('python')
hello2()
def hello2():
print('Hello2 function')
# 실행이 안된다 정의를 먼저 하고 나서 실행을 해야 한다.
def function(args):
.... code
def circle(c):
return c * c * 3.14
circle(3)
28.26
덧셈 함수 만들기
def calc(a,b):
result = a + b
return result
# 반환 값이 없는 경우
def add(num1):
total = num1 + 1
def function(args):
___ return result1, result2
def add_sub(a,b):
return a + b , a * b
# 1-100까지 짝수만 출력하다가 51번째에 종료되게 하기
def calc(age):
for i in age:
if i % 2 == 0 :
print(i,end=' ')
elif i == 51:
return
age = range(1,101)
calc(age)
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50
1) 위치인수(positional argument)
def print_nums(a,b,c):
print(a)
print(b)
print(c)
print_nums(3,4,5)
3
4
5
L = [5,6,7]
print_nums(*L)
5
6
7
def sum2(*args):
# args arguments의 약자
hap = 0
# args에서 변수 값을 받으면 초기 값은 무조건 튜플로 변환된다
for i in args:
hap += i
return hap
sum2(1,2,3,4,5,6,7,8,9,10)
55
L = [5,6,7]
sum2(*L)
18
def func(a,*args): # 고정인수,가변인수
def func2(*args,a) : # 가변인수, 고정인수 X 사용할 수 없음
# 1부터 10까지 숫자에 3을 곱하는 함수
def func(a,*args):
result = []
for i in args:
print(a*i)
result.append(a*i)
return result
calc = func(2,*[1,2,3,4,5,6,7,8,9,10])
print(calc)
2
4
6
8
10
12
14
16
18
20
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
def muls(a,*args):
return [a * num for num in args]
muls(3,*[1,2,3,4,5,6,7,8,9,10])
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
def personal_info(name,age,address):
print(f'이름: {name}')
print(f'나이: {age}')
print(f'주소: {address}')
personal_info('홍길동',24,'서초구')
이름: 홍길동
나이: 24
주소: 서초구
# personal_info 함수를 키워드 인수 방식으로 호출해보기
personal_info(name='홍길동',age=30,address='서초구 잠원동')
# 키워드 인수 방식으로 호출할 경우 인수의 순서나 위치를 변경할 수 있다
personal_info(address='서초구 잠원동',name='홍길동',age=30)
x = {'name':'홍길동','age':23,'address':'거어드레스불러보소'}
personal_info(**x)
이름: 홍길동
나이: 23
주소: 거어드레스불러보소
def personal_info2(**kwargs): #kwargs(keyword arguments)
print(kwargs)
print(type(kwargs))
for kw,arg in kwargs.items():
print(kw,':',arg,sep='')
y = {'주소':'마 어드레스 부르소'}
# 인수를 한개만 입력
personal_info2(name='홍길동')
name:홍길동
# 인수를 한개만 입력
personal_info2(name='홍길동',address='마 어드레스 부르소',age=30)
#{'name': '홍길동', 'address': '마 어드레스 부르소', 'age': 30}
#<class 'dict'>
#name:홍길동
#address:마 어드레스 부르소
#age:30
# print문으로 kwargs, type kw,args를 모두 출력하라고 지시했기 때문에 다같이 출력됨
def personal_info3(**kwargs):
if 'name' in kwargs:
print(f'이름 : {kwargs["name"]}')
if 'age' in kwargs:
print(f'나이 : {kwargs["age"]}')
if 'address' in kwargs:
print(f'주소 : {kwargs["address"]}')
personal_info3(**x)
이름 : 홍길동
나이 : 23
주소 : 거어드레스불러보소
def func(위치인수,키워드인수):
def func(*가변인수,**키워드인수):
def custom_print(*args,**kwargs):
print(*args,**kwargs)
custom_print(1,2,3,'python',sep=':',end='')
1:2:3:python
def personal_info4(name,age,address='비공개'): #address는 기본값을 '' 공백을 default로 둠
print(f'이름 : {name}')
print(f'나이 : {age}')
print(f'주소 : {address}')
personal_info4('홍길동',24)
이름 : 홍길동
나이 : 24
주소 : 비공개
personal_info4('홍길동',24,'서초구') #값을 넣어주면 default 값인 비공개가 없어지고 서초구가 출력이 된다
이름 : 홍길동
나이 : 24
주소 : 서초구
def personal_info4(name,address='비공개',age): #address는 기본값을 '' 공백을 default로 둠
print(f'이름 : {name}')
print(f'나이 : {age}')
print(f'주소 : {address}')
File "<ipython-input-97-7a36956e9ff5>", line 1
def personal_info4(name,address='비공개',age): #address는 기본값을 '' 공백을 default로 둠
^
SyntaxError: non-default argument follows default argument
def calc2(a,b):
print(f'{a} + {b} = {a+b}')
print(f'{a} - {b} = {a-b}')
print(f'{a} * {b} = {a*b}')
print(f'{a} / {b} = {a/b}')
calc2(5,3)
문자를 입력 받아 한글인지 아닌지 판별하는 함수를 작성하시오
# 풀이
def is_ko(ch):
start = 12593
end = 55203
if start<= ord(ch)<= end :
print('한글')
return True
else:
print('한글이 아닙니다')
return False
# user_input = input('문자열을 입력하세요 >> ')
is_ko('')
다른버전
def kor_is(ch):
for i in ch:
ascii = ord(i)
if 65 <= ascii <= 122:
return '영문자'
elif 12593 <= ascii <= 55203:
return '한글'
else:
return '범위 이외의 글자입니다'
user_input = input('입력 >> ')
kor_is(user_input)
def func(매개변수):
____ """DocStr('함수에 대한 설명')"""
__ code
- return
add 함수에 doc 스트링 입력하여 실행 및 출력해보기
def add(a,b):
"""
이 함수는 a와 b를 더한 뒤 결과를 반환하는 함수입니다.
"""
return a + b
Help on function add in module __main__:
add(a, b)
이 함수는 a와 b를 더한 뒤 결과를 반환하는 함수입니다.
None
# 10을 더하는 함수 기존
def func(x):
return x + 10
func(5)
15
# 10을 더하는 함수
(lambda x: x+10)(5)
plus_five = (lambda x : x+5)
plus_five(5)
10
def plus_ten(x):
return x + 10
list(map(plus_ten,[1,2,3])) #맵으로 1,2,3을 매핑해서 함수에 넣어준 후에 , 리스트로 반환 시켜줌
[11, 12, 13]
list(map(lambda x : x + 10,[1,2,3])) #람다로 축약
[11, 12, 13]
# 결과가 같다
# 3의 배수만 문자열로 바꾸기
result = []
def three(*args):
for i in args:
if i % 3 == 0 :
i = str(i)
result.append(i)
else:
result.append(i)
return result
a = three(*[1,2,3,4,5,6,7,8,9,10])
print(a)
[1, 2, '3', 4, 5, '6', 7, 8, '9', 10]
L = [1,2,3,4,5,6,7,8,9,10]
list(map(lambda x: str(x) if x % 3 == 0 else x,L))
[1, 2, '3', 4, 5, '6', 7, 8, '9', 10]
a = [1,2,3,4,5]
b = [2,4,6,8,10]
c = [3,6,9,12,15]
list(map(lambda x,y,z: x * y * z,a,b,c))
[6, 48, 162, 384, 750]
def f(x):
return 5 < x < 10
a = [8, 3, 2, 10, 15, 7, 1, 9, 0, 11]
list(filter(f,a)) #5보다 크고 10보다 작은 수만 출력
[8, 7, 9]
list(filter(lambda x: 5<x<10,a)) # 상기 함수와 같은 식을 lambd로 사용 하기
[8, 7, 9]
files = ['font','1.png','10.jpg','11.gif','2.jpg','3.png','table.xlsx','spec.doc']
for idx,i in enumerate(files):
if i.find('.png') != -1:
print(f"{idx+1}번 {i} : {i.find('.png')}")
2번 1.png : 1
6번 3.png : 1
list(filter(lambda x: x.find('.png') != -1 or x.find('.jpg') != -1,files))
['1.png', '10.jpg', '2.jpg', '3.png']