Hướng dẫn what is the difference between print in python 2 and 3? - sự khác biệt giữa in trong python 2 và 3 là gì?

Nhiều người dùng Python bắt đầu đang tự hỏi với phiên bản Python nào họ nên bắt đầu. Câu trả lời của tôi cho câu hỏi này thường là một cái gì đó dọc theo dòng, chỉ cần đi với phiên bản hướng dẫn yêu thích của bạn được viết và kiểm tra sự khác biệt sau này.

Nhưng điều gì sẽ xảy ra nếu bạn đang bắt đầu một dự án mới và có sự lựa chọn để chọn? Tôi muốn nói rằng hiện tại không có quyền nào đúng hay và sai, miễn là cả Python 2.7.x và Python 3.x hỗ trợ các thư viện mà bạn dự định sử dụng. Tuy nhiên, đáng để xem xét sự khác biệt chính giữa hai phiên bản Python phổ biến nhất để tránh những cạm bẫy phổ biến khi viết mã cho một trong số đó hoặc nếu bạn dự định chuyển dự án của mình.

Các phần #

  • Phần
  • Mô -đun
    Python 2.7.7
    ('a', 'b')
    a b
    
    2
  • Chức năng in
    • Python 2
    • Python 3
  • Phân chia số nguyên
    • Python 2
    • Python 3
  • Phân chia số nguyên
    • Python 2
    • Python 3
  • Phân chia số nguyên
    • Python 2
    • Python 3
    • Phân chia số nguyên
      • Unicode
  • Xrange
    • Python 2
    • Python 3
  • Phân chia số nguyên
    • Python 2
    • Python 3
  • Phân chia số nguyên
    • Python 2
    • Python 3
  • Phân chia số nguyên
    • Python 2
    • Python 3
  • Phân chia số nguyên
    • Python 2
    • Python 3
  • Phân chia số nguyên
    • Python 2
    • Python 3
  • Phân chia số nguyên
    • Python 2
    • Python 3
  • Phân chia số nguyên
    • Python 2
    • Python 3
  • Phân chia số nguyên

Unicode

Xrange

from __future__ import division

Phương pháp

Python 2.7.7
('a', 'b')
a b
3 cho các đối tượng
Python 2.7.7
('a', 'b')
a b
4 trong Python 3

Lưu ý về sự khác biệt về tốc độ trong Python 2 và 3Nâng cao ngoại lệXử lý ngoại lệHàm tiếp theo () và phương thức .next ()
Các biến số vòng và rò rỉ không gian tên toàn cầuSo sánh các loại không thể đặt hàng2.2 Phân tích cú pháp đầu vào của người dùng thông qua đầu vào (): Statically Nested Scopes
Trả về các đối tượng có thể lặp lại thay vì danh sáchNgân hàng làm tròn2.3 Thêm các bài viết về Python 2 và Python 3: Simple Generators
Mô -đun
Python 2.7.7
('a', 'b')
a b
2 #
Python 3.x đã giới thiệu một số từ khóa và tính năng không tương thích Python 2 có thể được nhập thông qua mô-đun
Python 2.7.7
('a', 'b')
a b
2 được xây dựng trong Python 2. Nên sử dụng nhập
Python 2.7.7
('a', 'b')
a b
2 nhập khẩu nếu bạn đang lên kế hoạch hỗ trợ Python 3.x cho mã của bạn. Ví dụ: nếu chúng ta muốn hành vi phân chia số nguyên của Python 3.x trong Python 2, chúng ta có thể nhập nó thông qua
3.0 Nhiều tính năng hơn có thể được nhập từ mô -đun
Python 2.7.7
('a', 'b')
a b
2 được liệt kê trong bảng dưới đây:
: Changing the Division Operator
tính năngtùy chọn trong3.0 bắt buộc trong: Imports: Multi-Line and Absolute/Relative
hiệu ứngtùy chọn trong2.6 bắt buộc trong: The “with” Statement
hiệu ứngNested_scopes3.0 2.1.0b1: Make print a function
PEP 227: Phạm vi lồng nhau tĩnhNested_scopes3.0 2.1.0b1: Bytes literals in Python 3000
PEP 227: Phạm vi lồng nhau tĩnh

