π‘ λ³Έ ν¬μ€ν μ μμ λ΄μ©, κ΅μ¬, ChatGPTλ₯Ό μ°Έκ³ νμ¬ μ 리ν νμ΅ κΈ°λ‘μ λλ€.
κΈκ³Ό κ·Έλ¦Ό λ± λͺ¨λ μ½ν μΈ μ μ 리 λ° μμ±μ λ³Έ λΈλ‘κ·Έμμ μ§μ μ μλμμ΅λλ€.
Python κΈ°μ΄λΆν° Streamlit λ°μ΄ν° μκ°νκΉμ§ μ 리νλ νμ΅ κΈ°λ‘μ λλ€.
μ΄ κΈμ '7. [νμ΄μ¬] ν¨μ κΈ°μ΄μ λ§€κ°λ³μ' μ λλ€.
ν¨μλ νμ΄μ¬μ λ°°μ°λ©΄μ μ²μμλ "μ½λλ₯Ό λ¬Άλ λ¬Έλ²" μ λλ‘ λ³΄μ΄μ§λ§, μ‘°κΈλ§ μ§λλ©΄ νλ‘κ·Έλ¨μ ꡬ쑰μ μΌλ‘ μ€κ³νλ ν΅μ¬ λꡬλΌλ κ²μ μκ² λλ€.
κ°μ μμ μ λ°λ³΅ν΄μ μμ±νμ§ μκ² ν΄μ£Όκ³ , μ λ ₯κ³Ό μΆλ ₯μ λΆλ¦¬ν΄μ μκ°νκ² λ§λ€λ©°, μ΄ν κ°μ²΄μ§ν₯μ΄λ λͺ¨λνλ‘ λμ΄κ° λλ κ°μ₯ μ€μν κΈ°μ΄κ° λλ€.
μ΄λ² κΈμμλ ν¨μμ μ μμ νΈμΆ, λ§€κ°λ³μμ μΈμ, μμΉ μΈμμ ν€μλ μΈμ, κΈ°λ³Έκ°, λ°νκ°, κ°λ³ μΈμ, μΈν¨νΉ, κ°μ²΄ μ°Έμ‘° λ°©μ, νμ ννΈκΉμ§ μμλλ‘ μ 리ν΄λ³΄λ €κ³ νλ€.
ν¨μλ 무μμΈκ°
ν¨μ(function)λ 'νΉμ μμ μ μννλ μ½λμ λ¬Άμ'μ΄λ€.
ν λ² μ μν΄λλ©΄ νμν λλ§λ€ λ€μ νΈμΆν΄μ μ¬μ©ν μ μλ€.
μμ£Ό κΈ°λ³Έμ μΈ ννλ λ€μκ³Ό κ°λ€.
def show_welcome():
print("νμ΄μ¬ νμ΅μ μμν©λλ€.")
show_welcome()
show_welcome() # μ¬λ¬λ² νΈμΆνλ κ²μ΄ λ§€μ° μ©μ΄νλ€.
μ€ν κ²°κ³Ό
νμ΄μ¬ νμ΅μ μμν©λλ€.
νμ΄μ¬ νμ΅μ μμν©λλ€.
μ¬κΈ°μ μ€μν νλ¦μ λ λ¨κ³μ΄λ€.
- def λ‘ ν¨μλ₯Ό μ μ(define)νλ€.
- ν¨μ μ΄λ¦ λ€μ () λ₯Ό λΆμ¬ νΈμΆνλ€.
μ¦, ν¨μλ λ§λ€μ΄λκΈ°λ§ ν΄μλ μ€νλμ§ μκ³ , μ€μ λ‘ νΈμΆν΄μΌ λμνλ€.
ν¨μλ₯Ό μ¬μ©νλ μ΄μ
ν¨μμ κ°μ₯ ν° μ₯μ μ λ°λ³΅μ μ€μ΄κ³ , μλ―Έλ₯Ό λΆλ¦¬ν΄μ€λ€λ μ μ΄λ€.
μλ₯Ό λ€μ΄ μ μ λ°μ΄ν°λ₯Ό μΆλ ₯νλ μ½λκ° μ¬λ¬ κ΅°λ° λ°λ³΅λλ€λ©΄, λ§€λ² print()λ₯Ό κΈΈκ² μ°κΈ° λ³΄λ€ ν¨μλ‘ λ¬Άλ νΈμ΄ ν¨μ¬ κΉλνλ€.
def print_score_report():
print("νμ΅μ μ μ 리ν¬νΈ")
print("-" * 20)
print("μΆλ ₯ μλ£")
print_score_report()
μ€ν κ²°κ³Ό
νμ΅μ μ μ 리ν¬νΈ
--------------------
μΆλ ₯ μλ£
μ΄λ κ² ν¨μλ‘ λ¬Άμ΄λλ©΄ λμ€μ μΆλ ₯ νμμ λ°κΎΈκ³ μΆμ λλ ν¨μ λ΄λΆλ§ μμ νλ©΄ λλ€.
νλ‘κ·Έλ¨μ΄ 컀μ§μλ‘ μ΄λ° ꡬ쑰νμ ν¨κ³Όλ ν¨μ¬ 컀μ§λ€.
λ§€κ°λ³μ(Parameter)μ μΈμ(Augument)
- λ§€κ°λ³μ(parameter): ν¨μλ₯Ό μ μν λ μ μΈνλ λ³μ
- μΈμ(argument): ν¨μλ₯Ό νΈμΆν λ μ€μ λ‘ μ λ¬νλ κ°
μμ λ₯Ό 보면 μ°¨μ΄κ° λ λΆλͺ ν΄μ§λ€.
def add_values(x, y):
print(f"x={x}, y={y}")
return x + y
print(add_values(10, 5))
print(add_values("data", "base"))
μ€ν κ²°κ³Ό
x=10, y=5
15
x=data, y=base
database
μ¬κΈ°μ x, y λ λ§€κ°λ³μμ΄κ³ ,
10, 5, "data", "base" λ μΈμμ΄λ€.
νμ΄μ¬ ν¨μλ λ§€μ° μ μ°ν΄μ + μ°μ°μ΄ κ°λ₯ν νμ λΌλ¦¬λΌλ©΄ κ°μ ν¨μμμλ λμν μ μλ€.
μ«μλ₯Ό μ λ¬νλ©΄ λ§μ μ΄ λκ³ , λ¬Έμμ΄μ μ λ¬νλ©΄ μ΄μ΄ λΆμ΄κΈ°κ° λλ€.
μ΄ μ μ΄ νμ΄μ¬μ μ₯μ μ΄κΈ°λ νμ§λ§, λμμ νμ μ μ νν μμνμ§ μμΌλ©΄ μμμΉ λͺ»ν κ²°κ³Όκ° λμ¬ μλ μλ€.
μμΉ μΈμμ ν€μλ μΈμ
ν¨μλ₯Ό νΈμΆν λ κ°μ μ λ¬νλ λ°©μμ ν¬κ² λ κ°μ§ μ΄λ€.
첫 λ²μ§Έλ 'μμΉ μΈμ(positional argument)' μ΄λ€.
λ§ κ·Έλλ‘ μμ±λ μμλλ‘ κ°μ΄ λ€μ΄κ°λ€.
λ λ²μ§Έλ 'ν€μλ μΈμ(keyword argument)' μ΄λ€.
λ§€κ°λ³μ μ΄λ¦μ μ§μ μ§μ ν΄μ μ λ¬νλ€.
def introduce(name, role):
print(f"name={name}, role={role}")
introduce("μ§μ", "data engineer")
introduce(role="backend engineer", name="λ―Όμ")
introduce("νλ", role="analyst")
μ€ν κ²°κ³Ό
name=μ§μ, role=data engineer
name=λ―Όμ, role=backend engineer
name=νλ, role=analyst
μ¬κΈ°μ μΈ λ²μ§Έ νΈμΆμ²λΌ μμΉμΈμμ ν€μλ μΈμλ₯Ό μμ΄ μΈ μλ μμ§λ§, κ·μΉμ΄ μλ€.
νμ μμΉ μΈμκ° λ¨Όμ μμΌ νλ€.
μλ₯Ό λ€μ΄ μλ μ½λλ λ¬Έλ² μ€λ₯κ° λλ€.
# introduce(name="μ§μ", "data engineer")
μ¦, ν¨μ νΈμΆμμ κ° μ λ¬ κ·μΉμ΄ ν·κ°λ¦΄ λλ λ€μμ²λΌ κΈ°μ΅νλ©΄ νΈνλ€.
- μμλλ‘ λ£μΌλ©΄ μμΉ μΈμ
- μ΄λ¦μ μ§μ νλ©΄ ν€μλ μΈμ
- μμ λλ μμΉ μΈμκ° λ¨Όμ
κΈ°λ³Έκ°μ΄ μλ λ§€κ°λ³μ
ν¨μλ λ§€κ°λ³μμ 'κΈ°λ³Έκ°(default value)'μ μ€ μ μλ€.
μ΄λ κ² νλ©΄ νΈμΆν λ μΈμλ₯Ό μλ΅ν΄λ ν¨μκ° λμνλ€.
def greet_user(name, message="νμν©λλ€"):
print(f"{name}λ, {message}!")
greet_user("μ§μ")
greet_user("λμ€", "μ€λλ μ’μ ν루 보λ΄μΈμ")
μ€ν κ²°κ³Ό
μ§μλ, νμν©λλ€!
λμ€λ, μ€λλ μ’μ ν루 보λ΄μΈμ!
κΈ°λ³Έκ°μ λ§€μ° μμ£Ό μ°μΈλ€.
νΉν μ΅μ μ΄ λ§μ ν¨μμμ μΌλΆ κ°λ§ λ°κΎΈκ³ λλ¨Έμ§λ κΈ°λ³Έ λμμ μ μ§νκ³ μΆμ λ μ μ©νλ€.
λ€λ§ μ€μν κ·μΉμ΄ νλ μλ€.
κΈ°λ³Έκ°μ΄ μλ λ§€κ°λ³μλ λ°λμ μ€λ₯Έμͺ½μ μμΌ νλ€.
μ¦, μλμ²λΌ μ°λ©΄ μ λλ€.
# def wrong_example(message="μλ
", name):
# print(name, message)
μ΄ κ·μΉμ λμ€μ ν¨μ μ μλ₯Ό μ½μ λλ μ€μνλ€.
μΌμͺ½μλ λ³΄ν΅ νμ μ λ ₯, μ€λ₯Έμͺ½μλ μ ν μ λ ₯μ΄ μ¨λ€κ³ μ΄ν΄νλ©΄ λλ€.
λ°νκ°(return)μ μλ―Έ
ν¨μλ λ¨μν νλ©΄μ μΆλ ₯λ§ νλ κ²μ΄ μλλΌ, κ²°κ³Όλ₯Ό νΈμΆν μͺ½μΌλ‘ λλλ € μ€ μ μλ€.
κ·Έλ μ¬μ©νλ ν€μλκ° return μ΄λ€.
def multiply(a, b):
return a * b
result = multiply(6, 7)
print(result)
μ€ν κ²°κ³Ό
42
μ¬κΈ°μ print() μ return μ μ°¨μ΄λ₯Ό λΆλͺ ν μ΄ν΄ν΄μΌ νλ€.
- print() λ νλ©΄μ 보μ¬μ£Όλ κ²
- return μ κ°μ ν¨μ λ°μΌλ‘ λλ €μ£Όλ κ²
μ¦, ν¨μ κ²°κ³Όλ₯Ό λ€λ₯Έ κ³μ°μμ λ€μ μ¬μ©νλ €λ©΄ return μ΄ νμνλ€.
μ¬λ¬ κ°μ κ°μ ν λ²μ λ°ννκΈ°
νμ΄μ¬μμλ λ΄λΆμ μΌλ‘ νν ννλ‘ λ¬Άμ¬ λ°νλλ€.
def calc_scores(a, b):
return a + b, a - b, a * b, a / b
all_result = calc_scores(20, 4)
print(all_result)
plus_result, minus_result, multiply_result, divide_result = calc_scores(20, 4)
print(plus_result)
print(divide_result)
μ€ν κ²°κ³Ό
(24, 16, 80, 5.0)
24
5.0
μ΄μ²λΌ μ¬λ¬ κ°μ λ°ννλ©΄, νμν κ°λ§ μΈν¨νΉν΄μ μ¬μ©ν μ μλ€.
'4. [νμ΄μ¬] ννκ³Ό ν¨νΉ/μΈν¨νΉ'μ μ½μλ€λ©΄ μ΄ λΆλΆμ΄ μμ°μ€λ½κ² μ΄μ΄μ§λ€.
returnμ λ§λλ©΄ ν¨μλ μ¦μ μ’ λ£λλ€
def check_number(n):
if n > 0:
return "μμ"
print("μ΄ μ½λλ n > 0μΌ λ μ€νλμ§ μμ΅λλ€.")
return "0 λλ μμ"
print(check_number(3))
print(check_number(-1))
μ€ν κ²°κ³Ό
μμ
μ΄ μ½λλ n > 0μΌ λ μ€νλμ§ μμ΅λλ€.
0 λλ μμ
μ¦, return μλμ μλ μ½λκ° νμ μ€νλλ€κ³ μκ°νλ©΄ μ λλ€.
쑰건문과 ν¨κ» μ°μΌ λλ νλ¦μ μ λ°λΌκ°μΌ νλ€.
κ°λ³ μΈμ: *args
ν¨μμ μ λ¬ν μΈμμ κ°μκ° λ§€λ² λ¬λΌμ§ μ μλ€λ©΄ μ΄λ»κ² ν΄μΌ ν κΉ?
μ΄λ΄ λ μ¬μ©νλ κ²μ΄ κ°λ³ μΈμλ€.
def collect_numbers(*args):
print(args)
print(type(args))
collect_numbers(3)
collect_numbers(3, 6, 9, 12)
μ€ν κ²°κ³Ό
(3,)
<class 'tuple'>
(3, 6, 9, 12)
<class 'tuple'>
*args λ μ¬λ¬ κ°μ μμΉ μΈμλ₯Ό 'νν'λ‘ λ¬Άμ΄μ λ°λλ€.
μ¦, μΈμμ κ°μκ° κ³ μ λμ΄ μμ§ μμ ν¨μμμ λ§€μ° μ μ©νλ€.
μλ₯Ό λ€μ΄ νκ· κ³μ° ν¨μλ₯Ό λ§λ€λ©΄ ν¨μ¬ μμ°μ€λ½λ€.
def get_average(*numbers):
if not numbers:
return 0
return sum(numbers) / len(numbers)
print(get_average(10, 20, 30))
print(get_average(5, 15, 25, 35, 45))
print(get_average())
μ€ν κ²°κ³Ό
20.0
25.0
0
κ°λ³ μΈμλ "μ λ ₯ κ°μκ° λ§€λ² λ¬λΌμ§λ ν¨μ"λ₯Ό λ§λ€ λ μ λ§ μμ£Ό μ°μΈλ€.
κ°λ³ ν€μλ μΈμ: **kwargs
**kwargs λ μ¬λ¬ κ°μ ν€μλ μΈμλ₯Ό 'λμ λ리'λ‘ λ¬Άμ΄μ λ°λλ€.
def print_profile(**kwargs):
print(kwargs)
print(type(kwargs))
print_profile(name="μ§μ", track="python", level="intermediate")
μ€ν κ²°κ³Ό
{'name': 'μ§μ', 'track': 'python', 'level': 'intermediate'}
<class 'dict'>
μ΄ λ°©μμ ν¨μκ° λ€μν μ΅μ μ λ°μμΌ ν λ μ μ©νλ€.
μλ₯Ό λ€μ΄ μ€μ κ°, μ¬μ©μ μ 보, νν° μ‘°κ±΄ λ±μ μ μ°νκ² λ°κ³ μΆμ λ μμ£Ό μ¬μ©λλ€.
*args μ **kwargs λ₯Ό ν¨κ» μ¬μ©νλ ν¨μ
λμ ν¨κ» μ°λ©΄ λ§€μ° μ μ°ν ν¨μλ₯Ό λ§λ€ μ μλ€.
def log_event(*args, **kwargs):
print(f"args: {args}")
print(f"kwargs: {kwargs}")
log_event("login")
log_event("purchase", "success", user="user01", amount=32000)
μ€ν κ²°κ³Ό
args: ('login',)
kwargs: {}
args: ('purchase', 'success')
kwargs: {'user': 'user01', 'amount': 32000}
μ΄λ° ννλ μ§κΈ λ¨κ³μμλ μ‘°κΈ μΆμμ μΌλ‘ 보μ΄μ§λ§,
λμ€μ λ°μ½λ μ΄ν°λ API μ²λ¦¬, λ‘κΉ ν¨μ, λνΌ ν¨μλ₯Ό λ°°μΈ λ λ§€μ° μμ£Ό λ³΄κ² λλ€.
μΈν¨νΉμΌλ‘ ν¨μμ κ° μ λ¬νκΈ°
리μ€νΈλ λμ λ리λ₯Ό νμ΄μ ν¨μ μΈμλ‘ μ λ¬νλ 'μΈν¨νΉ(unpacking)'μ λν΄ μμ보μ.
def calculate_total(a, b, c):
return a + b + c
values = [100, 200, 300]
print(calculate_total(*values))
options = {"a": 7, "b": 8, "c": 9}
print(calculate_total(**options))
μ€ν κ²°κ³Ό
600
24
μ¬κΈ°μ ν΅μ¬μ μ΄κ²μ΄λ€.
- *리μ€νΈ : μμΉ μΈμλ‘ νμ΄μ μ λ¬
- **λμ λ리 : ν€μλ μΈμλ‘ νμ΄μ μ λ¬
μ΄ κ°λ μ ν¨μ μ μμμμ *args, **kwargs μ μ°κ²°λλ€.
μ 리νλ©΄ λ€μκ³Ό κ°λ€.
- ν¨μ μ μμμ *, ** λ μ¬λ¬ κ°μ λ°κΈ° μν λ¬Έλ²
- ν¨μ νΈμΆμμ *, ** λ λ¬ΆμΈ κ°μ νμ΄μ£ΌκΈ° μν λ¬Έλ²
λ°μ΄ν° μ λ¬ λ°©μ: κ°μ²΄ μ°Έμ‘°μ μν μ λ¬(Call by Object Reference)
Pythonμ νν "call by valueλ, call by referenceλ" κ°μ μ§λ¬ΈμΌλ‘ μ€λͺ λκ³€ νμ§λ§,
λ μ ννλ κ°μ²΄μ°Έμ‘°(call by object reference, call by sharing) λ°©μμΌλ‘ μ΄ν΄νλ νΈμ΄ μ’λ€.
ν΅μ¬μ μ΄λ λ€.
- λΆλ³ κ°μ²΄(int, str, tuple λ±)λ ν¨μ μμμ κ°μ λ€μ λμ ν΄λ μλ³Έμ΄ λ°λμ§ μλ κ²μ²λΌ 보μΈλ€.
- κ°λ³ κ°μ²΄(list, dict, set λ±)λ ν¨μ μμμ λ΄λΆλ₯Ό μμ νλ©΄ μλ³Έλ λ°λλ€.
λ¨Όμ λΆλ³ κ°μ²΄λ₯Ό 보μ.
def change_number(value):
value = 999
num = 100
change_number(num)
print(num)
μ€ν κ²°κ³Ό
100
μ΄λ²μλ κ°λ³ κ°μ²΄λ€.
def update_items(items):
items.append("streamlit")
topics = ["python", "sql"]
update_items(topics)
print(topics)
μ€ν κ²°κ³Ό
['python', 'sql', 'streamlit']
μ΄ μ°¨μ΄λ μ΄νμ mutable vs immutable, λ©λͺ¨λ¦¬ ꡬ쑰, μμ 볡μ¬/κΉμ 볡μ¬λ₯Ό λ°°μΈ λ λ§€μ° μ€μν΄μ§λ€.
ν¨μ μμμ μλ³Έμ λ°κΎΈκ³ μΆμ§ μμ λ
κ°λ³ κ°μ²΄λ₯Ό ν¨μμ λκΈΈ λλ μλ³Έμ΄ λ°λ μ μκΈ° λλ¬Έμ μ£Όμκ° νμνλ€.
μλ³Έ 보νΈκ° νμνλ€λ©΄ 볡μ¬λ³Έμ λ§λ€μ΄ μ²λ¦¬νλ λ°©λ²μ λ§μ΄ μ΄λ€.
def add_subject_safely(subjects):
copied = subjects.copy()
copied.append("docker")
return copied
original_subjects = ["python", "sql"]
new_subjects = add_subject_safely(original_subjects)
print("μλ³Έ:", original_subjects)
print("μ κ²°κ³Ό:", new_subjects)
μ€ν κ²°κ³Ό
μλ³Έ: ['python', 'sql']
μ κ²°κ³Ό: ['python', 'sql', 'docker']
μ΄μ²λΌ ν¨μκ° μ λ ₯ λ°μ΄ν°λ₯Ό λ°κΎΈλμ§, μλλ©΄ μ κ²°κ³Όλ₯Ό λ°ννλμ§μ λ°λΌ ν¨μμ μ±κ²©μ΄ λ¬λΌμ§λ€.
μ€λ¬΄μμλ μ΄λ° μ°¨μ΄κ° λ²κ·Έμ μ§κ²°λλ κ²½μ°κ° μ¦λ€κ³ νλ€.
νμ ννΈ(Type Hint)
Pythonμ λμ νμ΄ν μΈμ΄μ΄κΈ° λλ¬Έμ λ³μλ ν¨μκ° νΉμ νμ λ§ κ°μ νλ μΈμ΄λ μλλ€.
νμ§λ§ νμ ννΈλ₯Ό μ¬μ©νλ©΄ μ½λμ μλλ₯Ό λ λΆλͺ ν λλ¬λΌ μ μκ³ , μλν°λ μ μ λΆμ λꡬμ λμλ λ°μ μ μλ€.
def repeat_message(message: str, count: int) -> str:
return message * count
result = repeat_message("νμ΄μ¬", 3)
print(result)
μ€ν κ²°κ³Ό
νμ΄μ¬νμ΄μ¬νμ΄μ¬
ν¨μ μ μμμ κ°κ° νμ ννΈλ₯Ό μ 리νλ©΄ λ€μκ³Ό κ°λ€.
- λ§€κ°λ³μ λ€μ : str, : int
- ν¨μ μ μΈ λ€μ -> str
κΈ°μ΅ν΄μΌ ν μ μ νμ ννΈλ κ°μ΄λμΌ λΏ, νμ΄μ¬ μΈν°ν리ν°κ° κ°μ νμ§λ μλλ€λ μ μ΄λ€.
μλ₯Ό λ€μ΄ μλ μ½λλ ννΈμ λ€λ₯΄κ² κ°μ μ λ¬νμ§λ§, λ¬Έλ² μ체λ‘λ μ€νλ μ μλ€.
def repeat_message(message: str, count: int) -> str:
return message * count
print(repeat_message(10, 2))
μ€ν κ²°κ³Ό
20
μ μ΄λ° κ²°κ³Όκ° λμ¬κΉ?
10 * 2 λ νμ΄μ¬μμ κ°λ₯ν μ°μ°μ΄κΈ° λλ¬Έμ΄λ€.
μ¦, νμ ννΈλ λ¬Έμλ₯Ό μ½κΈ° μ½κ² λ§λ€κ³ λꡬμ λμμ λ°κ² ν΄μ£Όμ§λ§, κ·Έ μμ²΄κ° λ°νμ κ°μ κ·μΉμ μλλ€.
볡μ‘ν μλ£νμλ μΈ μ μλ νμ ννΈ
ν¨μλΏ μλλΌ λ³μμλ νμ ννΈλ₯Ό μΈ μμκ³ , 리μ€νΈλ λμ λ리 κ°μ λ³΅ν© μλ£νλ ννν μ μλ€.
scores: list[int] = [85, 90, 100]
user_info: dict[str, str | int] = {"name": "μ² μ", "age": 36}
print(scores)
print(user_info)
μ€ν κ²°κ³Ό
[85, 90, 100]
{'name': 'μ² μ', 'age': 36}
λ§€κ°λ³μ μμ±μ μ€μμ±
Python ν¨μμ λ§€κ°λ³μλ λ³΄ν΅ λ€μ μμλ₯Ό λ§μ΄ λ°λ₯Έλ€.
μ€κΈ λ¨κ³λ‘ κ°μλ‘ "μ΄λ€ κ°μ μμΉλ‘λ§ λ°κ³ , μ΄λ€ κ°μ μ΄λ¦μΌλ‘λ§ λ°κ²" μ€κ³νλ κ²μ΄ μ€μν΄μ§λ€.
μμ§ λ무 κΉκ² λ€μ΄κ° νμλ μμ§λ§, μλ μμ μ λλ μμλλ©΄ μ’λ€.
def create_account(user_id, role="viewer", *, active=True):
print(f"user_id={user_id}, role={role}, active={active}")
create_account("user01")
create_account("user02", role="editor", active=False)
μ€ν κ²°κ³Ό
user_id=user01, role=viewer, active=True
user_id=user02, role=editor, active=False
μ¬κΈ°μ * λ€μ μ€λ active λ ν€μλλ‘λ§ μ λ¬ν΄μΌ νλ λ§€κ°λ³μλ€.
μ΄ λ¬Έλ²μ λΌμ΄λΈλ¬λ¦¬ ν¨μλ νλ μμν¬ μ½λμμλ μμ£Ό 보μΈλ€.
μ€λ¬΄ κ°κ°μΌλ‘ 보λ ν¨μ μ€κ³
μ’μ ν¨μλ λ¨μν "λμνλ ν¨μ"κ° μλλΌ, μν μ΄ λΆλͺ ν ν¨μλ€.
μλ₯Ό λ€μ΄ μλμ²λΌ μμ±νλ©΄ μλ―Έκ° λΉκ΅μ λΆλͺ νλ€.
def calculate_discounted_price(price, discount_rate=0.1):
return price * (1 - discount_rate)
final_price = calculate_discounted_price(50000)
vip_price = calculate_discounted_price(50000, 0.2)
print(final_price)
print(vip_price)
μ€ν κ²°κ³Ό
45000.0
40000.0
μ€μνκΈ° μ¬μ΄ ν¬μΈνΈ
첫째, λ§€κ°λ³μμ μΈμλ₯Ό νΌλνκΈ° μ½λ€.
ν¨μ μ μ μͺ½μ μλ μ΄λ¦μ λ§€κ°λ³μ(parameter), νΈμΆ μ μ€μ λ‘ μ λ¬νλ κ°μ μΈμ(argument)λ€.
λμ§Έ, print() μ return μ λ€λ₯΄λ€.
print() λ 보μ¬μ£Όλ κ²μ΄κ³ , return μ λλ €μ£Όλ κ²μ΄λ€.
νλ©΄μ μΆλ ₯λ§ λκ³ λ³μμ μ μ₯λμ§ μλλ€λ©΄ returnμ λμ³€μ κ°λ₯μ±μ΄ ν¬λ€.
μ μ§Έ, κΈ°λ³Έκ° λ§€κ°λ³μλ μ€λ₯Έμͺ½μ μμΌ νλ€.
ν¨μ μ μ μμλ₯Ό μλͺ» μ°λ©΄ λ¬Έλ² μ€λ₯κ° λλ€.
λ·μ§Έ, κ°λ³ κ°μ²΄λ₯Ό ν¨μμ μ λ¬νλ©΄ μλ³Έμ΄ λ°λ μ μλ€.
νΉν 리μ€νΈ, λμ λ리, μΈνΈλ ν¨μ λ΄λΆ μμ μ΄ μλ³Έμ λ°μλ μ μμΌλ μ£Όμν΄μΌ νλ€.
λ€μ―μ§Έ, *args λ νν, **kwargs λ λμ λλ¦¬λ‘ λ°λλ€.
μ μμ νΈμΆμμμ *, ** μν λ ꡬλΆν΄μΌ νλ€.
μ¬μ―μ§Έ, νμ ννΈλ κ°μ κ° μλλΌ μλ΄λ€.
ννΈλ₯Ό μ μλ€κ³ μλμΌλ‘ νμ μ€λ₯κ° λ§νλ κ²μ μλλ€.
λ§λ¬΄λ¦¬
ν¨μλ νμ΄μ¬ λ¬Έλ² μ€μμλ μ λ§ μ€μν μ νμ μ΄λ€.
쑰건문과 λ°λ³΅λ¬ΈκΉμ§κ° "μ½λλ₯Ό μμλλ‘ μμ±νλ λ¨κ³"μλ€λ©΄, ν¨μλΆν°λ "κΈ°λ₯μ λλκ³ μ¬μ¬μ©νλ λ¨κ³"λ‘ λμ΄κ°λ€κ³ λ³Ό μ μλ€.
μ΄λ² κΈμμλ ν¨μμ κ°μ₯ κΈ°λ³Έμ μΈ μ μμ νΈμΆμμ μμν΄μ, λ§€κ°λ³μμ μΈμ, μμΉ μΈμμ ν€μλ μΈμ, κΈ°λ³Έκ°, λ°νκ°, μ¬λ¬ κ° λ°ν, κ°λ³ μΈμ, μΈν¨νΉ, κ°μ²΄ μ°Έμ‘° λ°©μ, νμ ννΈκΉμ§ ν¨κ» μ 리νλ€.
νΉν ν¨μλ λ¬Έλ²μ μΈμ°λ κ²λ³΄λ€ μ λ ₯μ 무μμ΄κ³ , ν¨μκ° νλ μΌμ 무μμ΄λ©°, κ²°κ³Όλ₯Ό μ΄λ»κ² λλ €μ£Όλκ°λ₯Ό μ€μ¬μΌλ‘ μ΄ν΄νλ κ²μ΄ μ€μνλ€.
μ΄ νλ¦μ μ΅μν΄μ§λ©΄ λ€μμ λ€λ£° ν¨μν νλ‘κ·Έλλ°, iterator/generator, ν΄λμ€ λ©μλ, λ°μ½λ μ΄ν° κ°μ μ£Όμ λ ν¨μ¬ μμνκ² λ°μλ€μΌ μ μλ€.
'Python & SQL > Python Basics' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| 10. [νμ΄μ¬] mutable vs immutable (0) | 2026.03.07 |
|---|---|
| 9. [νμ΄μ¬] iteratorμ generator (0) | 2026.03.07 |
| 6. [νμ΄μ¬] setκ³Ό frozenset (0) | 2026.03.07 |
| 5. [νμ΄μ¬] λμ λ리 (0) | 2026.03.06 |
| 4. [νμ΄μ¬] ννκ³Ό ν¨νΉ/μΈν¨νΉ (0) | 2026.03.06 |