Bạn có thể khai báo loại biến trong Python không?

Bạn đã từng lập trình các ngôn ngữ cấp thấp như C, C++ hay các ngôn ngữ lập trình tương tự khác chưa? . Bạn biết nhiều, đúng vậy, nhưng chưa đủ với Python. Vì vậy, bạn nên tiếp tục đọc chương này về kiểu dữ liệu và biến trong Python. Có sự khác biệt tinh ranh trong cách Python và C xử lý các biến. Có số nguyên, số dấu phẩy động, chuỗi, v.v., nhưng mọi thứ không giống như trong C hoặc C++

Nếu bạn muốn sử dụng danh sách hoặc mảng kết hợp trong C e. g. , bạn sẽ phải phân tích danh sách kiểu dữ liệu hoặc mảng kết hợp từ đầu, tôi. e. , thiết kế cấu trúc bộ nhớ và quản lý cấp phát. Bạn cũng sẽ phải triển khai các phương pháp tìm kiếm và truy cập cần thiết. Python cung cấp các kiểu dữ liệu quyền lực như danh sách và mảng kết hợp được gọi là "dict", như một phần thực sự của ngôn ngữ

Vì vậy, chương này đáng đọc cho cả người mới bắt đầu và lập trình viên nâng cao trong các ngôn ngữ lập trình khác

Đào tạo Python trực tiếp

Thưởng thức trang này?

Nhìn thấy. Tổng quan về các khóa học Python trực tiếp

đăng ký tại đây

Biến

Khái niệm chung về biến

Chương phụ này đặc biệt dành cho các lập trình viên C, C++ và Java, vì cách các ngôn ngữ lập trình này xử lý các kiểu dữ liệu cơ bản khác với cách xử lý của Python. Những người bắt đầu học Python như ngôn ngữ lập trình đầu tiên của họ có thể bỏ qua phần này và đọc chương phụ tiếp theo

Vì vậy, một biến là gì? . Biến là một cách đề cập đến một vị trí bộ nhớ được sử dụng bởi một chương trình máy tính. Trong nhiều ngôn ngữ lập trình, một biến là tên tượng trưng cho vị trí thực tế này. Vị trí bộ nhớ này chứa các giá trị, như số, văn bản hoặc các loại phức tạp hơn. Chúng ta có thể sử dụng biến này để yêu cầu máy tính lưu một số dữ liệu ở vị trí này hoặc truy xuất một số dữ liệu từ vị trí này

Một biến có thể được xem như một thùng chứa [hoặc một số người nói là chuồng bồ câu] để lưu trữ các giá trị nhất định. Trong khi chương trình đang chạy, các biến được truy cập và đôi khi bị thay đổi, tôi. e. , một giá trị mới sẽ được gán cho một biến

Những gì chúng ta đã nói cho đến nay về các biến phù hợp nhất với cách các biến được triển khai trong C, C++ hoặc Java. Tên biến phải được khai báo bằng các ngôn ngữ này trước khi chúng có thể được sử dụng

int x;
int y;

Việc khai báo như vậy đảm bảo rằng chương trình dành bộ nhớ cho hai biến có tên là x và y. Tên biến đại diện cho vị trí bộ nhớ. Nó giống như hai chiếc hộp đựng giày rỗng, mà bạn có thể thấy trong hình trên. Những hộp giày này được dán nhãn x và y. Giống như hai hộp giày, bộ nhớ cũng trống

Việc đưa các giá trị vào các biến có thể được thực hiện bằng các phép gán. Cách bạn gán giá trị cho các biến gần như giống nhau trong tất cả các ngôn ngữ lập trình. Trong hầu hết các trường hợp, dấu "=" bằng nhau được sử dụng. Giá trị ở phía bên phải sẽ được lưu trong tên biến ở phía bên trái

Chúng ta sẽ gán giá trị 42 cho cả hai biến và chúng ta có thể thấy rằng hai số được lưu trong bộ nhớ, tương ứng với hai hộp đựng giày trong hình sau

x = 42;
y = 42;

Chúng tôi nghĩ rằng thật dễ hiểu những gì xảy ra. Nếu chúng ta gán một giá trị mới cho một trong các biến, giả sử giá trị 78 cho y

y = 78;

Chúng tôi đã trao đổi nội dung về vị trí bộ nhớ của y

Bây giờ chúng ta đã thấy rằng trong các ngôn ngữ như C, C++ hoặc Java, mọi biến đều có và phải có một kiểu dữ liệu duy nhất. e. g. , nếu biến có kiểu số nguyên thì chỉ có thể lưu số nguyên vào biến trong suốt thời gian của chương trình. Trong các ngôn ngữ lập trình đó, mọi biến phải được khai báo trước khi nó có thể được sử dụng. Khai báo một biến có nghĩa là ràng buộc nó với một kiểu dữ liệu

