We stand with Ukraine to help keep people safe. Join us

Object-oriented programming language.

4.5
Based on 11 user ratesRead reviews & comments
Free
Absolutely Free

Python overview

Python is an extremely versatile, dynamic, interpreted, and general-purpose language. It is one of the most popular and in-demand languages today. Python supports multiple programming techniques, including procedural, object-oriented, and functional programming.

Features:
  • Python is an excellent option for beginner-level developers.
  • Python programming on Mac is easy. Since it is based on a high-level language, you don't need to remember the system architecture, nor to manage the memory.
  • Python for Mac is developer-friendly. It uses an elegant and simple syntax that is easy-to-code and easy-to-read.
  • You can enjoy smooth programming on your Macbook with a Python's interactive mode that allows you to easily test short snippets of code and interact with the interpreter directly to write your programs.
  • Python is a dynamically typed language. It means that you don't need to declare the type of variable because it is decided at run time, not in advance.

What’s new in version 3.12.2

Updated on Feb 07 2024

Security
  • gh-113659: Skip .pth files with names starting with a dot or hidden file attribute.
Core and Builtins
  • gh-114887: Changed socket type validation in create_datagram_endpoint() to accept all non-stream sockets. This fixes a regression in compatibility with raw sockets.
  • gh-114388: Fix a RuntimeWarning emitted when assign an integer-like value that is not an instance of int to an attribute that corresponds to a C struct member of type T_UINT and T_ULONG. Fix a double RuntimeWarning emitted when assign a negative integer value to an attribute that corresponds to a C struct member of type T_UINT.
  • gh-113703: Fix a regression in the codeop module that was causing it to incorrectly identify incomplete f-strings. Patch by Pablo Galindo
  • gh-89811: Check for a valid tp_version_tag before performing bytecode specializations that rely on this value being usable.
  • gh-113602: Fix an error that was causing the parser to try to overwrite existing errors and crashing in the process. Patch by Pablo Galindo
  • gh-113297: Fix segfault in the compiler on with statement with 19 context managers.
  • gh-106905: Use per AST-parser state rather than global state to track recursion depth within the AST parser to prevent potential race condition due to simultaneous parsing.
  • The issue primarily showed up in 3.11 by multithreaded users of ast.parse(). In 3.12 a change to when garbage collection can be triggered prevented the race condition from occurring.
  • gh-112943: Correctly compute end column offsets for multiline tokens in the tokenize module. Patch by Pablo Galindo
  • gh-112716: Fix SystemError in the import statement and in __reduce__() methods of builtin types when __builtins__ is not a dict.
  • gh-94606: Fix UnicodeEncodeError when email.message.get_payload() reads a message with a Unicode surrogate character and the message content is not well-formed for surrogateescape encoding. Patch by Sidney Markowitz.
