Hướng dẫn how many characters can a string have in python? - một chuỗi có thể có bao nhiêu ký tự trong python?

9 nhân vật nhóm trên hệ thống 64 bit trên CPython 3.10.

Đó chỉ là khi chuỗi của bạn chỉ được tạo thành từ các ký tự ASCII. Độ dài tối đa có thể nhỏ hơn tùy thuộc vào những ký tự mà chuỗi chứa do cách CPython thực hiện các chuỗi:

  • 9,223,372,036,854,775,758 ký tự nếu chuỗi của bạn chỉ có các ký tự ASCII (
    /* Largest positive value of type Py_ssize_t. */
    #define PY_SSIZE_T_MAX ((Py_ssize_t)(((size_t)-1)>>1))
    
    7 đến
    /* Largest positive value of type Py_ssize_t. */
    #define PY_SSIZE_T_MAX ((Py_ssize_t)(((size_t)-1)>>1))
    
    8) hoặc
  • 9,223,372,036,854,775,734 ký tự nếu chuỗi của bạn chỉ có ký tự và ký tự ASCII từ khối Unicode bổ sung Latin-1 (
    /* Largest positive value of type Py_ssize_t. */
    #define PY_SSIZE_T_MAX ((Py_ssize_t)(((size_t)-1)>>1))
    
    9 đến
        struct_size = sizeof(PyCompactUnicodeObject);
        if (maxchar < 128) {
            // [...]
            struct_size = sizeof(PyASCIIObject);
        }
    
    0) hoặc
  • 4.611.686,018,427,387,866 ký tự nếu chuỗi của bạn chỉ chứa các ký tự trong mặt phẳng đa ngôn ngữ cơ bản (ví dụ: nếu nó chứa các chữ cái cyrillic nhưng không có cảm xúc, tức là
        struct_size = sizeof(PyCompactUnicodeObject);
        if (maxchar < 128) {
            // [...]
            struct_size = sizeof(PyASCIIObject);
        }
    
    1 đến
        struct_size = sizeof(PyCompactUnicodeObject);
        if (maxchar < 128) {
            // [...]
            struct_size = sizeof(PyASCIIObject);
        }
    
    2) hoặc
  • 2.305.843.009.213.693.932 ký tự nếu chuỗi của bạn có thể chứa ít nhất một biểu tượng cảm xúc (chính thức hơn, nếu nó có thể chứa một ký tự bên ngoài mặt phẳng đa ngôn ngữ cơ bản, tức là
        struct_size = sizeof(PyCompactUnicodeObject);
        if (maxchar < 128) {
            // [...]
            struct_size = sizeof(PyASCIIObject);
        }
    
    3 trở lên)

Trên một hệ thống 32 bit, khoảng 2 tỷ hoặc 500 triệu ký tự. Nếu bạn không biết bạn đang sử dụng hệ thống 64 bit hay 32 bit hay điều đó có nghĩa là gì, có lẽ bạn đang sử dụng hệ thống 64 bit.


Chuỗi Python có chiều dài-prefix, do đó chiều dài của chúng bị giới hạn bởi kích thước của số nguyên giữ chiều dài của chúng và lượng bộ nhớ có sẵn trên hệ thống của bạn. Kể từ PEP 353, Python sử dụng

    struct_size = sizeof(PyCompactUnicodeObject);
    if (maxchar < 128) {
        // [...]
        struct_size = sizeof(PyASCIIObject);
    }
4 làm loại dữ liệu để lưu trữ độ dài của container.
    struct_size = sizeof(PyCompactUnicodeObject);
    if (maxchar < 128) {
        // [...]
        struct_size = sizeof(PyASCIIObject);
    }
4 được định nghĩa là cùng kích thước với
    struct_size = sizeof(PyCompactUnicodeObject);
    if (maxchar < 128) {
        // [...]
        struct_size = sizeof(PyASCIIObject);
    }
6 của trình biên dịch nhưng đã ký. Trên hệ thống 64 bit,
    struct_size = sizeof(PyCompactUnicodeObject);
    if (maxchar < 128) {
        // [...]
        struct_size = sizeof(PyASCIIObject);
    }