Biến trong Python

Không cần khai báo các biến trong Python, điều này làm cho nó khá dễ dàng. Thậm chí không thể khai báo các biến. Nếu cần một biến, bạn nên nghĩ ra một cái tên và bắt đầu sử dụng nó như một biến

Một khía cạnh đáng chú ý khác của Python. Không chỉ giá trị của một biến có thể thay đổi trong quá trình thực hiện chương trình, mà cả kiểu. Bạn có thể gán một giá trị số nguyên cho một biến, sử dụng nó làm số nguyên trong một thời gian rồi gán một chuỗi cho cùng một biến. Trong dòng mã sau, chúng tôi gán giá trị 42 cho một biến

i = 42

Dấu "=" bằng trong phép gán không nên được coi là "bằng". Nó phải là "read" hoặc được hiểu là "được đặt thành", nghĩa là trong ví dụ của chúng tôi "biến i được đặt thành 42". Bây giờ chúng ta sẽ tăng giá trị của biến này lên 1

i = i + 1
print[i]

ĐẦU RA

43

Như chúng tôi đã nói ở trên, loại biến có thể thay đổi trong quá trình thực thi tập lệnh. Hay nói chính xác hơn, một đối tượng mới, có thể thuộc bất kỳ loại nào, sẽ được gán cho nó. Chúng tôi minh họa điều này trong ví dụ sau của chúng tôi

i = 42          # data type is implicitly set to integer
i = 42 + 0.11       # data type is changed to float
i = "forty"     # and now it will be a string 

Khi Python thực thi một phép gán như "i = 42", nó đánh giá vế phải của phép gán và nhận ra rằng nó tương ứng với số nguyên 42. Nó tạo một đối tượng của lớp số nguyên để lưu dữ liệu này. Nếu bạn muốn hiểu rõ hơn về các đối tượng và lớp, bạn có thể nhưng bạn không cần phải bắt đầu với chương của chúng tôi về Lập trình hướng đối tượng

Nói cách khác, Python tự động xử lý biểu diễn vật lý cho các loại dữ liệu khác nhau

Tham chiếu đối tượng

Bây giờ chúng tôi muốn xem xét kỹ hơn các biến. Các biến Python là các tham chiếu đến các đối tượng, nhưng dữ liệu thực tế được chứa trong các đối tượng

Vì các biến đang trỏ đến các đối tượng và các đối tượng có thể có các kiểu dữ liệu tùy ý, các biến không thể có các kiểu được liên kết với chúng. Đây là một sự khác biệt rất lớn so với C, C++ hay Java, nơi một biến được liên kết với một kiểu dữ liệu cố định. Không thể thay đổi liên kết này miễn là chương trình đang chạy

Do đó, có thể viết mã như sau bằng Python

x = 42
print[x]

ĐẦU RA

________số 8

x = "Now x references a string"
print[x]

ĐẦU RA

x = 42;
y = 42;
0

Chúng tôi muốn chứng minh một cái gì đó khác bây giờ. Hãy xem đoạn mã sau

x = 42;
y = 42;
1

Chúng tôi đã tạo một đối tượng số nguyên 42 và gán nó cho biến x. Sau đó, chúng tôi đã gán x cho biến y. Điều này có nghĩa là cả hai biến tham chiếu cùng một đối tượng. Hình ảnh sau đây minh họa điều này

Điều gì sẽ xảy ra khi chúng ta thực thi

x = 42;
y = 42;
2

sau mã trước?

Python sẽ tạo một đối tượng số nguyên mới với nội dung 78 và sau đó biến y sẽ tham chiếu đến đối tượng mới được tạo này, như chúng ta có thể thấy trong hình sau

Rất có thể, chúng ta sẽ thấy những thay đổi tiếp theo đối với các biến trong luồng chương trình của chúng ta. Ví dụ, có thể có một phép gán chuỗi cho biến x. Đối tượng số nguyên trước đó "42" sẽ bị bỏ trống sau phép gán này. Nó sẽ bị xóa bởi Python, vì không có biến nào khác đang tham chiếu đến nó

Bạn có thể tự hỏi, làm thế nào chúng ta có thể thấy hoặc chứng minh rằng x và y thực sự tham chiếu đến cùng một đối tượng sau phép gán y = x trong ví dụ trước của chúng ta?

Hàm nhận dạng id[] có thể được sử dụng cho mục đích này. Mỗi trường hợp [đối tượng hoặc biến] có một danh tính, tôi. e. , một số nguyên duy nhất trong tập lệnh hoặc chương trình, tôi. e. , các đối tượng khác có danh tính khác nhau. Vì vậy, hãy xem ví dụ trước của chúng tôi và cách nhận dạng sẽ thay đổi