from platform import python_version

máy phát điện

2.2.0a1

PEP 255: Máy phát điện đơn giản

phân công

print 'Python', python_version()
print 'Hello, World!'
print('Hello, World!')
print "text", ; print 'print more text on the same line'

2.2.0a2

PEP 238: Thay đổi nhà điều hành bộ phận

print('Python', python_version())
print('Hello, World!')

print("some text,", end="")
print(' print more text on the same line')

Python 3.4.1
Hello, World!
some text, print more text on the same line

  File "<ipython-input-3-139a7c5835bd>", line 1
    print 'Hello, World!'
                        ^
SyntaxError: invalid syntax

Note:

Tuyệt đối_Import

print 'Python', python_version()
print('a', 'b')
print 'a', 'b'

Python 2.7.7
('a', 'b')
a b

2.5.0A1

PEP 328: Nhập khẩu: đa dòng và tuyệt đối/tương đối
So, I still tend to use a

print 'Python', python_version()
print '3 / 2 =', 3 / 2
print '3 // 2 =', 3 // 2
print '3 / 2.0 =', 3 / 2.0
print '3 // 2.0 =', 3 // 2.0
3 or
print 'Python', python_version()
print '3 / 2 =', 3 / 2
print '3 // 2 =', 3 // 2
print '3 / 2.0 =', 3 / 2.0
print '3 // 2.0 =', 3 // 2.0
4 instead of a
print 'Python', python_version()
print '3 / 2 =', 3 / 2
print '3 // 2 =', 3 // 2
print '3 / 2.0 =', 3 / 2.0
print '3 // 2.0 =', 3 // 2.0
5 in my Python 3 scripts to save the Python 2 guys some trouble (and vice versa, I recommend a
print 'Python', python_version()
print '3 / 2 =', 3 / 2
print '3 // 2 =', 3 // 2
print '3 / 2.0 =', 3 / 2.0
print '3 // 2.0 =', 3 // 2.0
6 in your Python 2 scripts).

phân công

print 'Python', python_version()
print '3 / 2 =', 3 / 2
print '3 // 2 =', 3 // 2
print '3 / 2.0 =', 3 / 2.0
print '3 // 2.0 =', 3 // 2.0

from platform import python_version
0

PEP 238: Thay đổi nhà điều hành bộ phận

from platform import python_version
1

from platform import python_version
2

Tuyệt đối_Import

2.5.0A1

PEP 328: Nhập khẩu: đa dòng và tuyệt đối/tương đối

phân công

from platform import python_version
3

from platform import python_version
4

2.2.0a2

from platform import python_version
6

from platform import python_version
7

PEP 238: Thay đổi nhà điều hành bộ phận

from platform import python_version
8

from platform import python_version
9

print 'Python', python_version()
print 'Hello, World!'
print('Hello, World!')
print "text", ; print 'print more text on the same line'
0

print 'Python', python_version()
print 'Hello, World!'
print('Hello, World!')
print "text", ; print 'print more text on the same line'
1

print 'Python', python_version()
print 'Hello, World!'
print('Hello, World!')
print "text", ; print 'print more text on the same line'
2

print 'Python', python_version()
print 'Hello, World!'
print('Hello, World!')
print "text", ; print 'print more text on the same line'
3

print 'Python', python_version()
print 'Hello, World!'
print('Hello, World!')
print "text", ; print 'print more text on the same line'
4

print 'Python', python_version()
print 'Hello, World!'
print('Hello, World!')
print "text", ; print 'print more text on the same line'
5

Tuyệt đối_Import

2.5.0A1
The behavior was quite similar to a generator (i.e., “lazy evaluation”), but here the xrange-iterable is not exhaustible - meaning, you could iterate over it infinitely.

PEP 328: Nhập khẩu: đa dòng và tuyệt đối/tương đối

Trong Python 3,

from platform import python_version
04 đã được triển khai như hàm
from platform import python_version
03 để hàm
from platform import python_version
03 chuyên dụng không còn tồn tại nữa (
from platform import python_version
03 tăng
from platform import python_version
10 trong Python 3).