6 là 64. 1 bit cho dấu hiệu có nghĩa là bạn có 63 bit cho số lượng thực tế, có nghĩa là chuỗi cpython không thể lớn hơn 2⁶³ - 1 byte hoặc khoảng 9 triệu TB (8EIB). RAM này sẽ tiêu tốn của bạn khoảng 40 tỷ đô la nếu chúng tôi nhân giá hôm nay khoảng 4 đô la/GB thêm 9 tỷ. Trên các hệ thống 32 bit (rất hiếm trong những ngày này), nó là 2³¹ - 1 byte hoặc 2GIB.2⁶³ - 1 bytes or around 9 million TB (8EiB). This much RAM would cost you around 40 billion dollars if we multiply today's price of around $4/GB by 9 billion. On 32-bit systems (which are rare these days), it's 2³¹ - 1 bytes or 2GiB.

CPython sẽ sử dụng 1, 2 hoặc 4 byte trên mỗi ký tự, tùy thuộc vào số lượng byte cần mã hóa ký tự "dài nhất" trong chuỗi của bạn. Vì vậy, ví dụ nếu bạn có một chuỗi như

    struct_size = sizeof(PyCompactUnicodeObject);
    if (maxchar < 128) {
        // [...]
        struct_size = sizeof(PyASCIIObject);
    }
8, thì mỗi người sẽ lấy 1 byte để lưu trữ, nhưng nếu bạn có một chuỗi như
>>> ((2**63 - 1) - 72) // 4 - 1
2305843009213693932
0 thì tất cả các ____ 29 sẽ mất 4 byte. Các chuỗi 1 byte-per-saracter cũng sẽ sử dụng 48 hoặc 72 byte siêu dữ liệu và 2 hoặc 4 byte trên mỗi ký tự sẽ lấy 72 byte cho siêu dữ liệu. Mỗi chuỗi cũng có một ký tự phụ ở cuối để chấm dứt null, vì vậy chuỗi trống thực sự là 49 byte.

Khi bạn phân bổ một chuỗi với

>>> ((2**63 - 1) - 72) // 4 - 1
2305843009213693932
2 (xem tài liệu) trong CPython, nó sẽ thực hiện kiểm tra này:

    /* Ensure we won't overflow the size. */
    // [...]
    if (size > ((PY_SSIZE_T_MAX - struct_size) / char_size - 1))
        return PyErr_NoMemory();

>>> ((2**63 - 1) - 72) // 4 - 1
2305843009213693932
3 ở đâu

/* Largest positive value of type Py_ssize_t. */
#define PY_SSIZE_T_MAX ((Py_ssize_t)(((size_t)-1)>>1))

đang chuyển

>>> ((2**63 - 1) - 72) // 4 - 1
2305843009213693932
4 vào
    struct_size = sizeof(PyCompactUnicodeObject);
    if (maxchar < 128) {
        // [...]
        struct_size = sizeof(PyASCIIObject);
    }
6 (một loại được xác định bởi trình biên dịch C, một số nguyên không dấu 64 bit trên hệ thống 64 bit) khiến nó quấn quanh giá trị lớn nhất có thể của nó, 2⁶⁴-1 và sau đó chuyển đổi nó bằng 1 ( do đó, bit dấu là
>>> ((2**63 - 1) - 72) // 4 - 1
2305843009213693932
6) khiến nó trở thành 2⁶³-1 và chuyển nó thành loại
    struct_size = sizeof(PyCompactUnicodeObject);
    if (maxchar < 128) {
        // [...]
        struct_size = sizeof(PyASCIIObject);
    }
4.

>>> ((2**63 - 1) - 72) // 4 - 1
2305843009213693932
8 chỉ là một chút chi phí cho siêu dữ liệu của đối tượng
>>> ((2**63 - 1) - 72) // 4 - 1
2305843009213693932
9, 48 hoặc 72, nó được đặt sớm hơn trong hàm

    struct_size = sizeof(PyCompactUnicodeObject);
    if (maxchar < 128) {
        // [...]
        struct_size = sizeof(PyASCIIObject);
    }

s = 'abcde'

print(len(s))
# 5
0 là 1, 2 hoặc 4 và vì vậy chúng tôi có

>>> ((2**63 - 1) - 72) // 4 - 1
2305843009213693932