x = 42;
y = 42;
3

ĐẦU RA

x = 42;
y = 42;
4

x = 42;
y = 42;
5

ĐẦU RA

x = 42;
y = 42;
6

x = 42;
y = 42;
7

ĐẦU RA

x = 42;
y = 42;
8

Tên biến hợp lệ

Việc đặt tên biến tuân theo khái niệm tổng quát hơn về định danh. Mã định danh Python là tên được sử dụng để xác định một biến, hàm, lớp, mô-đun hoặc đối tượng khác

Tên biến và mã định danh có thể bao gồm các chữ cái viết hoa "A" đến "Z", các chữ cái viết thường "a" đến "z", dấu gạch dưới _ và, ngoại trừ ký tự đầu tiên, các chữ số từ 0 đến 9. Trăn 3. x dựa trên Unicode. Nghĩa là, tên biến và tên định danh cũng có thể chứa các ký tự Unicode

Mã định danh không giới hạn về chiều dài. Trường hợp có ý nghĩa. Thực tế là tên định danh phân biệt chữ hoa chữ thường có thể gây ra sự cố cho một số người dùng Windows, chẳng hạn như tên tệp không phân biệt chữ hoa chữ thường

Các ngoại lệ từ các quy tắc trên là các từ khóa Python đặc biệt, như chúng được mô tả trong đoạn sau

Các định nghĩa biến sau đều hợp lệ

x = 42;
y = 42;
9

Đào tạo Python trực tiếp

Thưởng thức trang này?

Nhìn thấy. Tổng quan về các khóa học Python trực tiếp

Các khóa học trực tuyến sắp tới

Khái niệm cơ bản về Python cho người mới bắt đầu

Khóa học nâng cao chuyên sâu

Python dành cho kỹ sư và nhà khoa học

Lập trình hướng đối tượng với Python

đăng ký tại đây

từ khóa Python

Không mã định danh nào có thể trùng tên với một trong các từ khóa Python, mặc dù chúng tuân theo các quy ước đặt tên ở trên

y = 78;
0

Không cần phải học thuộc lòng. Bạn có thể lấy danh sách các từ khóa Python trong trình bao tương tác bằng cách sử dụng trợ giúp. Bạn gõ help[] trong phần tương tác, nhưng xin đừng quên dấu ngoặc đơn

y = 78;
1

Những gì bạn thấy bây giờ là lời nhắc trợ giúp, cho phép bạn truy vấn trợ giúp về nhiều thứ, đặc biệt là về "từ khóa"

y = 78;
2

quy ước đặt tên

Chúng ta đã thấy trong chương về "Tên biến hợp lệ" rằng đôi khi chúng ta cần những tên bao gồm nhiều hơn một từ. Ví dụ: chúng tôi đã sử dụng tên "maximum_height". Dấu gạch dưới có chức năng như một dấu tách từ, vì không được phép để trống trong tên biến. Một số người thích viết tên biến theo cái gọi là ký hiệu CamelCase. Chúng tôi đã xác định biến MinimumHeight theo kiểu đặt tên này

Có một "cuộc chiến" thường trực đang diễn ra giữa những người theo trường hợp lạc đà và những người yêu thích gạch dưới. Cá nhân tôi chắc chắn thích "the_natural_way_of_naming_things" hơn "TheNaturalWayOfNamingThings". Tôi nghĩ rằng cái đầu tiên dễ đọc hơn và trông ngôn ngữ tự nhiên hơn như. Nói cách khác. Các từ CamelCase khó đọc hơn so với các từ có gạch dưới, Đặc biệt là If They Are VeryLong. Đây là ý kiến ​​cá nhân của mình được nhiều lập trình viên khác chia sẻ nhưng chắc chắn không phải ai cũng vậy. Hướng dẫn về Phong cách dành cho Mã Python đề xuất ký hiệu gạch dưới cho tên biến cũng như tên hàm