print 'Python', python_version()
print 'Hello, World!'
print('Hello, World!')
print "text", ; print 'print more text on the same line'
6

Python 2 #

print 'Python', python_version()
print 'Hello, World!'
print('Hello, World!')
print "text", ; print 'print more text on the same line'
7

print 'Python', python_version()
print 'Hello, World!'
print('Hello, World!')
print "text", ; print 'print more text on the same line'
8

Python 3 #

print 'Python', python_version()
print 'Hello, World!'
print('Hello, World!')
print "text", ; print 'print more text on the same line'
9

Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
0

Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
1

Phương thức Python 2.7.7 ('a', 'b') a b 3 cho các đối tượng Python 2.7.7 ('a', 'b') a b 4 trong Python 3 #

Một điều đáng nói nữa là

Python 2.7.7
('a', 'b')
a b
4 đã có một phương pháp mới của ____ ____883 trong Python 3.x (nhờ Yuchen Ying, người đã chỉ ra điều này). Phương pháp
Python 2.7.7
('a', 'b')
a b
3 có thể tăng tốc độ tra cứu trong Python 3.x
Python 2.7.7
('a', 'b')
a b
4 đáng kể cho các loại số nguyên và boolean.

Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
2

Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
3

Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
4

Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
5

Dựa trên các kết quả

from platform import python_version
17 ở trên, bạn thấy rằng việc thực hiện đối với các bộ phận tìm kiếm trên mạng nhanh hơn khoảng 60.000 khi nó thuộc loại số nguyên chứ không phải là một chiếc phao. Tuy nhiên, vì Python 2.x,
Python 2.7.7
('a', 'b')
a b
4 hoặc
from platform import python_version
19 không có phương pháp
Python 2.7.7
('a', 'b')
a b
3, thì tốc độ tra cứu của Hồi giáo sẽ rất khác nhau đối với các số nguyên hoặc phao:

Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
6

Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
7

Bên dưới các bằng chứng của người Viking rằng phương pháp

from platform import python_version
21 đã được thêm vào Python 2.x chưa:

Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
8

Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
9

print('Python', python_version())
print('Hello, World!')

print("some text,", end="")
print(' print more text on the same line')
0

print('Python', python_version())
print('Hello, World!')

print("some text,", end="")
print(' print more text on the same line')
1

print('Python', python_version())
print('Hello, World!')

print("some text,", end="")
print(' print more text on the same line')
2

print('Python', python_version())
print('Hello, World!')

print("some text,", end="")
print(' print more text on the same line')
3

Lưu ý về sự khác biệt về tốc độ trong Python 2 và 3 #

Một số người đã chỉ ra sự khác biệt về tốc độ giữa Python 3, ____ ____104 và Python2, ____103. Vì chúng được thực hiện theo cách tương tự, người ta sẽ mong đợi cùng một tốc độ. Tuy nhiên, sự khác biệt ở đây chỉ xuất phát từ thực tế là Python 3 thường có xu hướng chạy chậm hơn Python 2.

print('Python', python_version())
print('Hello, World!')

print("some text,", end="")
print(' print more text on the same line')
4

print('Python', python_version())
print('Hello, World!')

print("some text,", end="")
print(' print more text on the same line')
5

print('Python', python_version())
print('Hello, World!')

print("some text,", end="")
print(' print more text on the same line')
6

print('Python', python_version())
print('Hello, World!')

print("some text,", end="")
print(' print more text on the same line')
7

print('Python', python_version())
print('Hello, World!')

print("some text,", end="")
print(' print more text on the same line')
8

Tăng ngoại lệ #

Trong đó Python 2 chấp nhận cả hai ký hiệu, ’cũ và cú pháp mới, Python 3 nghẹt thở (và lần lượt tăng

print 'Python', python_version()
print '3 / 2 =', 3 / 2
print '3 // 2 =', 3 // 2
print '3 / 2.0 =', 3 / 2.0
print '3 // 2.0 =', 3 // 2.0
0) nếu chúng ta không gửi đối số ngoại lệ trong ngoặc đơn:

Python 2 #

from platform import python_version
3

Python 3.4.1
Hello, World!
some text, print more text on the same line
0

