1

mathspp.com · 2d · discuss

This article explains the 5 best new features of Python 3.15 with clear examples and explanations. Python 3.15 has been published and it packs plenty of new features and improvements over Python 3.14. This article explores the five most exciting new features of Python 3.15: Lazy imports New built-in frozendict New built-in sentinel Unpacking inside comprehensions Tachyon, a new sampling profiler You'll get the elevator pitch of each feature and you'll see a couple of examples of their usage. By the end of this article you'll have a clear picture of some of the new cool features that Python 3.15 brings to the table and you'll be excited to try them out. 15 days of Python 3.15 To celebrate the release of Python 3.15, over the next 15 business days I'll be writing about a new 3.15 feature every day. Explained clearly and with examples so you don't have to sift through the changelog. Subscribe to receive this free email series: (function() { window.GravRecaptchaInitializers = window.GravRecaptchaInitializers || {}; function addHiddenInput(form, name, value) { const existing = form.querySelector('input[type="hidden"][name="' + name + '"]'); if (existing) { existing.value = value; } else { const input = document.createElement('input'); input.setAttribute('type', 'hidden'); input.setAttribute('name', name); input.setAttribute('value', value); form.insertBefore(input, form.firstChild); } } function initRecaptchaV3(container) { const formId = container.dataset.formId; const siteKey = container.dataset.sitekey; const action = container.dataset.action; const form = document.getElementById(formId); if (!form) return; console.log(`Initializing reCAPTCHA v3 for form ${formId}`); const submitHandler = function(event) { event.preventDefault(); console.log(`reCAPTCHA v3 intercepting submit for form ${formId}`); grecaptcha.ready(function() { grecaptcha.execute(siteKey, { action: action }) .then(function(token) { console.log(`reCAPTCHA v3 token received for form ${formId}`); addHiddenInput(form, 'data[token]', token); addHiddenInput(form, 'data[action]', action); form.removeEventListener('submit', submitHandler); if (form.dataset.xhrEnabled === 'true' && window.GravFormXHR && typeof window.GravFormXHR.submit === 'function') { window.GravFormXHR.submit(form); } else { if (typeof form.requestSubmit === 'function') { form.requestSubmit(); } else { form.submit(); } } setTimeout(() => { const currentForm = document.getElementById(formId); if (currentForm && !currentForm.dataset.recaptchaListenerAttached) { currentForm.addEventListener('submit', submitHandler); currentForm.dataset.recaptchaListenerAttached = 'true'; } else if (currentForm) { delete currentForm.dataset.recaptchaListenerAttached; } }, 0); }); }); }; delete form.dataset.recaptchaListenerAttached; if (!form.dataset.recaptchaListenerAttached) { form.addEventListener('submit', submitHandler); form.dataset.recaptchaListenerAttached = 'true'; } } // Register the initializer function const initializerFunctionName = 'initRecaptcha_enroll'; window.GravRecaptchaInitializers[initializerFunctionName] = function() { const container = document.querySelector('[data-form-id="enroll"][data-captcha-provider="recaptcha"]'); if (!container) return; initRecaptchaV3(container); }; // Initial call if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', window.GravRecaptchaInitializers[initializerFunctionName]); } else { setTimeout(window.GravRecaptchaInitializers[initializerFunctionName], 0); } })(); Enroll for free 🐍🚀 If you want, you can also check the schedule of the upcoming emails. Lazy imports Explicit lazy imports, introduced in PEP 810, introduce the new keyword lazy so that you can mark an import as lazy. Lazy imports don't run the module you're importing until the imported name is needed. This feature is very useful if you have applications that have a slow startup time because they import heavy modules. For example, you can speed up the startup time of a CLI by lazy importing the dependencies of the CLI or the startup time of a development server that doesn't need to frontload every single dependency while you're debugging. A lazy import starts with the...