Một số tên nên tránh cho tên biến. Không bao giờ sử dụng các ký tự 'l' [chữ thường "L"], 'O' ["O" như trong "Ontario"] hoặc 'I' [như trong "Indiana"] làm tên biến ký tự đơn. Nên tránh sử dụng chúng, vì những ký tự này không thể phân biệt được với các chữ số một và số không trong một số phông chữ. Khi muốn sử dụng 'l', hãy sử dụng 'L' thay vào đó, nếu bạn không thể nghĩ ra một cái tên nào hay hơn. Hướng dẫn về Phong cách phải nói như sau về việc đặt tên cho các mã định danh trong các mô-đun tiêu chuẩn. "Tất cả các mã định danh trong thư viện chuẩn Python PHẢI sử dụng mã định danh chỉ ASCII và NÊN sử dụng các từ tiếng Anh bất cứ khi nào khả thi [trong nhiều trường hợp, chữ viết tắt và thuật ngữ kỹ thuật được sử dụng không phải tiếng Anh]. Ngoài ra, chuỗi ký tự và nhận xét cũng phải ở dạng ASCII. Các ngoại lệ duy nhất là [a] các trường hợp thử nghiệm kiểm tra các tính năng không phải ASCII và [b] tên tác giả. Các tác giả có tên không dựa trên bảng chữ cái Latinh PHẢI cung cấp phiên âm Latinh cho tên của họ. "

Các công ty, viện nghiên cứu, tổ chức hoặc các dự án nguồn mở hướng tới khán giả quốc tế nên áp dụng một quy ước ký hiệu tương tự

Đào tạo Python trực tiếp

Thưởng thức trang này?

Nhìn thấy. Tổng quan về các khóa học Python trực tiếp

đăng ký tại đây

Thay đổi loại dữ liệu và vị trí lưu trữ

Lập trình có nghĩa là xử lý dữ liệu. Dữ liệu trong chương trình Python được biểu diễn bằng các đối tượng. Các đối tượng này có thể được

y = 78;
3

Vì vậy, chúng tôi có các "loại" đối tượng khác nhau cho các loại dữ liệu khác nhau. Chúng ta sẽ xem xét các kiểu dữ liệu tích hợp khác nhau trong Python

số

Các kiểu dữ liệu lõi tích hợp sẵn của Python trong một số trường hợp còn được gọi là các kiểu đối tượng. Có bốn kiểu dữ liệu tích hợp sẵn cho các số

y = 78;
4

y = 78;
5

ĐẦU RA

y = 78;
6

y = 78;
7

y = 78;
8

ĐẦU RA

y = 78;
9

i = 42
0

i = 42
1

ĐẦU RA

i = 42
2

Các hàm hex, bin, oct có thể được sử dụng để chuyển đổi một số nguyên thành biểu diễn chuỗi tương ứng của số nguyên

i = 42
3

ĐẦU RA

i = 42
4

i = 42
5

ĐẦU RA

i = 42
6

i = 42
7

ĐẦU RA

i = 42
8

i = 42
9

ĐẦU RA

i = i + 1
print[i]
0

i = i + 1
print[i]
1

ĐẦU RA

i = i + 1
print[i]
2

Số nguyên trong Python3 có thể có kích thước không giới hạn

i = i + 1
print[i]
3

ĐẦU RA

i = i + 1
print[i]
4

i = i + 1
print[i]
5

ĐẦU RA

i = i + 1
print[i]
6

i = i + 1
print[i]
7

Python 2 có hai loại số nguyên. int và dài. Không còn "long int" trong Python3 nữa. Chỉ có một loại "int", chứa cả "int" và "long" từ Python2. Đó là lý do tại sao đoạn mã sau không thành công trong Python 3

i = i + 1
print[i]
8

ĐẦU RA

i = i + 1
print[i]
9

43
0

ĐẦU RA

43
1

43
2

Ví dụ. 42. 11, 3. 1415e-10

43
3

Số phức được viết dưới dạng

43
4

ví dụ

43
5

ĐẦU RA

43
6

Đào tạo Python trực tiếp

Thưởng thức trang này?

Nhìn thấy. Tổng quan về các khóa học Python trực tiếp

đăng ký tại đây

phép chia số nguyên

Có hai loại toán tử chia

43
7

Bộ phận thực sự

Phép chia thực sự sử dụng ký tự gạch chéo [/] làm dấu toán tử. Rất có thể đó là những gì bạn mong đợi "phân chia" được. Các ví dụ sau đây hy vọng là tự giải thích

43
8

ĐẦU RA

43
9

i = 42          # data type is implicitly set to integer
i = 42 + 0.11       # data type is changed to float
i = "forty"     # and now it will be a string 
0

ĐẦU RA

43
9

i = 42          # data type is implicitly set to integer
i = 42 + 0.11       # data type is changed to float
i = "forty"     # and now it will be a string 
2

ĐẦU RA

i = 42          # data type is implicitly set to integer
i = 42 + 0.11       # data type is changed to float
i = "forty"     # and now it will be a string 
3

Bộ phận tầng