Python 3.4.1
Hello, World!
some text, print more text on the same line
1

Python 3.4.1
Hello, World!
some text, print more text on the same line
2

Python 3.4.1
Hello, World!
some text, print more text on the same line
3

Python 3 #

Python 3.4.1
Hello, World!
some text, print more text on the same line
4

Python 3.4.1
Hello, World!
some text, print more text on the same line
0

Python 3.4.1
Hello, World!
some text, print more text on the same line
6

Phương thức

Python 2.7.7
('a', 'b')
a b
3 cho các đối tượng
Python 2.7.7
('a', 'b')
a b
4 trong Python 3 #

Python 3.4.1
Hello, World!
some text, print more text on the same line
7

Python 3.4.1
Hello, World!
some text, print more text on the same line
8

Một điều đáng nói nữa là Python 2.7.7 ('a', 'b') a b 4 đã có một phương pháp mới của ____ ____883 trong Python 3.x (nhờ Yuchen Ying, người đã chỉ ra điều này). Phương pháp Python 2.7.7 ('a', 'b') a b 3 có thể tăng tốc độ tra cứu trong Python 3.x Python 2.7.7 ('a', 'b') a b 4 đáng kể cho các loại số nguyên và boolean.

Dựa trên các kết quả

from platform import python_version
17 ở trên, bạn thấy rằng việc thực hiện đối với các bộ phận tìm kiếm trên mạng nhanh hơn khoảng 60.000 khi nó thuộc loại số nguyên chứ không phải là một chiếc phao. Tuy nhiên, vì Python 2.x,
Python 2.7.7
('a', 'b')
a b
4 hoặc
from platform import python_version
19 không có phương pháp
Python 2.7.7
('a', 'b')
a b
3, thì tốc độ tra cứu của Hồi giáo sẽ rất khác nhau đối với các số nguyên hoặc phao:

Python 2 #

Python 3.4.1
Hello, World!
some text, print more text on the same line
9

  File "<ipython-input-3-139a7c5835bd>", line 1
    print 'Hello, World!'
                        ^
SyntaxError: invalid syntax
0

Python 3 #

  File "<ipython-input-3-139a7c5835bd>", line 1
    print 'Hello, World!'
                        ^
SyntaxError: invalid syntax
1

  File "<ipython-input-3-139a7c5835bd>", line 1
    print 'Hello, World!'
                        ^
SyntaxError: invalid syntax
2

Phương thức Python 2.7.7 ('a', 'b') a b 3 cho các đối tượng Python 2.7.7 ('a', 'b') a b 4 trong Python 3 #

Một điều đáng nói nữa là

Python 2.7.7
('a', 'b')
a b
4 đã có một phương pháp mới của ____ ____883 trong Python 3.x (nhờ Yuchen Ying, người đã chỉ ra điều này). Phương pháp
Python 2.7.7
('a', 'b')
a b
3 có thể tăng tốc độ tra cứu trong Python 3.x
Python 2.7.7
('a', 'b')
a b
4 đáng kể cho các loại số nguyên và boolean.

Python 2 #

  File "<ipython-input-3-139a7c5835bd>", line 1
    print 'Hello, World!'
                        ^
SyntaxError: invalid syntax
3

Python 3 #

  File "<ipython-input-3-139a7c5835bd>", line 1
    print 'Hello, World!'
                        ^
SyntaxError: invalid syntax
4

  File "<ipython-input-3-139a7c5835bd>", line 1
    print 'Hello, World!'
                        ^
SyntaxError: invalid syntax
5

Phương thức Python 2.7.7 ('a', 'b') a b 3 cho các đối tượng Python 2.7.7 ('a', 'b') a b 4 trong Python 3 #

Một điều đáng nói nữa là

Python 2.7.7
('a', 'b')
a b
4 đã có một phương pháp mới của ____ ____883 trong Python 3.x (nhờ Yuchen Ying, người đã chỉ ra điều này). Phương pháp
Python 2.7.7
('a', 'b')
a b
3 có thể tăng tốc độ tra cứu trong Python 3.x
Python 2.7.7
('a', 'b')
a b
4 đáng kể cho các loại số nguyên và boolean.