Tất nhiên có khả năng các chuỗi Python thực tế bị giới hạn bởi một số phần khác của Python mà tôi không biết, nhưng ít nhất bạn có thể phân bổ một chuỗi mới có kích thước đó, giả sử bạn có thể lấy tay vào 9 exabyte của ram.

Trong Python, bạn có thể nhận được độ dài của chuỗi

>>> ((2**63 - 1) - 72) // 4 - 1
2305843009213693932
9 (= số lượng ký tự) với hàm tích hợp
s = 'abcde'

print(len(s))
# 5
2.

  • Chức năng tích hợp - Len () - Tài liệu Python 3.9.7

Bài viết này mô tả các nội dung sau đây.

  • Nhận độ dài của một chuỗi (số lượng ký tự) với
    s = 'abcde'
    
    print(len(s))
    # 5
    
    2
  • Ký tự toàn chiều rộng và nửa chiều rộng
  • Trình tự thoát và các nhân vật đặc biệt
  • Dòng phá vỡ

Xem bài viết sau đây để sử dụng

s = 'abcde'

print(len(s))
# 5
2 cho các loại khác như
s = 'abcde'

print(len(s))
# 5
5.

  • Cách sử dụng Len () trong Python

Nhận độ dài của một chuỗi (số lượng ký tự) với s = 'abcde' print(len(s)) # 5 2

Ký tự toàn chiều rộng và nửa chiều rộng

s = 'abcde'

print(len(s))
# 5

Ký tự toàn chiều rộng và nửa chiều rộng

Trình tự thoát và các nhân vật đặc biệt

s = 'あいうえお'

print(len(s))
# 5

s = 'abcdeあいうえお'

print(len(s))
# 10

Trình tự thoát và các nhân vật đặc biệt

Dòng phá vỡ

Xem bài viết sau đây để sử dụng

s = 'abcde'

print(len(s))
# 5
2 cho các loại khác như
s = 'abcde'

print(len(s))
# 5
5.

s = 'a\tb\\c'
print(s)
# a b\c

print(len(s))
# 5

Cách sử dụng Len () trong Python

  • Bằng cách chuyển một chuỗi vào hàm tích hợp
    s = 'abcde'
    
    print(len(s))
    # 5
    
    2, độ dài của nó (số lượng ký tự) được trả về dưới dạng giá trị số nguyên.

s = r'a\tb\\c'
print(s)
# a\tb\\c

print(len(s))
# 7

Cả hai ký tự toàn chiều rộng và nửa chiều rộng đều được coi là một ký tự (chiều dài: 1).

s = '\u3042\u3044\u3046'
print(s)
# あいう

print(len(s))
# 3

Trong Python, các ký tự đặc biệt như Tab được thể hiện bằng dấu gạch chéo ngược, như

s = 'abcde'

print(len(s))
# 5
8. Bản thân dấu gạch chéo ngược được đại diện bởi
s = 'abcde'

print(len(s))
# 5
9.

s = r'\u3042\u3044\u3046'
print(s)
# \u3042\u3044\u3046

print(len(s))
# 18

Dòng phá vỡ

Xem bài viết sau đây để sử dụng

s = 'abcde'

print(len(s))
# 5
2 cho các loại khác như
s = 'abcde'

print(len(s))
# 5
5.

/* Largest positive value of type Py_ssize_t. */
#define PY_SSIZE_T_MAX ((Py_ssize_t)(((size_t)-1)>>1))
0

Cách sử dụng Len () trong Python

/* Largest positive value of type Py_ssize_t. */
#define PY_SSIZE_T_MAX ((Py_ssize_t)(((size_t)-1)>>1))
1

Bằng cách chuyển một chuỗi vào hàm tích hợp

s = 'abcde'

print(len(s))
# 5
2, độ dài của nó (số lượng ký tự) được trả về dưới dạng giá trị số nguyên.

/* Largest positive value of type Py_ssize_t. */
#define PY_SSIZE_T_MAX ((Py_ssize_t)(((size_t)-1)>>1))
2

Cả hai ký tự toàn chiều rộng và nửa chiều rộng đều được coi là một ký tự (chiều dài: 1).

  • Trong Python, các ký tự đặc biệt như Tab được thể hiện bằng dấu gạch chéo ngược, như
    s = 'abcde'
    
    print(len(s))
    # 5
    
    8. Bản thân dấu gạch chéo ngược được đại diện bởi
    s = 'abcde'
    
    print(len(s))
    # 5
    
    9.

