Python функцийн тодорхойлолтод өгөгдмөл аргументыг тохируулах нь функц дуудлагын үед аргументыг орхигдуулсан тохиолдолд өгөгдмөл утгыг ашиглахад хүргэдэг.
Дараах дэлгэрэнгүй мэдээллийг доор тайлбарлав.
- Өгөгдмөл аргументуудыг тохируулах
- Өгөгдмөл аргументуудын байршлын хязгаарлалт
- Жагсаалт эсвэл толь бичгийг анхдагч утга болгон ашиглахыг анхаарна уу
Өгөгдмөл аргументуудыг тохируулах
Хэрэв аргументын нэр = функцийн тодорхойлолтод анхдагч утга байвал харгалзах аргументыг орхигдуулсан үед өгөгдмөл утгыг ашиглана.
def func_default(arg1, arg2='default_x', arg3='default_y'): print(arg1) print(arg2) print(arg3) func_default('a') # a # default_x # default_y func_default('a', 'b') # a # b # default_y func_default('a', arg3='c') # a # default_x # c
Өгөгдмөл аргументуудын байршлын хязгаарлалт
Функцийг тодорхойлохдоо ердийн аргументын өмнө (өгөгдмөл утгыг заагаагүй аргумент) өгөгдмөл аргументыг байрлуулах нь алдаа гарна.SyntaxError
# def func_default_error(arg2='default_a', arg3='default_b', arg1): # print(arg1) # print(arg2) # SyntaxError: non-default argument follows default argument
Жагсаалт эсвэл толь бичгийг анхдагч утга болгон ашиглахыг анхаарна уу
Жагсаалт эсвэл толь бичиг гэх мэт шинэчлэгдэх боломжтой (хувиргах) объектыг өгөгдмөл утгаар зааж өгсөн бол функц тодорхойлогдсон үед тухайн объект үүснэ. Дараа нь функцийг холбогдох аргументгүйгээр дуудах үед ижил объектыг ашиглана.
Функцийн тодорхойлолтыг гүйцэтгэх үед үндсэн аргументын утгуудыг зүүнээс баруун тийш үнэлдэг. Энэ нь функцийг тодорхойлсон үед анхдагч аргументын илэрхийллийг зөвхөн нэг удаа үнэлж, дуудлага бүрт ижил “тооцоолсон” утгыг ашигладаг гэсэн үг юм.
8.7. Function definitions — Python 3.10.2 Documentation
Жишээлбэл, жагсаалт эсвэл толь бичгийг өгөгдмөл аргумент болгон авч, түүнд элемент нэмдэг функц тодорхойлогдсон бөгөөд энэ аргументгүйгээр олон удаа дуудагддаг бол элементүүдийг нэг объект руу дахин дахин нэмнэ.
Жагсаалтын жишээ.
def func_default_list(l=[0, 1, 2], v=3): l.append(v) print(l) func_default_list([0, 0, 0], 100) # [0, 0, 0, 100] func_default_list() # [0, 1, 2, 3] func_default_list() # [0, 1, 2, 3, 3] func_default_list() # [0, 1, 2, 3, 3, 3]
Толь бичгийн жишээ.
def func_default_dict(d={'default': 0}, k='new', v=100): d[k] = v print(d) func_default_dict() # {'default': 0, 'new': 100} func_default_dict(k='new2', v=200) # {'default': 0, 'new': 100, 'new2': 200}
Функцийг дуудах бүрт шинэ объект үүсдэг.
def func_default_list_none(l=None, v=3): if l is None: l = [0, 1, 2] l.append(v) print(l) func_default_list_none() # [0, 1, 2, 3] func_default_list_none() # [0, 1, 2, 3]