Library
  • gh-114965: Update bundled pip to 24.0
  • gh-114959: tarfile no longer ignores errors when trying to extract a directory on top of a file.
  • gh-109475: Fix support of explicit option value “–” in argparse (e.g. --option=--).
  • gh-110190: Fix ctypes structs with array on Windows ARM64 platform by setting MAX_STRUCT_SIZE to 32 in stgdict. Patch by Diego Russo
  • gh-113280: Fix a leak of open socket in rare cases when error occurred in ssl.SSLSocket creation.
  • gh-77749: email.policy.EmailPolicy.fold() now always encodes non-ASCII characters in headers if utf8 is false.
  • gh-114492: Make the result of termios.tcgetattr() reproducible on Alpine Linux. Previously it could leave a random garbage in some fields.
  • gh-113267: Revert changes in gh-106584 which made calls of TestResult methods startTest() and stopTest() unbalanced.
  • gh-75128: Ignore an OSError in asyncio.BaseEventLoop.create_server() when IPv6 is available but the interface cannot actually support it.
  • gh-114257: Dismiss the FileNotFound error in ctypes.util.find_library() and just return None on Linux.
  • gh-114328: The tty.setcbreak() and new tty.cfmakecbreak() no longer clears the terminal input ICRLF flag. This fixes a regression introduced in 3.12 that no longer matched how OSes define cbreak mode in their stty(1) manual pages.
  • gh-101438: Avoid reference cycle in ElementTree.iterparse. The iterator returned by ElementTree.iterparse may hold on to a file descriptor. The reference cycle prevented prompt clean-up of the file descriptor if the returned iterator was not exhausted.
  • gh-104522: OSError raised when run a subprocess now only has filename attribute set to cwd if the error was caused by a failed attempt to change the current directory.
  • gh-114149: Enum: correctly handle tuple subclasses in custom __new__.
  • gh-109534: Fix a reference leak in asyncio.selector_events.BaseSelectorEventLoop when SSL handshakes fail. Patch contributed by Jamie Phan.
  • gh-114077: Fix possible OverflowError in socket.socket.sendfile() when pass count larger than 2 GiB on 32-bit platform.
  • gh-114014: Fixed a bug in fractions.Fraction where an invalid string using d in the decimals part creates a different error compared to other invalid letters/characters. Patch by Jeremiah Gabriel Pascual.
  • gh-113951: Fix the behavior of tag_unbind() methods of tkinter.Text and tkinter.Canvas classes with three arguments. Previously, widget.tag_unbind(tag, sequence, funcid) destroyed the current binding for sequence, leaving sequence unbound, and deleted the funcid command. Now it removes only funcid from the binding for sequence, keeping other commands, and deletes the funcid command. It leaves sequence unbound only if funcid was the last bound command.
  • gh-113877: Fix tkinter method winfo_pathname() on 64-bit Windows.
  • gh-113661: unittest runner: Don’t exit 5 if tests were skipped. The intention of exiting 5 was to detect issues where the test suite wasn’t discovered at all. If we skipped tests, it was correctly discovered.
  • gh-113781: Silence unraisable AttributeError when warnings are emitted during Python finalization.
  • gh-112932: Restore the ability for zipfile to extractall from zip files with a “/” directory entry in them as is commonly added to zips by some wiki or bug tracker data exporters.
  • gh-113594: Fix UnicodeEncodeError in email when re-fold lines that contain unknown-8bit encoded part followed by non-unknown-8bit encoded part.
  • gh-113538: In asyncio.StreamReaderProtocol.connection_made(), there is callback that logs an error if the task wrapping the “connected callback” fails. This callback would itself fail if the task was cancelled. Prevent this by checking whether the task was cancelled first. If so, close the transport but don’t log an error.
  • gh-85567: Fix resource warnings for unclosed files in pickle and pickletools command line interfaces.
  • gh-101225: Increase the backlog for multiprocessing.connection.Listener objects created by multiprocessing.manager and multiprocessing.resource_sharer to significantly reduce the risk of getting a connection refused error when creating a multiprocessing.connection.Connection to them.
  • gh-113543: Make sure that webbrowser.MacOSXOSAScript sends webbrowser.open audit event.
  • gh-113028: When a second reference to a string appears in the input to pickle, and the Python implementation is in use, we are guaranteed that a single copy gets pickled and a single object is shared when reloaded. Previously, in protocol 0, when a string contained certain characters (e.g. newline) it resulted in duplicate objects.
  • gh-113421: Fix multiprocessing logger for %(filename)s.
  • gh-111784: Fix segfaults in the _elementtree module. Fix first segfault during deallocation of _elementtree.XMLParser instances by keeping strong reference to pyexpat module in module state for capsule lifetime. Fix second segfault which happens in the same deallocation process by keeping strong reference to _elementtree module in XMLParser structure for _elementtree module lifetime.
  • gh-113407: Fix import of unittest.mock when CPython is built without docstrings.
  • gh-113320: Fix regression in Python 3.12 where Protocol classes that were not marked as runtime-checkable would be unnecessarily introspected, potentially causing exceptions to be raised if the protocol had problematic members. Patch by Alex Waygood.
  • gh-113358: Fix rendering tracebacks for exceptions with a broken __getattr__.
  • gh-113214: Fix an AttributeError during asyncio SSL protocol aborts in SSL-over-SSL scenarios.
  • gh-113246: Update bundled pip to 23.3.2.
  • gh-113199: Make http.client.HTTPResponse.read1 and http.client.HTTPResponse.readline close IO after reading all data when content length is known. Patch by Illia Volochii.
  • gh-113188: Fix shutil.copymode() and shutil.copystat() on Windows. Previously they worked differenly if dst is a symbolic link: they modified the permission bits of dst itself rather than the file it points to if follow_symlinks is true or src is not a symbolic link, and did not modify the permission bits if follow_symlinks is false and src is a symbolic link.
  • gh-61648: Detect line numbers of properties in doctests.
  • gh-112559: signal.signal() and signal.getsignal() no longer call repr on callable handlers. asyncio.run() and asyncio.Runner.run() no longer call repr on the task results. Patch by Yilei Yang.
  • gh-110190: Fix ctypes structs with array on PPC64LE platform by setting MAX_STRUCT_SIZE to 64 in stgdict. Patch by Diego Russo.
  • gh-79429: Ignore FileNotFoundError when remove a temporary directory in the multiprocessing finalizer.
  • gh-81194: Fix a crash in socket.if_indextoname() with specific value (UINT_MAX). Fix an integer overflow in socket.if_indextoname() on 64-bit non-Windows platforms.
  • gh-112343: Improve handling of pdb convenience variables to avoid replacing string contents.
  • gh-111615: Fix a regression caused by a fix to gh-93162 whereby you couldn’t configure a QueueHandler without specifying handlers.
  • gh-111049: Fix crash during garbage collection of the io.BytesIO buffer object.
  • gh-110345: Show the Tcl/Tk patchlevel (rather than version) in tkinter._test().
  • gh-109858: Protect zipfile from “quoted-overlap” zipbomb. It now raises BadZipFile when try to read an entry that overlaps with other entry or central directory.
  • gh-114440: On Windows, closing the connection writer when cleaning up a broken multiprocessing.Queue queue is now done for all queues, rather than only in concurrent.futures manager thread. This can prevent a deadlock when a multiprocessing worker process terminates without cleaning up. This completes the backport of patches by Victor Stinner and Serhiy Storchaka.
  • gh-38807: Fix race condition in trace. Instead of checking if a directory exists and creating it, directly call os.makedirs() with the kwarg exist_ok=True.
  • gh-75705: Set unixfrom envelope in mailbox.mbox and mailbox.MMDF.
  • gh-106233: Fix stacklevel in InvalidTZPathWarning during zoneinfo module import.
  • gh-105102: Allow ctypes.Union to be nested in ctypes.Structure when the system endianness is the opposite of the classes.
  • gh-104282: Fix null pointer dereference in lzma._decode_filter_properties() due to improper handling of BCJ filters with properties of zero length. Patch by Radislav Chugunov.
  • gh-102512: When os.fork() is called from a foreign thread (aka _DummyThread), the type of the thread in a child process is changed to _MainThread. Also changed its name and daemonic status, it can be now joined.
  • bpo-35928: io.TextIOWrapper now correctly handles the decoding buffer after read() and write().
  • bpo-26791: shutil.move() now moves a symlink into a directory when that directory is the target of the symlink. This provides the same behavior as the mv shell command. The previous behavior raised an exception. Patch by Jeffrey Kintscher.
  • bpo-36959: Fix some error messages for invalid ISO format string combinations in strptime() that referred to directives not contained in the format string. Patch by Gordon P. Hemsley.
  • bpo-18060: Fixed a class inheritance issue that can cause segfaults when deriving two or more levels of subclasses from a base class of Structure or Union.