Toán tử "//" thực hiện phép chia tầng, i. e. , số bị chia được chia cho số chia - giống như phép chia thực - nhưng giá trị sàn của kết quả sẽ được trả về. Sàn là số nguyên lớn nhất nhỏ hơn kết quả của phép chia thực. Số này sẽ được chuyển thành số thực, nếu cổ tức hoặc số chia hoặc cả hai đều là giá trị thực. Nếu cả hai đều là số nguyên, kết quả cũng sẽ là một số nguyên. Nói cách khác, "//" luôn cắt ngắn về phía âm vô cực

Kết nối với chức năng sàn. Trong toán học và khoa học máy tính, hàm sàn là hàm nhận đầu vào là số thực x và trả về số nguyên lớn nhất sàn [ x ] = ⌊ x ⌋ nhỏ hơn hoặc bằng x

Nếu bây giờ bạn đang bối rối bởi định nghĩa khá toán học và lý thuyết này, các ví dụ sau hy vọng sẽ làm sáng tỏ vấn đề

i = 42          # data type is implicitly set to integer
i = 42 + 0.11       # data type is changed to float
i = "forty"     # and now it will be a string 
4

ĐẦU RA

i = 42          # data type is implicitly set to integer
i = 42 + 0.11       # data type is changed to float
i = "forty"     # and now it will be a string 
5

i = 42          # data type is implicitly set to integer
i = 42 + 0.11       # data type is changed to float
i = "forty"     # and now it will be a string 
6

ĐẦU RA

i = 42          # data type is implicitly set to integer
i = 42 + 0.11       # data type is changed to float
i = "forty"     # and now it will be a string 
5

i = 42          # data type is implicitly set to integer
i = 42 + 0.11       # data type is changed to float
i = "forty"     # and now it will be a string 
8

ĐẦU RA

i = 42          # data type is implicitly set to integer
i = 42 + 0.11       # data type is changed to float
i = "forty"     # and now it will be a string 
5

x = 42
print[x]
0

ĐẦU RA

x = 42
print[x]
1

x = 42
print[x]
2

ĐẦU RA

i = 42          # data type is implicitly set to integer
i = 42 + 0.11       # data type is changed to float
i = "forty"     # and now it will be a string 
3

x = 42
print[x]
4

ĐẦU RA

x = 42
print[x]
5

x = 42
print[x]
6

ĐẦU RA

x = 42
print[x]
7

Dây

Nhiệm vụ của các máy tính thế hệ đầu tiên vào những năm 40 và 50 - do hạn chế về mặt kỹ thuật - tập trung vào xử lý số. Xử lý văn bản chỉ là một giấc mơ vào thời điểm đó. Ngày nay, một trong những nhiệm vụ chính của máy tính là xử lý văn bản dưới mọi hình thức; . Để cho phép xử lý văn bản, ngôn ngữ lập trình cần có kiểu dữ liệu phù hợp. Chuỗi được sử dụng trong tất cả các ngôn ngữ lập trình hiện đại để lưu trữ và xử lý thông tin văn bản. Về mặt logic, một chuỗi - giống như bất kỳ văn bản nào - là một chuỗi các ký tự. Câu hỏi vẫn là một nhân vật bao gồm những gì. Trong một cuốn sách, hoặc trong một văn bản giống như văn bản mà bạn đang đọc bây giờ, các ký tự bao gồm các hình dạng đồ họa, cái gọi là biểu đồ, bao gồm các đường kẻ, đường cong và đường giao nhau ở các góc hoặc vị trí nhất định, v.v. Người Hy Lạp cổ đại liên kết từ này với các bản khắc trên đồng xu hoặc tem trên con dấu

Trong khoa học máy tính hoặc công nghệ máy tính, một ký tự là một đơn vị thông tin. Những ký tự này tương ứng với biểu đồ, đơn vị cơ bản của ngôn ngữ viết hoặc in. Trước khi Unicode được sử dụng, có một mối quan hệ 1-1 giữa byte và ký tự, tôi. e. , mọi ký tự - của một biến thể quốc gia, tôi. e. không phải tất cả các ký tự trên thế giới - được biểu thị bằng một byte đơn. Một byte ký tự như vậy đại diện cho khái niệm logic của ký tự này và lớp biểu đồ của ký tự này. Hình ảnh trên mô tả các cách thể hiện khác nhau của chữ "A", tôi. e. , "A" trong các phông chữ khác nhau. Vì vậy, trong in ấn, có nhiều biểu diễn đồ họa khác nhau hoặc "mã hóa" khác nhau của khái niệm trừu tượng về chữ A. [Nhân tiện, chữ "A" có thể được gán cho một chữ tượng hình Ai Cập với hình tượng con bò. ] Tất cả các biểu diễn đồ họa này có một số tính năng chung. Nói cách khác, ý nghĩa của một ký tự hoặc một văn bản được viết hoặc in không phụ thuộc vào phông chữ hoặc kiểu viết được sử dụng. Trên máy tính, chữ A được mã hóa ở dạng nhị phân. Nếu chúng ta sử dụng ASCII thì nó được mã hóa - giống như tất cả các ký tự khác - dưới dạng byte 65

