def say_hi():
print('안녕!')
def say_hi_to(name):
# print('영수님 안녕하세요')
print(f'{name}님 안녕하세요')
from main_func import * # *은 파일명에 있는 모든 함수들을 가져옴.
say_hi()
say_hi_to('영수')
# 안녕!
# 영수님 안녕하세요!
from main_func import say_hi_to
say_hi()
say_hi_to('영수')
# NameError: name 'say_hi' is not defined
1) if문 - 삼항연산자
num = 3
if num%2 == 0:
# print('짝수')
result = '짝수'
else:
# print('홀수')
result = '홀수'
print(f"{num}은 {result}입니다.")
# 3은 홀수입니다
이것을 한 줄에 적는 것이 파이썬의 유일한 삼항연산자인 조건식이다.
result = ('짝수' if num % 2 == 0 else '홀수')
# '짝수'라고 해라. 만약에 num을 2로 나눈 나머지가 0이면. 그게 아니면 '홀수'라고 해라.
🙂 (참일 때 값) if (조건) else (거짓일 때 값)으로 항이 3개라 삼항 연산자이다.
2) for문 - 한방에 써버리기
a_list = [1, 3, 2, 5, 1, 2]
# 각 요소에 *2한 리스트를 만들고 싶다.
b_list = []
for a in a_list:
b_list.append(a*2) # a_list를 돌면서 *2한 것을 b_list에 하나씩 추가해라.
print(b_list)
# [2, 6, 4, 10, 2, 4]
이것을 한 번에 쓸 수 있는 방법
b_list = [a*2 for a in a_list]
# a를 *2를 해라. a를 돌려라. a_list에 있는. 그리고 걔들을 다 리스트로 묶어라.
1) map - 리스트의 모든 원소를 조작하기
people = [
{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
{'name': 'smith', 'age': 17},
{'name': 'ben', 'age': 27},
{'name': 'bobby', 'age': 57},
{'name': 'red', 'age': 32},
{'name': 'queen', 'age': 25}
]
def check_adult(person):
if person['age'] > 20:
return '성인'
else:
return '청소년'
result = map(check_adult, people) # people을 하나하나 돌면서 check_adult에 넣어라.
print(result)
# <map object at 0x000001F7157B8FD0>
print(list(result))
# ['청소년', '성인', '청소년', '청소년', '성인', '성인', '성인', '성인'] 리스트로 묶어줘야 결과값이보인다.
def check_adult(person):
return '성인' if person['age'] > 20 else '청소년'
# '성인'이라고 하자. 만약에 person의 'age'가 20보다 크면. 그게 아니면 '청소년'이라고 하자.
result = map(check_adult, people)
print(list(result))
result = map(check_adult, people)
result = map(lambda x: x, list)
# list를 돌면서 x에 값(x)을 넣음. lambda식은 매개변수를 보통 x로 쓴다.
result = map(lambda person: ('성인' if person['age'] > 20 else '청소년'), people)
# people을 돌면서 person에 '성인' if person['age'] > 20 else '청소년'의 값을 넣음.
2) filter - 리스트의 모든 원소 중 특별한 것(True인 것들)만 뽑기
result = filter(lambda x: x['age'] > 20, people)
# people의 요소를 하나하나 x에 넣고 그 x의 'age'값이 20보다 크면 걔들만 뽑아라.
print(list(result))
#
[{'name': 'carry', 'age': 38},
{'name': 'ben', 'age': 27},
{'name': 'bobby', 'age': 57},
{'name': 'red', 'age': 32},
{'name': 'queen', 'age': 25}]
1) 함수에 인수를 넣을 때, 어떤 매개변수에 어떤 값을 넣을지 정해줄 수 있다. 순서 상관 없음!
def cal(a, b):
return a + 2 * b
result = cal(1,2)
print(result) # 5
result = cal(2,1)
print(result) # 4
result = cal(a=2, b=3)
print(result) # 8
result = cal(b=3, a=2)
print(result) # 8
# 매개변수에 직접 값을 지정해주면 순서를 맞추지 않아도 된다.
2) 특정 매개변수에 디폴트 값을 지정해줄 수 있다.
def cal(a, b=2): # b의 값을 2로 고정
return a + 2 * b
result = cal(1) # b값을 안 넣어줬지만 디폴트값이 있어서 넣었다고 인식함.
print(result) # 5
result = cal(1,3) # 따로 값을 넣어주지 않으면 디폴트 값이 기본값으로 적용되고 직접 넣어줬을 경우 넣어준 값으로 적용됨.
print(result) # 7
3) 입력값의 개수를 지정하지 않고 모두 받는 방법(args : arguments)
def cal(*args): # 변수인자를 무제한으로 넣을 수 있다. 그것을 리스트로 받아서 쓸 수 있다.
for name in args:
print(f'{name}야 밥먹어라~')
cal('철수','영수','희재')
#
철수야 밥먹어라~
영수야 밥먹어라~
희재야 밥먹어라~
4) 키워드 인수를 여러 개 받는 방법(**kwargs : 딕셔너리 형태로 만들어서 쓸 수 있음)
def cal(**kwargs):
print(kwargs)
cal(name='bob',age=30)
cal(height=180)
#
{'name': 'bob', 'age': 30}
{'height': 180}
1) 언제 사용하는지가 중요하다.
예를 들어, 아주 많은 몬스터들의 HP를 관리해야 하면?
방법 1. 리스트의 순서를 잘 지켜서 각 몬스터들의 hp를 잘 적어둔다. (중앙 한 곳에 모아서 관리)
방법 2. 몬스터마다 각자의 hp를 가질 수 있게 한다.
2) 어떻게 쓰는가?
class Monster():
hp = 100
alive = True
def damage(self, attack): # self는 내가 받은 attack은 내가 받은 데미지
self.hp = self.hp - attack
if self.hp < 0:
self.alive = False
def status_check(self): # 죽었는지 살았는지
if self.alive( == True):
print('살아있다')
else:
print('죽었다')
m1 = Monster()
m1.damage(150)
m1.status_check() # 죽었다.
m2 = Monster()
m2.damage(90)
m2.status_check() # 살았다.
# 자체적으로 관리가 가능
# m1, m2는 인스턴스
출처: 네이버 지식백과