Documentation
  • gh-110746: Improved markup for valid options/values for methods ttk.treeview.column and ttk.treeview.heading, and for Layouts.
  • gh-95649: Document that the asyncio module contains code taken from v0.16.0 of the uvloop project, as well as the required MIT licensing information.
Tests
  • gh-109980: Fix test_tarfile_vs_tar in test_shutil for macOS, where system tar can include more information in the archive than shutil.make_archive.
  • gh-105089: Fix test.test_zipfile.test_core.TestWithDirectory.test_create_directory_with_write test in AIX by doing a bitwise AND of 0xFFFF on mode , so that it will be in sync with zinfo.external_attr
  • bpo-40648: Test modes that file can get with chmod() on Windows.
Build
  • gh-112305: Fixed the check-clean-src step performed on out of tree builds to detect errant $(srcdir)/Python/frozen_modules/*.h files and recommend appropriate source tree cleanup steps to get a working build again.
  • gh-112867: Fix the build for the case that WITH_PYMALLOC_RADIX_TREE=0 set.
  • bpo-11102: The os.major(), os.makedev(), and os.minor() functions are now available on HP-UX v3.
  • bpo-36351: Do not set ipv6type when cross-compiling.
Windows
  • gh-109991: Update Windows build to use OpenSSL 3.0.13.
  • gh-111239: Update Windows builds to use zlib v1.3.1.
  • gh-100107: The py.exe launcher will no longer attempt to run the Microsoft Store redirector when launching a script containing a /usr/bin/env shebang
  • gh-114096: Process privileges that are activated for creating directory junctions are now restored afterwards, avoiding behaviour changes in other parts of the program.
  • gh-111877: os.stat() calls were returning incorrect time values for files that could not be accessed directly.
  • gh-113009: multiprocessing: On Windows, fix a race condition in Process.terminate(): no longer set the returncode attribute to always call WaitForSingleObject() in Process.wait(). Previously, sometimes the process was still running after TerminateProcess() even if GetExitCodeProcess() is not STILL_ACTIVE. Patch by Victor Stinner.
  • gh-87868: Correctly sort and remove duplicate environment variables in _winapi.CreateProcess().
  • bpo-37308: Fix mojibake in mmap.mmap when using a non-ASCII tagname argument on Windows.
macOS
  • gh-115009: Update macOS installer to use SQLite 3.45.1.
  • gh-109991: Update macOS installer to use OpenSSL 3.0.13.
  • gh-110459: Running configure ... --with-openssl-rpath=X/Y/Z no longer fails to detect OpenSSL on macOS.
  • gh-74573: Document that dbm.ndbm can silently corrupt DBM files on updates when exceeding undocumented platform limits, and can crash (segmentation fault) when reading such a corrupted file. (FB8919203)
  • gh-65701: The freeze tool doesn’t work with framework builds of Python. Document this and bail out early when running the tool with such a build.
  • gh-108269: Set CFBundleAllowMixedLocalizations to true in the Info.plist for the framework, embedded Python.app and IDLE.app with framework installs on macOS. This allows applications to pick up the user’s preferred locale when that’s different from english.
  • gh-102362: Make sure the result of sysconfig.get_plaform() includes at least a major and minor versions, even if MACOSX_DEPLOYMENT_TARGET is set to only a major version during build to match the format expected by pip.
  • gh-110017: Disable a signal handling stress test on macOS due to a bug in macOS (FB13453490).
  • gh-110820: Make sure the preprocessor definitions for ALIGNOF_MAX_ALIGN_T, SIZEOF_LONG_DOUBLE and HAVE_GCC_ASM_FOR_X64 are correct for Universal 2 builds on macOS.
IDLE
  • gh-96905: In idlelib code, stop redefining built-ins ‘dict’ and ‘object’.
  • gh-72284: Improve the lists of features, editor key bindings, and shell key bingings in the IDLE doc.
  • gh-113903: Fix rare failure of test.test_idle, in test_configdialog.
  • gh-113729: Fix the “Help -> IDLE Doc” menu bug in 3.11.7 and 3.12.1.
  • gh-113269: Fix test_editor hang on macOS Catalina.
  • gh-112898: Fix processing unsaved files when quitting IDLE on macOS.
  • gh-103820: Revise IDLE bindings so that events from mouse button 4/5 on non-X11 windowing systems (i.e. Win32 and Aqua) are not mistaken for scrolling.
  • bpo-13586: Enter the selected text when opening the “Replace” dialog.
Tools/Demos
  • gh-109991: Update GitHub CI workflows to use OpenSSL 3.0.13 and multissltests to use 1.1.1w, 3.0.13, 3.1.5, and 3.2.1.
  • gh-115015: Fix a bug in Argument Clinic that generated incorrect code for methods with no parameters that use the METH_METHOD | METH_FASTCALL | METH_KEYWORDS calling convention. Only the positional parameter count was checked; any keyword argument passed would be silently accepted.
View older Python updates

Information

License

Free

Size

45.6 MB

Developer’s website

https://www.python.org/about/

Downloads

117105

App requirements

  • Intel 64
  • Apple Silicon
  • macOS 11 or later
Try our new feature and write a detailed review about Python. All reviews will be posted soon.

Write your thoughts in our old-fashioned comment

MacUpdate Comment Policy. We strongly recommend leaving comments, however comments with abusive words, bullying, personal attacks of any type will be moderated.
0.0

(0 Reviews of )

There are no reviews yet
  • Comments

  • User Ratings

umaromc
umaromc
Sep 30 2012
3.30
0.0
Sep 30 2012
0.0
Version: 3.30
Link is for 32/64-bit Intel Only, OS X 10.6+ 32-bit Intel/PPC Build, OS X 10.3-10.6 http://www.python.org/ftp/python/3.3.0/python-3.3.0-macosx10.5.dmg
Iliketrash
Iliketrash
Mar 19 2012
3.2.3rc2
0.0
Mar 19 2012
0.0
Version: 3.2.3rc2
>>> range(3,7) [3, 4, 5, 6] WTF? How stupid can a language get?
SickTeddyBear
SickTeddyBear
Feb 21 2011
3.2.0
0.0
Feb 21 2011
0.0
Version: 3.2.0
FYI, there are universal installers for Intel/PPC and 10.3->10.6: http://www.python.org/download/
Trashie
Trashie
Oct 23 2010
3.1.2
0.0
Oct 23 2010
0.0
Version: 3.1.2
Indentation thing is not a big deal - how else will the interpreter be able to work. For all the brace lovers maybe they should implement 2 modes I dunno...but once you get into it not having braces all over the place makes for some tidy reading code! I would take this as an overhead to have no braces any day of the week.
Millenniumx
Millenniumx
Apr 2 2006
2.4.3
0.0
Apr 2 2006
0.0
Version: 2.4.3
"One of the worst "features" of Python is that indentation is part of the syntax." So, do you indent your code in other languages? Of course you do; it's one of the first things any decent programmer learns to do. Given that, what's the problem? All it does is help keep the code readable.
Guest
Guest
Apr 2 2005
2.4.1
5.0
Apr 2 2005
5.0
Version: 2.4.1
Best language ever! I was in an, umm, less than sober state of mind last night and decided I needed a script to change a list of URLs into a list of HTML links. It worked perfectly the first time. I can't think of another language I could have done it in that would have worked as well. If you have any interest in programming whatsoever, learn python. You'll be a better programmer in any language because of it.
iAziz
iAziz
Sep 6 2021
3.9.7
5.0
Sep 6 2021
5.0
Version: 3.9.7
Rob85
Rob85
Nov 15 2018
5.0
Nov 15 2018
5.0
Version: null
Cyzor
Cyzor
Jun 21 2014
5.0
Jun 21 2014
5.0
Version: null
Quiiick
Quiiick
Apr 25 2014
4.0
Apr 25 2014
4.0
Version: null
Ededed
Ededed
Apr 22 2014
2.5
Apr 22 2014
2.5
Version: null
Ingerj
Ingerj
Apr 1 2014
4.0
Apr 1 2014
4.0
Version: null
Talking28
Talking28
Jul 12 2011
4.5
Jul 12 2011
4.5
Version: null
Pneshati
Pneshati
Dec 17 2010
5.0
Dec 17 2010
5.0
Version: null
John-E
John-E
Dec 8 2010
4.0
Dec 8 2010
4.0
Version: null
cheeseinspector
cheeseinspector
Dec 8 2010
5.0
Dec 8 2010
5.0
Version: null
Guest
Guest
Apr 2 2005
5.0
Apr 2 2005
5.0
Version: null
Free
Absolutely Free
How would you rate Python?
Similar apps
PHP
Server-side, cross-platform, HTML embedded scripting language.
Is this app is similar to PHP? Vote to improve the quality of this list.
Vote results
0
Upvotes
2
Total score
0
Downvotes
LiveCode Community Edition
Cross-platform, open-source development environment (was Revolution Media).
Is this app is similar to LiveCode Community Edition? Vote to improve the quality of this list.
Vote results
1
Upvotes
1
Total score
0
Downvotes
AMPPS
Auto-install stack with Apache, Mysql, PHP, Perl, Python.
Is this app is similar to AMPPS? Vote to improve the quality of this list.
Vote results
0
Upvotes
1
Total score
0
Downvotes
PyCharm Educational
Educational Python IDE for learning programming.
Is this app is similar to PyCharm Educational? Vote to improve the quality of this list.
Vote results
1
Upvotes
1
Total score
0
Downvotes
PyCharm Community
Lightweight IDE for Python development only.
Is this app is similar to PyCharm Community? Vote to improve the quality of this list.
Vote results
1
Upvotes
1
Total score
0
Downvotes