ASCII bị giới hạn ở 128 ký tự và "ASCII mở rộng" vẫn bị giới hạn ở 256 byte hoặc ký tự. Điều này đủ tốt cho các ngôn ngữ như tiếng Anh, tiếng Đức và tiếng Pháp, nhưng vẫn chưa đủ cho tiếng Trung, tiếng Nhật và tiếng Hàn. Đó là nơi Unicode tham gia vào trò chơi. Unicode là một tiêu chuẩn được thiết kế để đại diện cho mọi ký tự từ mọi ngôn ngữ, tôi. e. , nó có thể xử lý bất kỳ văn bản nào của hệ thống chữ viết trên thế giới. Những hệ thống chữ viết này cũng có thể được sử dụng đồng thời, tôi. e. , bảng chữ cái La Mã trộn lẫn với ký tự Cyrillic hoặc thậm chí là Trung Quốc

Có một câu chuyện khác về Unicode. Một ký tự ánh xạ tới một điểm mã. Một điểm mã là một khái niệm lý thuyết. Ví dụ, ký tự "A" được gán một điểm mã U+0041. "U+" có nghĩa là "Unicode" và "0041" là một số thập lục phân, 65 trong ký hiệu thập phân

Bạn có thể chuyển đổi nó như thế này trong Python

x = 42
print[x]
8

ĐẦU RA

x = 42
print[x]
9

42
0

ĐẦU RA

42
1

Có thể có tối đa bốn byte cho mỗi ký tự trong Unicode. Về mặt lý thuyết, điều này có nghĩa là một số lượng lớn 4294967296 ký tự có thể. Do các hạn chế từ mã hóa UTF-16, "chỉ" có thể có 1.112.064 ký tự. Phiên bản Unicode 8. 0 đã gán 120.737 ký tự. Điều này có nghĩa là có hơn 10 % tất cả các ký tự có thể được gán một chút, nói cách khác, chúng ta vẫn có thể thêm gần một triệu ký tự vào Unicode

Đào tạo Python trực tiếp

Thưởng thức trang này?

Nhìn thấy. Tổng quan về các khóa học Python trực tiếp

đăng ký tại đây

Mã hóa Unicode

TênMô tảUTF-32Đó là mã hóa một đối một, tôi. e. , nó lấy từng ký tự Unicode [số 4 byte] và lưu trữ nó trong 4 byte. Một ưu điểm của mã hóa này là bạn có thể tìm thấy ký tự thứ N của một chuỗi trong thời gian tuyến tính, bởi vì ký tự thứ N bắt đầu ở byte thứ 4×N. Nhược điểm nghiêm trọng của phương pháp này là do nó cần bốn byte cho mỗi ký tự. UTF-16UTF-16 [Định dạng chuyển đổi Unicode 16 bit] là mã hóa ký tự có khả năng mã hóa tất cả 1.112.064 điểm mã hợp lệ của Unicode. Mã hóa có độ dài thay đổi, vì các điểm mã được mã hóa bằng một hoặc hai đơn vị mã 16 bit. UTF-8UTF8 là hệ thống mã hóa có độ dài thay đổi cho Unicode, tôi. e. , các ký tự khác nhau chiếm số lượng byte khác nhau. Các ký tự ASCII chỉ sử dụng một byte cho mỗi ký tự. Điều này có nghĩa là 128 ký tự đầu tiên UTF-8 không thể phân biệt được với ASCII. Nhưng cái gọi là ký tự "Tiếng Latinh mở rộng" như Umlaute ä, ö, v.v. chiếm hai byte. Ký tự tiếng Trung cần ba byte. Cuối cùng, các ký tự rất hiếm khi được sử dụng của "mặt phẳng trung gian" cần bốn byte để được mã hóa bằng UTF-8. W3Techs [Web Technology Surveys] viết rằng "UTF-8 được sử dụng bởi 94. 3% trong số tất cả các trang web có mã hóa ký tự mà chúng tôi biết. "

Chuỗi, Unicode và Python

Sau phần giới thiệu dài nhưng cần thiết này, cuối cùng chúng ta cũng đến với Python và cách nó xử lý các chuỗi. Tất cả các chuỗi trong Python 3 là các chuỗi ký tự Unicode "thuần túy", không có mã hóa cụ thể như UTF-8

Có nhiều cách khác nhau để xác định chuỗi trong Python

42
2