/* Largest positive value of type Py_ssize_t. */
#define PY_SSIZE_T_MAX ((Py_ssize_t)(((size_t)-1)>>1))
3

Những ký tự đặc biệt này như

s = 'abcde'

print(len(s))
# 5
8 và
s = 'abcde'

print(len(s))
# 5
9 được coi là một ký tự duy nhất.

/* Largest positive value of type Py_ssize_t. */
#define PY_SSIZE_T_MAX ((Py_ssize_t)(((size_t)-1)>>1))
4

Trong các chuỗi thô nơi các chuỗi thoát không được đối xử đặc biệt, chuỗi được xử lý vì nó không được hiểu là ký tự đặc biệt. Số lượng ký tự cũng được tính như là.

  • Dây thô trong Python

/* Largest positive value of type Py_ssize_t. */
#define PY_SSIZE_T_MAX ((Py_ssize_t)(((size_t)-1)>>1))
5

Ngoài ra, chuỗi thoát Unicode

s = 'あいうえお'

print(len(s))
# 5

s = 'abcdeあいうえお'

print(len(s))
# 10
2 được coi là một ký tự duy nhất.

Trình tự thoát Unicode cũng không được xử lý đặc biệt trong các chuỗi thô.

/* Largest positive value of type Py_ssize_t. */
#define PY_SSIZE_T_MAX ((Py_ssize_t)(((size_t)-1)>>1))
6

s = 'あいうえお'

print(len(s))
# 5

s = 'abcdeあいうえお'

print(len(s))
# 10
3 (LF: Feed Line) cũng được coi là một ký tự duy nhất.

  • Lưu ý rằng nếu
    s = 'あいうえお'
    
    print(len(s))
    # 5
    
    s = 'abcdeあいうえお'
    
    print(len(s))
    # 10
    
    4 (CR: Trở lại vận chuyển + LF: Nguồn cấp dữ liệu) được sử dụng, nó được tính là hai ký tự,
    s = 'あいうえお'
    
    print(len(s))
    # 5
    
    s = 'abcdeあいうえお'
    
    print(len(s))
    # 10
    
    5 và
    s = 'あいうえお'
    
    print(len(s))
    # 5
    
    s = 'abcdeあいうえお'
    
    print(len(s))
    # 10
    
    3.

Một chuỗi có thể giữ Python bao nhiêu ký tự?

Một chuỗi có độ dài thay đổi có thể chứa tới khoảng 2 tỷ (2^31) ký tự.Một chuỗi có độ dài cố định có thể chứa 1 đến khoảng 64 K (2^16) ký tự.Một chuỗi có độ dài cố định công khai không thể được sử dụng trong một mô-đun lớp.. A fixed-length string can contain 1 to approximately 64 K (2^16) characters. A Public fixed-length string can't be used in a class module.

Một chuỗi có thể có bao nhiêu ký tự?

Do đó, độ dài tối đa của chuỗi trong Java là 0 đến 2147483647. Vì vậy, chúng ta có thể có một chuỗi với độ dài 2.147.483.647 ký tự, về mặt lý thuyết.0 to 2147483647. So, we can have a String with the length of 2,147,483,647 characters, theoretically.

Làm thế nào lớn là một chuỗi trong Python?

Để tính độ dài của một chuỗi trong Python, bạn có thể sử dụng phương thức Len () tích hợp.Nó lấy một chuỗi làm tham số và trả về một số nguyên làm độ dài của chuỗi đó.Ví dụ, Len (giáo dục của người Hồi giáo) sẽ trở lại 9 vì có 9 ký tự trong giáo dục giáo dục.use the built-in len() method. It takes a string as a parameter and returns an integer as the length of that string. For example, len(“educative”) will return 9 because there are 9 characters in “educative”.

Độ dài tối đa của Python là bao nhiêu?

Độ dài tối đa có thể của một định danh trong ngôn ngữ Python là 79 ký tự.Python là một ngôn ngữ nhạy cảm trường hợp thu thập chất thải.Khi viết mã bằng định danh trong Python, bạn chỉ có thể sử dụng tối đa 79 ký tự.79 characters. Python is a case-sensitive language that collects waste. When writing code using an identifier in Python, you can only use a maximum of 79 characters.