| CARVIEW |
Python 3.15?ɒlj??????lazy import?Ɠ???\?L?ł̃A???p?b?L???O?ɂ??Ē??ׂĂ݂??FHP???킳???̌????m?[?g
Python 3.15?̐V?@?\?Ƃ??Ēlj????ꂽ?u???W???[???̓ǂݍ??݂?K?v?Ȏ??_?܂Œx??????lazy import?v?Ɠ?d???[?v?̍\??????????\?L????蒼???I?ɏ?????悤?ɂȂ?u????\?L?ł̃A???p?b?L???O?v???ǂ?Ȃ??̂?????????ƃR?[?h???????Ē??ׂĂ݂܂????B
???̋L???͉??????ł??B????o?^?i?????j????ƑS?Ă????????????܂??B
lazy import
?@Python 3.15?ł?lazy import?iPEP 810?j??????????܂??B????́u???W???[?????C???|?[?g????ۂɁA?ulazy?v?ƃ}?[?N???t???Ă?????A???̃??W???[???????ۂɎg???܂ł̓??[?h?i?Ɗ֘A???鏉?????????j???s???Ȃ??悤?ɂȂ?v?Ƃ??????̂ł??B
?@??K?͂?Python?A?v???͑????̃p?b?P?[?W??W???[???Ɉˑ????Ă??āA???????A?v???̋N?????ɓǂݍ??ނ??Ƃ??悭????܂??B???ꂪ?A?v???̋N?????Ԃɉe????^???܂??B
?@?Ⴆ?APython???̃R?}???h???C???c?[???Ńw???v??\?????????????Ȃ̂ɁA?upython -m ... --help?v?̂悤?ɂ??āA??????N??????ƈˑ????郂?W???[????ǂݍ??ނ̂ɂ???Ȃ?̎??Ԃ???????????ŁA?w???v?????R???\?[???ɕ\?????ďI???B?w???v?̓??e???m?F?ł????̂ŁA???x?͂??̃c?[???ɃR?}???h???w?肵?Ď??s????ƁA?܂??ˑ????郂?W???[???̓ǂݍ??݂??s????Ȃ?Ă??Ƃ??l?????܂??B
?@???ۂɂ͎g???Ȃ????W???[???ł??v???O?????̋N?????ɑS?ēǂݍ??ނ̂ł͂Ȃ??A?K?v?ȃ??W???[?????I???f?}???h?œǂݍ??ނ悤?ɂ??܂??傤?Ƃ????̂??Alazy import???ڎw???Ƃ??낾?Ƃ?????ł??傤?B
?@import?????v???O??????W???[???̐擪?ɒu???̂ł͂Ȃ??A?????ɒu??????Aimportlib???W???[?????g?????肷?邱?ƂŁA?I???f?}???h?ɃC???|?[?g??u?????Ƃ??\?ł????A???W???[???Ǘ??Ƃ????Ӗ??ł́A?K?v?Ƃ?????̂??v???O?????̂????炱????ɕ??U???ċL?q????邱?ƂɂȂ?A???܂??낵???͂Ȃ??Ƃ????܂??B????ɑ??āAlazy import?Ȃ?u?K?v?ȃ??W???[???̓v???O??????W???[???̐擪?ɒu?????A???̃??[?h?͖{???ɕK?v?ȂƂ??܂Œx???ł???v?Ƃ????????b?g??????Ƃ????킯?ł??B
?@???????͊ȒP??import???܂???from import???̐擪?Ɂulazy?v?ƕt???邾???ł??B?ȉ??ɗ???????܂??ijson???W???[????pathlib???W???[???ɓ??ɈӖ??͂???܂???B?uWhat's new in Python 3.15?v?ŗ?Ɏg???Ă??????炭?炢?̗??R?ł??j?B
?@?Ƃ????Ă??A????ł?lazy import?ł??Ă???̂??ǂ??????悭??????܂???B?Ƃ????킯?ŁA????2??.py?t?@?C????????Ă݂܂????B
# moda.py
def func_a():
print('func a')
print('func_a defined')
# modb.py
def func_b():
print('func b')
print('func_b defined')
?@moda.py??func_a?????`???čŌ?Ɂufunc_a defined?v?ƕ\?????܂??Bmodb.py?͓??l?ɁAfunc_b?????`???čŌ?Ɂufunc_b defined?v?ƕ\?????܂??B?ʏ??import??lazy import?ł????̋??????ǂ??ς?邩???m?F???Ă݂܂??傤?B
?@?ȉ??́APython 3.14?Łuimport moda?v?ufrom modb import func_b?v?????s?????Ƃ???ł??B
?@????͂????ʂ?̃C???|?[?g?̋????ł??B?ł́APython 3.15??lazy import???????Ă݂܂??B
?@?ulazy import moda?v?ulazy from modb import func_b?v?????s???????_?ł́A?R???\?[???Ƀ??b?Z?[?W???\??????Ă??܂???B???ꂪ???W???[???̃??[?h???x??????Ă??邱?Ƃ????????̂ł??B?????āA?umoda.func_a()?v?ufunc_b()?v??2?̃??W???[?????g???????_?ł???炪???[?h????i?g?b?v???x???̃R?[?h?????s????āj?R???\?[???ɏo?͂??s???A?????func_a????func_b?????Ăяo????Ċ?????̃??b?Z?[?W???\?????ꂽ?Ƃ????킯?ł??B
?@?Ȃ??Alazy import???O???[?o???Ɏw??????i?uimport moda?v?ufrom modb import func_b?v?Ə??????ꍇ?ł?lazy import???s????悤?ɂ???j???Ƃ??\?ł??B????ɂ?Python?????n?̋N?????Ɂu-X lazy_imports=all?v?ƃI?v?V???????w?肷?邩?A???ϐ?PYTHON_LAZY_IMPORTS?̒l??all?ɂ??āAPython?????n???N?????܂??B
?@?Ȃ??A?u-X lazy_imports?v?I?v?V?????Ɗ??ϐ?PYTHON_LAZY_IMPORTS?ɂ͈ȉ???3???w??ł??܂??B
- all?F?f?t?H???g??lazy import?Ƃ???
- none?Flazy import????????ilazy???w?肵?Ă??C???|?[?g?͒x??????Ȃ??j
- normal?Flazy??t?????Ă???import????lazy import???āAlazy???Ȃ?import???ł͂????Ƀ??W???[???????[?h?????
?@?O???[?o???Ȏw????all???w?肷??ƁA?ulazy?v?̗L???Ɋւ?炸?A?S?Ẵ??W???[???̃C???|?[?g???x??????܂??B????́uPython 3.14?܂ł̃R?[?h?????̂܂?Python 3.15?Ŏ??s???邯??ǁA???W???[???̃??[?h?͒x?????????v?Ƃ????ꍇ?ɑ傢?ɖ𗧂??Ă??ꂻ???ł??ˁB
?@????ɂ??Ă???????Ǝ????Ă????܂??傤?B
?u-X lazy_imports=all?v???w?肵???̂Łuimport moda?v?ufrom modb import func_b?v?ł????W???[???̃??[?h???x??????Ă????@?u-X lazy_imports=...?v????ъ??ϐ?PYTHON_LAZY_IMPORTS?ōs?????ݒ??sys???W???[????set_lazy_imports???ŏ㏑???ł??܂??B?܂??Asys.get_lazy_imports???Ō??݂̐ݒ???擾?\?ł??B
?@???̗?ł́A?u-X lazy_imports=all?v?t????REPL???N?????Ă??܂??B???̂??߁Asys.get_lazy_imports????'all'??Ԃ??܂??B??????sys.set_lazy_imports('normal')???Ăяo???Ă???̂ŁAlazy?t????import???͒x??????A?????łȂ???Βx??????Ȃ??悤?ɂȂ?܂??B???̌?́uimport moda?v?̓??W???[???̃??[?h???????ɍs???āA?ulazy from modb import func_b?v??func_b?????Ăяo???܂Ń??[?h???x??????Ă??邱?Ƃ??m?F???Ă????????B
?@?Ȃ??A?C???|?[?g???s???ۂɃ??W???[???P?ʂŃ??[?h??x?????邩?ǂ??????w?肷?邱?Ƃ??\?ł??B????ɂ?sys.set_lazy_imports_filter???ɁA???W???[???̃??[?h??x?????邩?ǂ????肷??t?B???^?[????n???܂??B
?@????̓??W???[?????C???|?[?g???????_?ŁA???炩?̏??????J?n?????i?Ⴆ?A???O?ⓝ?v???̋L?^?Ȃǁj???Ƃ?O??Ƃ????u????p?̂???v???W???[???????ɂ͑??݂??Ă??邩??ł??B??ŏЉ???O???[?o???w???őS?Ẵ??W???[???̃??[?h??x?????Ă???ۂɁA???????????W???[???̃??[?h?܂Œx?????Ă??܂??ƁA?z??Ƃ͈قȂ?U?镑???????????Ă??܂??܂??i?Ⴆ?A???v?????L?^???Ă???͂????A???W???[???̓ǂݍ??݂??x?????ꂽ?̂ŁA?????L?^????Ă??炸?A???v???̎擾?????悤?Ƃ??????_?ł???ƃ??W???[???????[?h???ꂽ?獢??܂???ˁj?B???????????Ƃ?????邽?߂ɁA???W???[???P?ʂł̃??[?h?̒x???̉ۂ??w??ł???悤?ɂȂ??Ă?????̂Ǝv???܂??B
?@?ȉ??ɗ???????܂??B
def myfilter(importing, imported, fromlist):
print(f'{importing}, {imported}, {fromlist}')
if imported == 'moda':
return True
for name in fromlist:
if name == 'func_b':
return False
return True
import sys
sys.set_lazy_imports_filter(myfilter)
?@?t?B???^?[???ɂ̓C???|?[?g???Ă??郂?W???[???A?C???|?[?g????悤?Ƃ??Ă??郂?W???[???Afrom import???Ŏw?肳?ꂽ???O??v?f?Ƃ???^?v?????n?????̂ŁA?????̏?????ɂ??̃??W???[???̃??[?h??x?????邩?ǂ????f???A?x??????Ȃ?True???A?x???????ɂ??????[?h????Ȃ?False??Ԃ??悤?ɂ??܂??B
?@???̗?ł́A?C???|?[?g????悤?Ƃ??Ă??郂?W???[????'moda'?Ȃ?x???A?ufrom import?v??'func_b'???C???|?[?g???悤?Ƃ??Ă???̂ł???A?????Ƀ??[?h????悤?ɂȂ??Ă??܂??i2?̏???????Ɩ????Ȃ??̂͒x???j?B?????āA???̊???sys.set_lazy_imports_filter???ɓn?????ƂŁA?C???|?[?g???Ƀt?B???^?[?????Ăяo?????悤?ɂȂ?܂??B
?@?ȉ??͎??s??ł??B
?@?M?҂????????Ƃ???ł́A?u-X lazy_imports=all?v?Ȃǂ?lazy import???f?t?H???g?ŗL???łȂ??Ɓulazy?v?Ȃ???import???????s????ƁA?t?B???^?[?????Ăяo????Ȃ??悤?ɂȂ??Ă??܂????B???̕ӂ̋????ɂ͏??????ӂ??K?v????????܂???B
?t?B???^?[????ݒ肵?Ă??A?O???[?o???w???Ńf?t?H???g?x???ɂȂ??Ă??Ȃ??ƁA?V???v???ȁuimport ...?v?ł̓t?B???^?[?????Ăяo????Ȃ??@?܂??A??قǂ́u-X lazy_imports=all?v???w?肷?邩?A???ϐ?PYTHON_LAZY_IMPORTS?̒l??all?ɂ??邱?ƂŃf?t?H???g?Ń??W???[???̃??[?h??x??????悤?ɂł???Ƃ????܂??????A???????Ƃ?__lazy_modules__?Ƀ??[?h??x?????????W???[?????????@??????܂??B
?@??????̕??@?ł??A__lazy_modules__?ɑΏۂ̃??W???[???????ύX????????K?v?͂???܂????A?]???̃R?[?h??Python 3.15?Ŏ??s????ۂ?lazy import???s????悤?ɂȂ?܂??B
????\?L?ł̃A???p?b?L???O
?@????\?L?ł̃A???p?b?L???O?ɂ??ẮuPython 3.15 ??1???????[?X???ꂽ?̂ŐV?@?\??ύX?_???܂Ƃ߂Ă݂??v?ňȉ??̂悤?ȗ???????܂????B
mylist = [[0, 1], [2, 3]]
# for???ŏ?????
flatten = []
for items in mylist:
for item in items:
flatten.append(item)
print(flatten) # [0, 1, 2, 3]
# ????\?L???g????
flatten = [item for items in mylist for item in items]
print(flatten) # [0, 1, 2, 3]
?@???̃R?[?h??Python 3.15?ł͎??̂悤?ɏ?????悤?ɂȂ?܂????B
# unpacking comprehension????
flatten = [*items for items in mylist]
print(flatten) # [0, 1, 2, 3]
?@??d???[?v?????\?L?̃l?X?g???g???Ă????Ƃ??낪?A????\?L?ł̃A???p?b?L???O???g?????ƂŁA??蒼???I?ȋL?q???\?ɂȂ????Ƃ??????Ƃł??B????\?L?Ȃ̂ŁA???X?g?łȂ??ďW???⎫???ł????܂??܂???B???邢?̓W?F?l???[?^?[???ł??悢?ł??傤?B?ȉ??ɗ???????܂??B
mylists = [[0, 1], [2, 3]]
mysets = [{0, 1}, {1, 2}]
mydicts = [{'key0': 'value0', 'key1': 'value1'}, {'key1': 'value2'}]
result_lists = [*item for item in mylists] # ???X?g????\?L?ł̃A???p?b?L???O
result_set = {*item for item in mylists} # ?W??????\?L?ł̃A???p?b?L???O
result_dict = {**d for d in mydicts} # ????????\?L?ł̃A???p?b?L???O
result_gen = (*it for it in mylists) # ?W?F?l???[?^?[???ł̃A???p?b?L???O
?@?A???p?b?L???O?ɂ͑????̓ǎ҂ɂ͂??????Ȃ??݂́u*?v??u**?v???g???܂??B????\?L?ł̃A???p?b?L???O???g?????ƂŁA?R???e?i?I?u?W?F?N?g??v?f?Ƃ??郊?X?g?̃t???b?g???i???????j????蒼???I?ɍs????Ƃ????킯?ł??B
?@?u??????Ƒ҂??āI?v?ƂȂ?l?????邩??????܂???B?Ƃ????̂́A?]???̓???\?L??for???[?v?ɏ?????????????ł??B?ȉ??̓??X?g????\?L?̗?ł??B
mylist = [0, 1, 2, 3]
# ????\?L
result = [item * 2 for item in mylist]
# for??
result = []
for item in mylist:
result.append(item * 2)
?@?ł́A????\?L?ł̃A???p?b?L???O???g?????R?[?h?͂ǂ̂悤?ɂ??ď?????????̂ł??傤???B?Ƃ????Ă??A???X?g????\?L?ł?append???\?b?h?ł͂Ȃ??Aextend???\?b?h???g???????ł??Bextend???\?b?h???āA?????Ƃ??ė^?????????\?I?u?W?F?N?g??W?J???āA???X?g?̗v?f?Ƃ??Ēlj???????̂ł?????ˁB
mylists = [[0, 1], [2, 3]]
# ????\?L?ł̃A???p?b?L???O
result0 = [*item for item in mylists]
print(result0) # [0, 1, 2, 3]
# ?Ή?????for??
result1 = []
for item in mylists:
result1.extend(item)
print(result1) # [0, 1, 2, 3]
print(result0 == result1) # True
?@???Ⴀ?A?W???Ǝ????͂ǂ??Ȃ?ł??傤?B???̏ꍇ??update???\?b?h?ɂ??X?V???ƍl?????OK?ł??B?ȉ??ɗ???????܂??B2?̏W???͗v?f??????Ă??邱?ƁA2?̎????ł̓L?[???d?????Ă???_?ɒ??ӂ??Ă????????B
mysets = [{0, 1}, {1, 2}]
mydicts = [{'key0': 'value0', 'key1': 'value1'}, {'key1': 'value2'}]
# ????\?L?ł̃A???p?b?L???O
result_set0 = {*s for s in mysets}
print(result_set0) # {0, 1, 2}
result_dict0 = {**d for d in mydicts}
print(result_dict0) # {'key0': 'value0', 'key1': 'value2'}
# ?Ή?????for??
result_set1 = set()
for s in mysets:
result_set1.update(s)
result_dict1 = {}
for d in mydicts:
result_dict1.update(d)
print(result_set0 == result_set1) # True
print(result_dict0 == result_dict1) # True
?@?W?F?l???[?^?[???ł?yield from???ŗv?f??yield????̂ɑ??????܂??i?R?[?h?͏ȗ??j?B
?@?W???ɂ??Ă͂??̓???????d??????v?f?͂Ȃ??Ȃ邱?ƁA?????ɂ??Ă͓????L?[?????????ꍇ?ɂ͌?̗v?f?Œl???㏑??????邱?Ƃɂ͒??ӂ??Ă????????i?Ƃ????Ă??A?W???Ǝ????̒ʏ?̐U?镑???ł͂???܂??j?B
?@????̓t???b?g???i???????j?̗Ⴕ?????グ???Ă??܂??A???ɂ????낢??Ɖ\???????肻???ł??B?@?????A???????????p?@?ɂ??Ă????Љ?邱?Ƃɂ??܂??傤?B????͂?????ƒ????Ȃ????̂ŁA????܂łƂ??Ă????܂??B
?@?u????\?L?ł̃A???p?b?L???O?Ƃ??Ӗ????????I?v?Ǝv?????????Aextend???\?b?h??update???\?b?h???g???ď????????邱?Ƃ𗝉?????A?u???[?A???????????̂ˁI?v?ƂȂ?̂ł͂Ȃ??ł??傤???B?{?N?͂????ł????B?ŏ??Ɍ????Ƃ??ɂ́u?܁[?A???????ł͂Ȃ?????ǁc?c?v?ƂȂ??Ă????̂???????ƃX?b?L?????܂????B?F???????????ƃX?b?L?????Ă??ꂽ?炢???ȁB
Copyright© Digital Advantage Corp. All Rights Reserved.
?A?C?e?B???f?B?A????̂??m?点
??IT eBook
?ҏW??????̂??m?点
RSS?ɂ???
?A?C?e?B???f?B?AID?ɂ???
???[???}?K?W???o?^
??IT?̃??[???}?K?W???́A ???????A???ׂĖ????ł??B???Ѓ??[???}?K?W???????w?ǂ????????B
ITmedia?̓A?C?e?B???f?B?A??????Ђ̓o?^???W?ł??B
???f?B?A?ꗗ | ????SNS | ?L???ē? | ???₢???킹 | ?v???C?o?V?[?|???V?[ | RSS | ?^?c??? | ?̗p??? | ??????