Cả s và s2 của ví dụ trước đều là các biến tham chiếu đến các đối tượng chuỗi. Chúng ta có thể thấy rằng các chuỗi ký tự có thể được đặt trong dấu nháy đơn ['] phù hợp hoặc trong dấu ngoặc kép ["]. Dấu nháy đơn sẽ phải được thoát bằng dấu gạch chéo ngược

x = 42;
y = 42;
20, nếu chuỗi được xác định bằng dấu nháy đơn

42
3

Điều này là không cần thiết, nếu chuỗi được biểu thị bằng dấu ngoặc kép

42
4

Tương tự, chúng ta sẽ phải thoát khỏi một trích dẫn kép bên trong một chuỗi trích dẫn kép

42
5

ĐẦU RA

42
6

Chúng cũng có thể được đặt trong các nhóm phù hợp gồm ba dấu nháy đơn hoặc kép. Trong trường hợp này, chúng được gọi là chuỗi trích dẫn ba lần. Ký tự dấu gạch chéo ngược [] được sử dụng để thoát khỏi các ký tự có ý nghĩa đặc biệt, chẳng hạn như xuống dòng, chính dấu gạch chéo ngược hoặc ký tự trích dẫn

42
7

Trong các chuỗi có dấu ngoặc kép, các dòng mới và dấu ngoặc kép không thoát được cho phép [và được giữ lại], ngoại trừ ba dấu ngoặc kép không thoát liên tiếp sẽ kết thúc chuỗi. ["quote" là ký tự dùng để mở chuỗi, tôi. e. , ' hoặc ". ]

Chuỗi trong Python bao gồm một chuỗi hoặc chuỗi ký tự - chữ cái, số và ký tự đặc biệt. Các chuỗi có thể được đăng ký hoặc lập chỉ mục. Tương tự như C, ký tự đầu tiên của chuỗi có chỉ số 0

42
8

ĐẦU RA

42
9

x = "Now x references a string"
print[x]
0

ĐẦU RA

x = "Now x references a string"
print[x]
1

Ký tự cuối cùng của một chuỗi có thể được truy cập theo cách này

x = "Now x references a string"
print[x]
2

ĐẦU RA

x = "Now x references a string"
print[x]
3

Tuy nhiên, có một cách dễ dàng hơn trong Python. Ký tự cuối cùng có thể được truy cập bằng -1, ký tự thứ hai đến cuối cùng bằng -2, v.v.

x = "Now x references a string"
print[x]
4

ĐẦU RA

x = "Now x references a string"
print[x]
3

x = "Now x references a string"
print[x]
6

ĐẦU RA

x = "Now x references a string"
print[x]
7

Một số độc giả có thể thấy khó hiểu khi chúng tôi sử dụng "to subscript" như một từ đồng nghĩa với "to index". Thông thường, chỉ số dưới là một số, hình, ký hiệu hoặc chỉ báo nhỏ hơn dòng loại thông thường và được đặt bên dưới hoặc bên trên nó một chút. Khi chúng ta viết s[0] hoặc s[3] trong các ví dụ trước, đây có thể được coi là một cách thay thế cho ký hiệu s0 hoặc s3. Vì vậy, cả s3 và s[3] đều mô tả hoặc biểu thị ký tự thứ 4. Nhân tiện, không có kiểu ký tự trong Python. Một ký tự chỉ đơn giản là một chuỗi có kích thước một

Có thể bắt đầu đếm các chỉ số từ bên phải, như chúng tôi đã đề cập trước đây. Trong trường hợp này, các số âm được sử dụng, bắt đầu bằng -1 cho ký tự bên phải nhất

Một số toán tử và hàm cho chuỗi

x = "Now x references a string"
print[x]
8

Các chuỗi có thể được dán lại với nhau [nối] với toán tử +. "Xin chào" + "Thế giới" sẽ dẫn đến "Xin chào Thế giới"

x = "Now x references a string"
print[x]
9

Chuỗi có thể được lặp lại hoặc nối nhiều lần với toán tử dấu hoa thị "". "-" 3 sẽ dẫn đến "---"

x = 42;
y = 42;
00

"Python"[0] sẽ dẫn đến "P"

x = 42;
y = 42;
01

Các chuỗi con có thể được tạo bằng ký hiệu lát hoặc cắt, tôi. e. , hai chỉ số trong ngoặc vuông cách nhau bởi dấu hai chấm. "Trăn"[2. 4] sẽ dẫn đến "th"

x = 42;
y = 42;
02

len["Python"] sẽ cho kết quả là 6

Đào tạo Python trực tiếp

Thưởng thức trang này?

Nhìn thấy. Tổng quan về các khóa học Python trực tiếp

đăng ký tại đây

Chuỗi bất biến

Giống như chuỗi trong Java và không giống như C hay C++, chuỗi Python không thể thay đổi. Cố gắng thay đổi vị trí được lập chỉ mục sẽ gây ra lỗi

x = 42;
y = 42;
03

ĐẦU RA

x = 42;
y = 42;
04

Những người mới bắt đầu học Python thường bối rối khi nhìn thấy các dòng mã sau

x = 42;
y = 42;
05

Biến "txt" là tham chiếu đến đối tượng chuỗi. Chúng tôi định nghĩa một đối tượng chuỗi hoàn toàn mới trong nhiệm vụ thứ hai. Vì vậy, bạn không nên nhầm lẫn tên biến với đối tượng được tham chiếu

Một chuỗi đặc thù

Các chuỗi hiển thị một hiệu ứng đặc biệt, chúng tôi sẽ minh họa trong ví dụ sau. Chúng ta sẽ cần toán tử "is". Nếu cả a và b đều là chuỗi, "a is b" kiểm tra xem chúng có cùng một danh tính không, i. e. , chia sẻ cùng một vị trí bộ nhớ. Nếu "a là b" là Đúng, thì theo lẽ thường, "a == b" cũng phải là Đúng. Tuy nhiên, "a == b" Đúng không có nghĩa là "a là b" cũng đúng

Hãy xem cách các chuỗi được lưu trữ trong Python

x = 42;
y = 42;
06

ĐẦU RA

x = 42;
y = 42;
07

Được rồi, nhưng điều gì sẽ xảy ra, nếu các chuỗi dài hơn? . Đó là một ngôi làng nhỏ với khoảng 3000 cư dân ở phía Nam của đảo Anglesey ở Tây Bắc xứ Wales

x = 42;
y = 42;
08

ĐẦU RA

x = 42;
y = 42;
07

Không có gì thay đổi trong ví dụ "Linux" đầu tiên của chúng tôi. Nhưng những gì hiệu quả với xứ Wales lại không hiệu quả. g. , cho Baden-Württemberg ở Đức

x = 42;
y = 42;
10

ĐẦU RA

x = 42;
y = 42;
11

x = 42;
y = 42;
12

ĐẦU RA

x = 42;
y = 42;
07

Bạn nói đúng, nó không liên quan gì đến vị trí địa lý. Nhân vật đặc biệt, tôi. e. , dấu gạch nối, là để "đổ lỗi"

x = 42;
y = 42;
14

ĐẦU RA

x = 42;
y = 42;
11

x = 42;
y = 42;
16

ĐẦU RA

x = 42;
y = 42;
07

Đào tạo Python trực tiếp

Thưởng thức trang này?

Nhìn thấy. Tổng quan về các khóa học Python trực tiếp

đăng ký tại đây

Trình tự thoát trong chuỗi

Để kết thúc phần trình bày về chuỗi trong chương này, chúng tôi sẽ giới thiệu một số ký tự thoát và trình tự. Ký tự dấu gạch chéo ngược [] được sử dụng để thoát khỏi các ký tự, i. e. , để "thoát khỏi" ý nghĩa đặc biệt, mà nếu không thì ký tự này sẽ có. Ví dụ cho các ký tự như vậy là dòng mới, dấu gạch chéo ngược hoặc ký tự trích dẫn. Các chuỗi ký tự có thể tùy chọn được bắt đầu bằng một chữ cái 'r' hoặc 'R'; . Các chuỗi thô sử dụng các quy tắc khác nhau để giải thích các chuỗi thoát dấu gạch chéo ngược

Escape SequenceMeaning\newlineIgnored\\Dấu gạch chéo ngược [\]\'Trích dẫn đơn [']\"Trích dẫn kép ["]\aASCII Bell [BEL]\bASCII Backspace[BS]\fASCII Formfeed [FF]\nASCII Linefeed [LF]\N

chuỗi byte

Trăn 3. 0 sử dụng các khái niệm về văn bản và dữ liệu [nhị phân] thay vì chuỗi Unicode và chuỗi 8 bit. Mỗi chuỗi hoặc văn bản trong Python 3 là Unicode, nhưng Unicode được mã hóa được biểu thị dưới dạng dữ liệu nhị phân. Loại dùng để chứa văn bản là str, loại dùng để chứa dữ liệu là byte. Không thể trộn văn bản và dữ liệu trong Python 3; . Trong khi đối tượng chuỗi chứa một chuỗi ký tự [bằng Unicode], thì đối tượng bytes chứa chuỗi byte, nằm ngoài phạm vi từ 0 đến 255, biểu thị các giá trị ASCII. Xác định các đối tượng byte và chuyển chúng thành chuỗi

Chủ Đề