Dựa trên các kết quả

from platform import python_version
17 ở trên, bạn thấy rằng việc thực hiện đối với các bộ phận tìm kiếm trên mạng nhanh hơn khoảng 60.000 khi nó thuộc loại số nguyên chứ không phải là một chiếc phao. Tuy nhiên, vì Python 2.x,
Python 2.7.7
('a', 'b')
a b
4 hoặc
from platform import python_version
19 không có phương pháp
Python 2.7.7
('a', 'b')
a b
3, thì tốc độ tra cứu của Hồi giáo sẽ rất khác nhau đối với các số nguyên hoặc phao:

Bên dưới các bằng chứng của người Viking rằng phương pháp

from platform import python_version
21 đã được thêm vào Python 2.x chưa:

Python 2 #

  File "<ipython-input-3-139a7c5835bd>", line 1
    print 'Hello, World!'
                        ^
SyntaxError: invalid syntax
6

  File "<ipython-input-3-139a7c5835bd>", line 1
    print 'Hello, World!'
                        ^
SyntaxError: invalid syntax
7

Python 3 #

  File "<ipython-input-3-139a7c5835bd>", line 1
    print 'Hello, World!'
                        ^
SyntaxError: invalid syntax
8

  File "<ipython-input-3-139a7c5835bd>", line 1
    print 'Hello, World!'
                        ^
SyntaxError: invalid syntax
9

Lưu ý về sự khác biệt về tốc độ trong Python 2 và 3 #

Một số người đã chỉ ra sự khác biệt về tốc độ giữa Python 3, ____ ____104 và Python2, ____103. Vì chúng được thực hiện theo cách tương tự, người ta sẽ mong đợi cùng một tốc độ. Tuy nhiên, sự khác biệt ở đây chỉ xuất phát từ thực tế là Python 3 thường có xu hướng chạy chậm hơn Python 2.

Python 2 #

print 'Python', python_version()
print('a', 'b')
print 'a', 'b'
0

print 'Python', python_version()
print('a', 'b')
print 'a', 'b'
1

Python 3 #

print 'Python', python_version()
print('a', 'b')
print 'a', 'b'
2

print 'Python', python_version()
print('a', 'b')
print 'a', 'b'
3

Tăng ngoại lệ #

Trong đó Python 2 chấp nhận cả hai ký hiệu, ’cũ và cú pháp mới, Python 3 nghẹt thở (và lần lượt tăng

print 'Python', python_version()
print '3 / 2 =', 3 / 2
print '3 // 2 =', 3 // 2
print '3 / 2.0 =', 3 / 2.0
print '3 // 2.0 =', 3 // 2.0
0) nếu chúng ta không gửi đối số ngoại lệ trong ngoặc đơn:

Python 2 #

print 'Python', python_version()
print('a', 'b')
print 'a', 'b'
4

Python 3 #

print 'Python', python_version()
print('a', 'b')
print 'a', 'b'
5

Cách thích hợp để nâng cao ngoại lệ trong Python 3:

Xử lý ngoại lệ #

Ngoài ra việc xử lý các trường hợp ngoại lệ đã thay đổi một chút trong Python 3. Trong Python 3, chúng ta phải sử dụng từ khóa của ____ ____125

Hàm tiếp theo () và phương thức .next () #

Python 2 #

from platform import python_version
26 (
from platform import python_version
27) là một hàm (phương thức) thường được sử dụng như vậy, đây là một thay đổi cú pháp khác (hoặc thay đổi trong việc thực hiện) đáng nói: nơi bạn có thể sử dụng cả cú pháp chức năng và phương thức trong Python 2.7.5,
from platform import python_version
26 Chức năng là tất cả những gì còn lại trong Python 3 (gọi phương thức
from platform import python_version
27 làm tăng
from platform import python_version
30).

print 'Python', python_version()
print('a', 'b')
print 'a', 'b'
7

Python 3 #

print 'Python', python_version()
print('a', 'b')
print 'a', 'b'
8

print 'Python', python_version()
print('a', 'b')
print 'a', 'b'
9

