People who want to learn Python will have a confusion, that is, Python currently has two versions, Python2 and Python3. What is the difference between Python2 and Python3? Which of the two versions should I learn?
python3 and python2 are incompatible, and the differences are relatively large. python3 is not backward compatible, but most components and extensions are based on python2. At present, most practical applications do not consider Python 3 for the time being, and sometimes pay attention to writing code that is compatible with 2/3. When writing new code mainly using Python2, you should consider the possibility of migrating to Python3 in the future. According to statistics, 10% currently use Python 3; 20% use both Python 2 and Python 3, with Python 2 used more; 70% use Python 2.
In fact, python is one of the most commonly used software on Linux, but most of the current versions of Linux still use python2. Moreover, there are more programs that rely on python2 on Linux, so Python3 should replace python2 and become the mainstream. It will take a few more years. If you still learn Python 2 to find a job, it is not difficult to switch from Python 2 to python3 after learning Python 2.
After talking for a long time, what is the difference between Python2 and Python3?
1. Performance
Py3.0 runs pystone benchmark 30% slower than Py2.5. Guido believes that Py3.0 has great room for optimization and can achieve good optimization results in string and integer operations.
Py3.1 performance is 15% slower than Py2.5, and there is still a lot of room for improvement.
2. Encoding
Py3.X source code files use utf-8 encoding by default
3. Syntax
1) Remove <>, Change all to !=
2) Remove `` and use repr()
3 for all. Add the keywords as and with, as well as True, False, None
4) Integer division returns a floating point number. To get an integer result, please use //
5) Add a nonlocal statement. Use noclocal x to directly assign peripheral (non-global) variables
6) Remove the print statement and add the print() function to achieve the same function. The same is true for the exec statement, which has been changed to the exec() function
7) Changes the behavior of the sequential operator, such as x 8) The input function has been changed, raw_input has been deleted and replaced with input: 9) Tuple parameter unpacking has been removed. The function cannot be defined like def(a, (b, c)):pass 10) New octal word variable, the oct() function has been modified accordingly. 11) Added binary literals and bin() function 12) Extended iterable unpacking. In Py3. 13) New super(), you can no longer pass parameters to super(), 14) New metaclass syntax: 15) Support class decorator. 4. Strings and byte strings 1) Now strings only have one type: str, but it is almost the same as the 2.x version of unicode. 2) Regarding byte strings, please refer to the 2nd item of "Data Type" 5, Data Type 1) Py3.X has removed the long type, now There is only one integer type - int, but it behaves like the 2.X version of long 2) Added bytes type 6, object-oriented 1) Introduce abstract base classes (Abstract Base Classes, ABCs). 2) Container classes and iterator classes are ABCsized, so there are many more types in the cellections module than in Py2.5. 3) The next() method of the iterator was renamed __next__(), and the built-in function next() was added to call the iterator 4) @abstractmethod and @ were added abstractproperty has two decorators, making it more convenient to write abstract methods (properties). 7. Exceptions 1) All exceptions are inherited from BaseException, and StardardError is deleted 2) The sequence behavior and .message attribute of the exception class are removed 3) Use raise Exception(args) instead of raise Exception, args syntax 4) Syntax changes for catching exceptions, the as keyword is introduced to identify exception instances 5) Exception chain , because __context__ is not implemented in version 3.0a1 8. Module changes 2) Removed the imageop module 3) Removed audiodev, Bastion, bsddb185, exceptions, linuxaudiodev, md5, imeWriter, mimify, popen2, rexec, sets, sha, stringold, strop, sunaudiodev, timing and xmllib modules 4) Removed bsddb module (released separately, available from Python "bindings" for Oracle Berkeley DB) 5) Removed new module 6) The os.tmpnam() and os.tmpfile() functions have been moved to the tmpfile module 7) The tokenize module now works with bytes. The main entry point is no longer generate_tokens, but tokenize.tokenize() 9. Others 2) Bytes objects cannot hash, nor do they support b.lower(), b.strip() and b.split() methods 3) zip(), map () and filter() both return iterators. 4) string.letters and related .lowercase and .uppercase have been removed, please use string.ascii_letters instead. 5) If x < y cannot be compared, a TypeError exception is thrown 6) __getslice__ series members are abandoned. 7) The file class is abandoned The above is the detailed content of What version of python is best for newbies?. For more information, please follow other related articles on the PHP Chinese website!
1) The cPickle module has been removed and the pickle module can be used instead. Eventually we will have a transparent and efficient module.
1) xrange() is renamed range(). If you want to use range() to get a list, you must Explicit call