Python vượt qua một chuỗi bằng cách tham chiếu. Lưu ý rằng hai chuỗi có cùng nội dung được coi là giống hệt nhau:does pass a string by reference. Notice that two strings with the same content are considered identical:
a = 'hello'
b = 'hello'
a is b # True
Vì khi B được gán bởi một giá trị và giá trị đã tồn tại trong bộ nhớ, nó sử dụng cùng một tham chiếu của chuỗi. Lưu ý một thực tế khác, rằng nếu chuỗi được tạo động, có nghĩa là được tạo với các hoạt động chuỗi [tức là nối], biến mới sẽ tham chiếu một thể hiện mới của cùng một chuỗi:
c = 'hello'
d = 'he'
d += 'llo'
c is d # False
Điều đó đang được nói, việc tạo một chuỗi mới sẽ phân bổ một chuỗi mới trong bộ nhớ và trả về một tham chiếu cho chuỗi mới, nhưng sử dụng một chuỗi hiện đang được tạo sẽ sử dụng lại cùng một thể hiện chuỗi. Do đó, việc truyền một chuỗi dưới dạng tham số hàm sẽ chuyển nó bằng tham chiếu hoặc nói cách khác, sẽ chuyển địa chỉ trong bộ nhớ của chuỗi.will pass it by reference, or in other words, will pass the address in memory of the string.
Và bây giờ đến mức bạn đang tìm kiếm- nếu bạn thay đổi chuỗi bên trong hàm, chuỗi bên ngoài hàm sẽ vẫn giữ nguyên và điều đó bắt nguồn từ tính bất biến chuỗi. Thay đổi một chuỗi có nghĩa là phân bổ một chuỗi mới trong bộ nhớ.
a = 'a'
b = a # b will hold a reference to string a
a += 'a'
a is b # False
Điểm mấu chốt:
Bạn không thể thực sự thay đổi một chuỗi. Giống như đối với có thể mọi ngôn ngữ lập trình khác [nhưng đừng trích dẫn tôi]. Khi bạn vượt qua chuỗi như một đối số, bạn vượt qua một tham chiếu. Khi bạn thay đổi giá trị của nó, bạn thay đổi biến thành một vị trí khác trong bộ nhớ. Nhưng khi bạn thay đổi tham chiếu của một biến, các biến khác trỏ đến cùng một địa chỉ sẽ tự nhiên giữ giá trị cũ [tham chiếu] mà chúng giữ. Ước gì giải thích đủ rõ ràng
\ [\ newcommand {l} [1] {\ | #1 \ |} \ newcommand {vl} [1] {\ l {\ vec Re} \, [#1]} \ newCommand {i} [1] {\ operatorName {im} \, [#1]} \]
Tùy chọn 1 - Phương thức chuỗi ____10
Bạn có thể sử dụng phương thức Chuỗi
c = 'hello'
d = 'he'
d += 'llo'
c is d # False
0 để tạo các chuỗi mới với các giá trị được chèn. Phương pháp này hoạt động cho tất cả các bản phát hành hiện tại của Python. Ở đây chúng tôi chèn một chuỗi vào một chuỗi khác:>>> shepherd = "Mary" >>> string_in_string = "Shepherd {} is on duty.".format[shepherd] >>> print[string_in_string] Shepherd Mary is on duty.
Các niềng răng xoăn cho thấy giá trị chèn nên đi.
Bạn có thể chèn nhiều hơn một giá trị. Các giá trị không phải là chuỗi, chúng có thể là số và các đối tượng Python khác.
>>> shepherd = "Mary" >>> age = 32 >>> stuff_in_string = "Shepherd {} is {} years old.".format[shepherd, age] >>> print[stuff_in_string] Shepherd Mary is 32 years old.
>>> 'Here is a {} floating point number'.format[3.33333] 'Here is a 3.33333 floating point number'
Bạn có thể thực hiện định dạng phức tạp hơn của các số và chuỗi bằng cách sử dụng các tùy chọn định dạng trong dấu ngoặc xoăn - xem tài liệu về định dạng chuỗi giòn xoăn.
Hệ thống này cho phép chúng tôi cung cấp các hướng dẫn định dạng cho những thứ như số, bằng cách sử dụng
c = 'hello'
d = 'he'
d += 'llo'
c is d # False
2 bên trong niềng răng xoăn, theo sau là các hướng dẫn định dạng. Ở đây chúng tôi yêu cầu in bằng số nguyên [c = 'hello'
d = 'he'
d += 'llo'
c is d # False
3] trong đó số lượng cần được chuẩn bị với c = 'hello'
d = 'he'
d += 'llo'
c is d # False
4 để lấp đầy chiều rộng trường của c = 'hello'
d = 'he'
d += 'llo'
c is d # False
5:>>> print["Number {:03d} is here.".format[11]] Number 011 is here.
Điều này in một giá trị điểm nổi [
c = 'hello'
d = 'he'
d += 'llo'
c is d # False
6] với chính xác c = 'hello'
d = 'he'
d += 'llo'
c is d # False
7 chữ số sau điểm thập phân:>>> 'A formatted number - {:.4f}'.format[.2] 'A formatted number - 0.2000'
Xem tài liệu định dạng chuỗi Python để biết thêm chi tiết và ví dụ.
Tùy chọn 2 - F -String trong Python> = 3.6¶
Nếu bạn có thể phụ thuộc vào việc có Python> = Phiên bản 3.6, thì bạn có một tùy chọn hấp dẫn khác, đó là sử dụng cú pháp theo nghĩa đen [F-String] được định dạng mới để chèn các giá trị biến. Một
c = 'hello'
d = 'he'
d += 'llo'
c is d # False
6 khi bắt đầu chuỗi cho Python cho phép bất kỳ tên biến hợp lệ hiện tại làm tên biến trong chuỗi. Ví dụ: đây là một ví dụ như ở trên, sử dụng cú pháp F-String:>>> shepherd = "Martha" >>> age = 34 >>> # Note f before first quote of string >>> stuff_in_string = f"Shepherd {shepherd} is {age} years old." >>> print[stuff_in_string] Shepherd Martha is 34 years old.
Tùy chọn 3 - Định dạng trường học cũ % cũ
Có một phương thức định dạng chuỗi cũ hơn sử dụng toán tử
c = 'hello'
d = 'he'
d += 'llo'
c is d # False
9. Nó kém linh hoạt hơn một chút so với hai tùy chọn khác, nhưng bạn vẫn sẽ thấy nó được sử dụng trong mã cũ hơn và khi sử dụng định dạng c = 'hello'
d = 'he'
d += 'llo'
c is d # False
9 là ngắn gọn hơn.Đối với toán tử
c = 'hello'
d = 'he'
d += 'llo'
c is d # False
9 hình thành, bạn hiển thị nơi các giá trị được chèn sẽ đi bằng ký tự c = 'hello'
d = 'he'
d += 'llo'
c is d # False
9 theo sau là một định dạng định dạng, để nói cách chèn giá trị.Dưới đây là ví dụ trên, sử dụng định dạng
c = 'hello'
d = 'he'
d += 'llo'
c is d # False
9. Lưu ý điểm đánh dấu a = 'a'
b = a # b will hold a reference to string a
a += 'a'
a is b # False
4 để chèn một chuỗi và điểm đánh dấu a = 'a'
b = a # b will hold a reference to string a
a += 'a'
a is b # False
5 để chèn một số nguyên.>>> stuff_in_string = "Shepherd %s is %d years old." % [shepherd, age] >>> print[stuff_in_string] Shepherd Martha is 34 years old.