Các biến số vòng và rò rỉ không gian tên toàn cầu #

  • from platform import python_version
    
    43

  • from platform import python_version
    
    44

  • from platform import python_version
    
    45

  • Tin tốt là: Trong các biến số Python 3.x for-loop don don rò rỉ vào không gian tên toàn cầu nữa!

  • Phương pháp từ điển

    from platform import python_version
    
    47

  • Phương pháp từ điển

    from platform import python_version
    
    48

Nhân viên ngân hàng làm tròn #

Python 3 đã áp dụng cách làm tròn số thập phân hiện nay khi nó dẫn đến một mối quan hệ (.5) ở các chữ số quan trọng cuối cùng. Bây giờ, trong Python 3, số thập phân được làm tròn đến số gần nhất. Mặc dù nó là một sự bất tiện cho tính di động của mã, nhưng nó được cho là một cách làm tròn tốt hơn so với làm tròn vì nó tránh được sự thiên vị đối với số lượng lớn. Để biết thêm thông tin, hãy xem các bài viết và đoạn văn Wikipedia xuất sắc:

  • https://en.wikipedia.org/wiki/Rounding#Round_half_to_even
  • https://en.wikipedia.org/wiki/IEEE_floating_point#Roundings_to_nearest

Python 2 #

from platform import python_version
3

Python 3 #

Python 3.4.1
Hello, World!
some text, print more text on the same line
4

Thêm các bài viết về Python 2 và Python 3 #

Dưới đây là danh sách một số bài viết hay liên quan đến Python 2 và 3 mà tôi muốn giới thiệu như một phần tiếp theo.

// chuyển sang Python 3

  • Tôi nên sử dụng Python 2 hay Python 3 cho hoạt động phát triển của mình?

  • Những gì mới trong Python 3.0

  • Chuyển sang Python 3

  • Chuyển mã Python 2 sang Python 3

  • Làm thế nào giữ Python 3 tiến về phía trước

// Pro và Anti Python 3

  • 10 tính năng tuyệt vời của Python mà bạn có thể sử dụng vì bạn từ chối nâng cấp lên Python 3

  • Mọi thứ bạn không muốn biết về Unicode trong Python 3

  • Python 3 đang giết chết Python

  • Python 3 có thể hồi sinh Python

  • Python 3 là tốt

Cảm ơn bạn đã đọc. Nếu bạn thích nội dung này, bạn cũng có thể tìm thấy tôi trên Twitter, nơi tôi chia sẻ nội dung hữu ích hơn.

Sự khác biệt chính giữa Python 2 và 3 là gì?

Python 3 có cú pháp dễ dàng hơn so với Python 2. Rất nhiều thư viện của Python 2 không tương thích về phía trước.Rất nhiều thư viện được tạo ra trong Python 3 để được sử dụng nghiêm ngặt với Python 3. Python 2 không còn được sử dụng kể từ năm 2020.. A lot of libraries of Python 2 are not forward compatible. A lot of libraries are created in Python 3 to be strictly used with Python 3. Python 2 is no longer in use since 2020.

Làm thế nào để bạn biết nếu một tập lệnh là Python 2 hoặc 3?

Nếu bạn muốn xác định xem python2 hay python3 đang chạy, bạn có thể kiểm tra phiên bản chính với sys.version_info.major này.2 có nghĩa là python2 và 3 có nghĩa là python3.sys. version_info. major . 2 means Python2, and 3 means Python3.

Python 2 có in không?

In: Trong Python 2, in Print được coi là một tuyên bố chứ không phải là một hàm.Không cần phải bọc văn bản bạn muốn in trong ngoặc đơn, mặc dù bạn có thể nếu bạn muốn.Điều này có thể gây nhầm lẫn, vì hầu hết các hành động khác trong Python sử dụng các hàm yêu cầu các đối số được đặt bên trong dấu ngoặc đơn.In Python 2, “print” is treated as a statement rather than a function. There is no need to wrap the text you want to print in parentheses, although you can if you want. This can be confusing, as most other actions in Python use functions that require the arguments to be placed inside parentheses.
Tuyên bố in đã biến mất trong Python 3;Trình biên dịch không hỗ trợ nó nữa.; the compiler doesn't support it anymore.