Hướng dẫn how do you edit a variable in a function python? - làm thế nào để bạn chỉnh sửa một biến trong một hàm python?
Hãy nghĩ về chúng như là một phần của chức năng. Khi hàm kết thúc, tất cả các biến của nó cũng chết. Show
Nếu bạn muốn một hàm để sửa đổi một giá trị theo cách chính xác của bạn đã viết nó, bạn có thể sử dụng # Define three variables at once: count, result, total = 0, 0, 0 # This is equivalent to: count = 0 result = 0 total = 03 nhưng đây là thực tế rất tệ.
Vấn đề với điều này là nó làm cho việc gỡ lỗi một cơn ác mộng trong trường hợp tốt nhất, và hoàn toàn không thể hiểu được trong trường hợp xấu nhất. Những thứ như thế này thường được gọi là "tác dụng phụ" trong các chức năng - thiết lập một giá trị bạn không cần thiết lập và làm như vậy mà không trả lại rõ ràng, đó là một điều xấu. Nói chung, các chức năng duy nhất bạn nên viết để sửa đổi các mục tại chỗ là các phương thức đối tượng (những thứ như # Define three variables at once: count, result, total = 0, 0, 0 # This is equivalent to: count = 0 result = 0 total = 04 sửa đổi danh sách vì thật ngớ ngẩn khi trả về một danh sách mới thay thế!) Cách đúng đắn để làm điều gì đó như thế này là sử dụng giá trị trả về. Hãy thử một cái gì đó như
Tại sao điều đó không hoạt động? Vâng, bởi vì bạn chưa bao giờ nói với chương trình làm bất cứ điều gì với tuple # Define three variables at once: count, result, total = 0, 0, 0 # This is equivalent to: count = 0 result = 0 total = 05 đó, chỉ để tính toán nó. Hãy gán nó ngay bây giờ Biến¶Hãy nhớ lại rằng một biến là một nhãn cho một vị trí trong bộ nhớ. Nó có thể được sử dụng để giữ một giá trị. Trong các ngôn ngữ được gõ tĩnh, các biến có các loại được xác định trước và một biến chỉ có thể được sử dụng để giữ các giá trị của loại đó. Trong Python, chúng tôi có thể sử dụng lại cùng một biến để lưu trữ các giá trị thuộc bất kỳ loại nào. Một biến tương tự như chức năng bộ nhớ được tìm thấy trong hầu hết các máy tính, trong đó nó chứa một giá trị có thể được truy xuất nhiều lần và lưu trữ một giá trị mới xóa cũ. Một biến khác với bộ nhớ của máy tính ở chỗ người ta có thể có nhiều biến lưu trữ các giá trị khác nhau và mỗi biến được đề cập theo tên. Xác định các biếnĐể xác định một biến mới trong Python, chúng tôi chỉ cần gán một giá trị cho một nhãn. Ví dụ: đây là cách chúng tôi tạo một biến có tên là # Define three variables at once: count, result, total = 0, 0, 0 # This is equivalent to: count = 0 result = 0 total = 06, chứa giá trị số nguyên bằng không: Đây chính xác là cùng một cú pháp như gán một giá trị mới cho một biến hiện có được gọi là # Define three variables at once: count, result, total = 0, 0, 0 # This is equivalent to: count = 0 result = 0 total = 06. Sau này trong chương này, chúng tôi sẽ thảo luận trong trường hợp nào mà tuyên bố này sẽ gây ra một biến mới được tạo ra. Nếu chúng tôi cố gắng truy cập giá trị của một biến đã được xác định ở bất cứ đâu, trình thông dịch sẽ thoát với lỗi tên. Chúng ta có thể xác định một số biến trong một dòng, nhưng điều này thường được coi là kiểu xấu: # Define three variables at once: count, result, total = 0, 0, 0 # This is equivalent to: count = 0 result = 0 total = 0 Để phù hợp với phong cách lập trình tốt, chúng ta nên sử dụng các tên có ý nghĩa cho các biến. Phạm vi biến đổi và tuổi thọKhông phải tất cả các biến đều có thể truy cập được từ tất cả các phần của chương trình của chúng tôi và không phải tất cả các biến tồn tại trong cùng một khoảng thời gian. Trường hợp một biến có thể truy cập được và thời gian tồn tại trong bao lâu phụ thuộc vào cách xác định nó. Chúng tôi gọi là một phần của một chương trình trong đó một biến có thể truy cập phạm vi của nó và thời lượng mà biến tồn tại tuổi thọ của nó. Một biến được xác định trong phần thân chính của tệp được gọi là biến toàn cầu. Nó sẽ được hiển thị trong toàn bộ tệp và cả bên trong bất kỳ tệp nào nhập tệp đó. Các biến toàn cầu có thể có những hậu quả không lường trước được vì các hiệu ứng phạm vi rộng của chúng-đó là lý do tại sao chúng ta gần như không bao giờ nên sử dụng chúng. Chỉ các đối tượng được dự định sẽ được sử dụng trên toàn cầu, như các chức năng và các lớp, nên được đặt vào không gian tên toàn cầu. Một biến được xác định bên trong một hàm là cục bộ với hàm đó. Nó có thể truy cập từ điểm mà nó được xác định cho đến khi kết thúc hàm và tồn tại miễn là hàm được thực thi. Các tên tham số trong định nghĩa hàm hoạt động giống như các biến cục bộ, nhưng chúng chứa các giá trị mà chúng ta chuyển vào hàm khi chúng ta gọi nó. Khi chúng tôi sử dụng toán tử gán ( # Define three variables at once: count, result, total = 0, 0, 0 # This is equivalent to: count = 0 result = 0 total = 08) bên trong một hàm, hành vi mặc định của nó là tạo một biến cục bộ mới - trừ khi một biến có cùng tên đã được xác định trong phạm vi cục bộ. Dưới đây là một ví dụ về các biến trong các phạm vi khác nhau: # This is a global variable a = 0 if a == 0: # This is still a global variable b = 1 def my_function(c): # this is a local variable d = 3 print(c) print(d) # Now we call the function, passing the value 7 as the first and only parameter my_function(7) # a and b still exist print(a) print(b) # c and d don't exist anymore -- these statements will give us name errors! print(c) print(d) Ghi chú Bên trong của một cơ thể lớp cũng là một phạm vi biến cục bộ mới. Các biến được xác định trong phần thân lớp (nhưng ngoài bất kỳ phương thức lớp nào) được gọi là thuộc tính lớp. Chúng có thể được tham chiếu bằng tên trần của chúng trong cùng một phạm vi, nhưng chúng cũng có thể được truy cập từ bên ngoài phạm vi này nếu chúng ta sử dụng toán tử truy cập thuộc tính ( # Define three variables at once: count, result, total = 0, 0, 0 # This is equivalent to: count = 0 result = 0 total = 09) trên một lớp hoặc một thể hiện (một đối tượng sử dụng lớp đó làm loại của nó) . Một thuộc tính cũng có thể được đặt rõ ràng trên một thể hiện hoặc lớp từ bên trong một phương thức. Các thuộc tính được đặt trên các phiên bản được gọi là thuộc tính thể hiện. Các thuộc tính lớp được chia sẻ giữa tất cả các trường hợp của một lớp, nhưng mỗi trường hợp có các thuộc tính thể hiện riêng biệt. Chúng tôi sẽ xem xét điều này một cách chi tiết hơn trong chương về các lớp học. Nhà điều hành chuyển nhượngNhư chúng ta đã thấy trong các phần trước, toán tử gán trong Python là một dấu hiệu bằng duy nhất ( # Define three variables at once: count, result, total = 0, 0, 0 # This is equivalent to: count = 0 result = 0 total = 08). Toán tử này gán giá trị ở phía bên phải cho biến ở phía bên trái, đôi khi tạo biến trước. Nếu phía bên tay phải là một biểu thức (chẳng hạn như biểu thức số học), nó sẽ được đánh giá trước khi gán xảy ra. Đây là vài ví dụ: a_number = 5 # a_number becomes 5 a_number = total # a_number becomes the value of total a_number = total + 5 # a_number becomes the value of total + 5 a_number = a_number + 1 # a_number becomes the value of a_number + 1 Câu nói cuối cùng có thể trông hơi lạ nếu chúng ta giải thích # Define three variables at once: count, result, total = 0, 0, 0 # This is equivalent to: count = 0 result = 0 total = 08 dưới dạng dấu hiệu toán học - rõ ràng một số không thể bằng cùng một số cộng với một! Hãy nhớ rằng # Define three variables at once: count, result, total = 0, 0, 0 # This is equivalent to: count = 0 result = 0 total = 08 là một toán tử gán - câu lệnh này đang gán một giá trị mới cho biến # This is a global variable a = 0 if a == 0: # This is still a global variable b = 1 def my_function(c): # this is a local variable d = 3 print(c) print(d) # Now we call the function, passing the value 7 as the first and only parameter my_function(7) # a and b still exist print(a) print(b) # c and d don't exist anymore -- these statements will give us name errors! print(c) print(d)3 bằng với giá trị cũ của # This is a global variable a = 0 if a == 0: # This is still a global variable b = 1 def my_function(c): # this is a local variable d = 3 print(c) print(d) # Now we call the function, passing the value 7 as the first and only parameter my_function(7) # a and b still exist print(a) print(b) # c and d don't exist anymore -- these statements will give us name errors! print(c) print(d)3 cộng với một. Gán một giá trị ban đầu cho biến được gọi là khởi tạo biến. Trong một số ngôn ngữ xác định một biến có thể được thực hiện trong một bước riêng biệt trước khi gán giá trị đầu tiên. Do đó, có thể trong các ngôn ngữ đó để một biến được xác định nhưng không có giá trị - điều này có thể dẫn đến lỗi hoặc hành vi bất ngờ nếu chúng ta cố gắng sử dụng giá trị trước khi nó được gán. Trong Python, một biến được xác định và gán một giá trị trong một bước duy nhất, vì vậy chúng tôi gần như sẽ không bao giờ gặp phải các tình huống như thế này. Phía bên trái của câu lệnh gán phải là mục tiêu hợp lệ: # this is fine: a = 3 # these are all illegal: 3 = 4 3 = a a + b = 3 Một câu lệnh gán có thể có nhiều mục tiêu được phân tách bằng các dấu hiệu bằng. Biểu thức ở phía bên phải của dấu hiệu tương đương cuối cùng sẽ được gán cho tất cả các mục tiêu. Tất cả các mục tiêu phải hợp lệ: # both a and b will be set to zero: a = b = 0 # this is illegal, because we can't set 0 to b: a = 0 = b Người vận hành phân công gộpChúng ta đã thấy rằng chúng ta có thể gán kết quả của một biểu thức số học cho một biến: Đếm là một cái gì đó được thực hiện thường xuyên trong một chương trình. Ví dụ, chúng tôi có thể muốn giữ số lần xảy ra bao nhiêu lần một sự kiện nhất định bằng cách sử dụng một biến gọi là # Define three variables at once: count, result, total = 0, 0, 0 # This is equivalent to: count = 0 result = 0 total = 06. Chúng tôi sẽ khởi tạo biến này về 0 và thêm một vào mỗi khi sự kiện xảy ra. Chúng tôi sẽ thực hiện bổ sung với tuyên bố này: Đây thực tế là một hoạt động rất phổ biến. Python có một toán tử tốc ký, # This is a global variable a = 0 if a == 0: # This is still a global variable b = 1 def my_function(c): # this is a local variable d = 3 print(c) print(d) # Now we call the function, passing the value 7 as the first and only parameter my_function(7) # a and b still exist print(a) print(b) # c and d don't exist anymore -- these statements will give us name errors! print(c) print(d)6, cho phép chúng tôi thể hiện nó sạch sẽ hơn, mà không phải viết tên của biến hai lần: # These statements mean exactly the same thing: count = count + 1 count += 1 # We can increment a variable by any number we like. count += 2 count += 7 count += a + b Có một toán tử tương tự, # This is a global variable a = 0 if a == 0: # This is still a global variable b = 1 def my_function(c): # this is a local variable d = 3 print(c) print(d) # Now we call the function, passing the value 7 as the first and only parameter my_function(7) # a and b still exist print(a) print(b) # c and d don't exist anymore -- these statements will give us name errors! print(c) print(d)7, cho phép chúng tôi giảm số lượng: 0Các toán tử gán hợp chất phổ biến khác được đưa ra trong bảng dưới đây:
Thông tin thêm về phạm vi: Biến ranh giớiĐiều gì sẽ xảy ra nếu chúng ta muốn truy cập một biến toàn cầu từ bên trong một hàm? Có thể, nhưng làm như vậy đi kèm với một vài cảnh báo: 1Câu lệnh in sẽ xuất ra # this is fine: a = 3 # these are all illegal: 3 = 4 3 = a a + b = 33, giá trị của biến toàn cầu # this is fine: a = 3 # these are all illegal: 3 = 4 3 = a a + b = 34, như bạn có thể mong đợi. Nhưng những gì về chương trình này? 2Khi chúng ta gọi hàm, câu lệnh in bên trong đầu ra # this is fine: a = 3 # these are all illegal: 3 = 4 3 = a a + b = 35 - nhưng tại sao câu lệnh in ở cuối đầu ra chương trình # this is fine: a = 3 # these are all illegal: 3 = 4 3 = a a + b = 33? Theo mặc định, câu lệnh gán tạo các biến trong phạm vi cục bộ. Vì vậy, việc gán bên trong hàm không sửa đổi biến toàn cầu # this is fine: a = 3 # these are all illegal: 3 = 4 3 = a a + b = 34 - nó tạo ra một biến cục bộ mới gọi là # this is fine: a = 3 # these are all illegal: 3 = 4 3 = a a + b = 34 và gán giá trị # this is fine: a = 3 # these are all illegal: 3 = 4 3 = a a + b = 35 cho biến đó. Câu lệnh in đầu tiên đưa ra giá trị của biến cục bộ mới - bởi vì nếu một biến cục bộ có cùng tên với biến toàn cầu, biến cục bộ sẽ luôn được ưu tiên. Câu lệnh in cuối cùng in ra biến toàn cầu, vẫn không thay đổi. Điều gì sẽ xảy ra nếu chúng ta thực sự muốn sửa đổi một biến toàn cầu từ bên trong một hàm? Chúng ta có thể sử dụng từ khóa # both a and b will be set to zero: a = b = 0 # this is illegal, because we can't set 0 to b: a = 0 = b0: 3Chúng tôi không được đề cập đến cả biến toàn cầu và biến cục bộ cùng tên bên trong cùng một hàm. Chương trình này sẽ cho chúng tôi một lỗi: 4Bởi vì chúng tôi đã tuyên bố # this is fine: a = 3 # these are all illegal: 3 = 4 3 = a a + b = 34 là toàn cầu, việc chuyển nhượng trong dòng thứ hai của hàm sẽ tạo ra một biến cục bộ # this is fine: a = 3 # these are all illegal: 3 = 4 3 = a a + b = 34. Điều này có nghĩa là chúng ta có thể đề cập đến biến toàn cầu # this is fine: a = 3 # these are all illegal: 3 = 4 3 = a a + b = 34 ở nơi khác trong hàm, ngay cả trước dòng này! Câu lệnh in đầu tiên hiện nay đề cập đến biến cục bộ # this is fine: a = 3 # these are all illegal: 3 = 4 3 = a a + b = 34 - nhưng biến này không có giá trị trong dòng đầu tiên, bởi vì chúng tôi đã chỉ định nó! Lưu ý rằng thường là thực tế rất tệ để truy cập các biến toàn cầu từ các chức năng bên trong và thậm chí thực hành tồi tệ hơn để sửa đổi chúng. Điều này gây khó khăn cho việc sắp xếp chương trình của chúng tôi thành các phần được đóng gói một cách hợp lý không ảnh hưởng đến nhau theo những cách bất ngờ. Nếu một hàm cần truy cập một số giá trị bên ngoài, chúng ta nên truyền giá trị vào hàm dưới dạng tham số. Nếu hàm là phương pháp của một đối tượng, đôi khi phù hợp để biến giá trị thành một thuộc tính của cùng một đối tượng - chúng ta sẽ thảo luận về điều này trong chương về hướng đối tượng. Ghi chú Ngoài ra còn có từ khóa # both a and b will be set to zero: a = b = 0 # this is illegal, because we can't set 0 to b: a = 0 = b5 trong Python - khi chúng ta tổ chức năng bên trong một hàm khác, nó cho phép chúng ta sửa đổi một biến ở hàm bên ngoài từ bên trong hàm bên trong (hoặc, nếu hàm được lồng nhiều lần, một biến trong một trong những biến các chức năng bên ngoài). Nếu chúng tôi sử dụng từ khóa # both a and b will be set to zero: a = b = 0 # this is illegal, because we can't set 0 to b: a = 0 = b0, câu lệnh gán sẽ tạo biến trong phạm vi toàn cầu nếu nó chưa tồn tại. Tuy nhiên, nếu chúng tôi sử dụng từ khóa # both a and b will be set to zero: a = b = 0 # this is illegal, because we can't set 0 to b: a = 0 = b5, biến phải được xác định, bởi vì Python không thể xác định được trong phạm vi nào nó nên được tạo. Bài tập 1¶
Sửa đổi các giá trịHằng số trongTrong một số ngôn ngữ, có thể xác định các biến đặc biệt chỉ có thể được gán một giá trị một lần - một khi giá trị của chúng đã được đặt, chúng không thể thay đổi. Chúng tôi gọi các loại hằng số biến này. Python không cho phép chúng tôi đặt ra một hạn chế như vậy đối với các biến, nhưng có một quy ước được sử dụng rộng rãi để đánh dấu các biến nhất định để chỉ ra rằng giá trị của chúng không có nghĩa là thay đổi: chúng tôi viết tên của chúng trong tất cả các mũ, với các từ ngữ tách biệt: 6Tại sao chúng ta bận tâm xác định các biến mà chúng ta không có ý định thay đổi? Xem xét ví dụ này: 7Có một số lý do tốt để xác định # These statements mean exactly the same thing: count = count + 1 count += 1 # We can increment a variable by any number we like. count += 2 count += 7 count += a + b4 thay vì chỉ viết # These statements mean exactly the same thing: count = count + 1 count += 1 # We can increment a variable by any number we like. count += 2 count += 7 count += a + b5 bên trong câu lệnh in. Đầu tiên, điều này cung cấp cho số một nhãn mô tả giải thích nó là gì - điều này làm cho mã dễ hiểu hơn. Thứ hai, cuối cùng chúng tôi có thể cần phải tham khảo số này trong chương trình của chúng tôi nhiều lần. Nếu chúng ta cần cập nhật mã của mình với giá trị mới cho nhãn hiệu tối đa, chúng ta sẽ chỉ phải thay đổi nó ở một nơi, thay vì tìm mọi nơi được sử dụng-những thay thế đó thường dễ bị lỗi. Các số theo nghĩa đen nằm rải rác trong một chương trình được gọi là Số ma thuật của Hồi giáo - sử dụng chúng được coi là phong cách mã hóa kém. Điều này không áp dụng cho các số nhỏ được coi là tự giải thích-nó dễ hiểu tại sao tổng số được khởi tạo về 0 hoặc tăng bởi một. Đôi khi chúng tôi muốn sử dụng một biến để phân biệt giữa một số tùy chọn riêng biệt. Rất hữu ích khi đề cập đến các giá trị tùy chọn bằng cách sử dụng các hằng số thay vì sử dụng trực tiếp chúng nếu chính các giá trị không có ý nghĩa nội tại: 8Trong ví dụ trên, các giá trị # These statements mean exactly the same thing: count = count + 1 count += 1 # We can increment a variable by any number we like. count += 2 count += 7 count += a + b3, # These statements mean exactly the same thing: count = count + 1 count += 1 # We can increment a variable by any number we like. count += 2 count += 7 count += a + b7 và # this is fine: a = 3 # these are all illegal: 3 = 4 3 = a a + b = 35 không quan trọng - chúng hoàn toàn vô nghĩa. Chúng tôi có thể sử dụng tốt như nhau # These statements mean exactly the same thing: count = count + 1 count += 1 # We can increment a variable by any number we like. count += 2 count += 7 count += a + b9, 00 và 01 hoặc chuỗi 02, 03 và 04. Điều quan trọng duy nhất là ba giá trị phải khác nhau. Nếu chúng ta sử dụng các số trực tiếp thay vì các hằng số, chương trình sẽ khó hiểu hơn nhiều. Sử dụng các chuỗi có ý nghĩa sẽ làm cho mã dễ đọc hơn, nhưng chúng tôi có thể vô tình phạm sai lầm chính tả trong khi đặt một trong các giá trị và không chú ý - nếu chúng tôi đặt tên của một trong các hằng số, chúng tôi có nhiều khả năng gặp lỗi ngay lập tức.Một số thư viện Python xác định các hằng số phổ biến cho sự thuận tiện của chúng tôi, ví dụ: 9Lưu ý rằng nhiều hằng số tích hợp don don tuân theo quy ước đặt tên tất cả các phạm vi. Các loại có thể thay đổi và bất biếnMột số giá trị trong Python có thể được sửa đổi, và một số không thể. Điều này không bao giờ có nghĩa là chúng ta có thể thay đổi giá trị của một biến - nhưng nếu một biến chứa một giá trị của một loại bất biến, chúng ta chỉ có thể gán cho nó một giá trị mới. Chúng ta không thể thay đổi giá trị hiện có theo bất kỳ cách nào. Các số nguyên, số và chuỗi dấu phẩy động đều là các loại bất biến-trong tất cả các ví dụ trước, khi chúng tôi thay đổi các giá trị của các biến hiện tại, chúng tôi đã sử dụng toán tử gán để gán cho chúng các giá trị mới: 0Ngay cả toán tử này cũng không sửa đổi giá trị của 05 tại chỗ-nó cũng gán một giá trị mới:Chúng tôi đã gặp phải bất kỳ loại có thể thay đổi nào, nhưng chúng tôi sẽ sử dụng chúng rộng rãi trong các chương sau. Danh sách và từ điển là có thể thay đổi, và hầu hết các đối tượng mà chúng ta có thể tự viết: 1Thông tin thêm về Input¶Trong các phần trước của đơn vị này, chúng tôi đã học cách tạo chương trình hiển thị thông báo bằng hàm 06 hoặc đọc giá trị chuỗi từ người dùng bằng hàm 07. Điều gì sẽ xảy ra nếu chúng ta muốn người dùng nhập số hoặc các loại biến khác? Chúng tôi vẫn sử dụng hàm 07, nhưng chúng tôi phải chuyển đổi các giá trị chuỗi được trả về bởi 07 thành các loại mà chúng tôi muốn. Đây là một ví dụ đơn giản: 2 10 là một hàm chuyển đổi các giá trị của các loại khác nhau thành INTS. Chúng tôi sẽ thảo luận về chuyển đổi loại chi tiết hơn trong phần tiếp theo, nhưng bây giờ, điều quan trọng là phải biết rằng 10 sẽ không thể chuyển đổi một chuỗi thành một số nguyên nếu nó chứa bất cứ điều gì ngoại trừ các chữ số. Chương trình trên sẽ thoát với lỗi nếu người dùng nhập 12, 13 hoặc thậm chí 14. Khi chúng tôi viết một chương trình dựa trên đầu vào của người dùng, có thể không chính xác, chúng tôi cần thêm một số biện pháp bảo vệ để chúng tôi có thể phục hồi nếu người dùng mắc lỗi. Ví dụ: chúng ta có thể phát hiện xem người dùng đã nhập đầu vào và thoát xấu với thông báo lỗi tốt hơn: 3Chương trình này vẫn sẽ chỉ cố gắng đọc trong đầu vào một lần và thoát nếu nó không chính xác. Nếu chúng tôi muốn tiếp tục yêu cầu người dùng đầu vào cho đến khi đúng, chúng tôi có thể làm điều gì đó như sau: 4Chúng tôi sẽ tìm hiểu thêm về các giá trị, vòng lặp và ngoại lệ Boolean sau này. Ví dụ: Tính toán tiêu thụ xăng của xe hơiTrong ví dụ này, chúng tôi sẽ viết một chương trình đơn giản yêu cầu người dùng cho khoảng cách đi bằng xe hơi và giá trị tiền tệ của xăng được sử dụng để che đi khoảng cách đó. Từ thông tin này, cùng với giá mỗi lít xăng, chương trình sẽ tính toán hiệu quả của chiếc xe, cả hai lít trên 100 km và km mỗi lít. Đầu tiên chúng tôi sẽ định nghĩa giá xăng là một hằng số ở đầu. Điều này sẽ giúp chúng tôi dễ dàng cập nhật giá khi thay đổi vào thứ Tư đầu tiên hàng tháng: 5Khi chương trình bắt đầu, chúng tôi muốn in ra một tin nhắn chào mừng: 6
Hỏi người dùng cho tên của mình: 7Hỏi người dùng cho khoảng cách di chuyển: 8Sau đó hỏi người dùng số tiền đã trả: 9Bây giờ chúng tôi sẽ thực hiện các tính toán: 0Cuối cùng, chúng tôi đưa ra kết quả: 1Bài tập 2¶
Loại chuyển đổiKhi chúng tôi viết nhiều chương trình hơn, chúng tôi thường sẽ thấy rằng chúng tôi cần chuyển đổi dữ liệu từ loại này sang loại khác, ví dụ từ chuỗi sang số nguyên hoặc từ số nguyên sang số điểm nổi. Có hai loại chuyển đổi loại trong Python: chuyển đổi ngầm và rõ ràng. Chuyển đổi ngầmNhớ lại từ phần về các toán tử dấu phẩy động rằng chúng ta có thể tùy ý kết hợp các số nguyên và số điểm nổi trong một biểu thức số học-và kết quả của bất kỳ biểu thức nào như vậy sẽ luôn là một số điểm nổi. Điều này là do Python sẽ chuyển đổi các số nguyên thành số điểm nổi trước khi đánh giá biểu thức. Đây là một chuyển đổi ngầm - chúng tôi không phải tự chuyển đổi bất cứ điều gì. Thường không mất độ chính xác khi một số nguyên được chuyển đổi thành số điểm nổi. Ví dụ: số nguyên # These statements mean exactly the same thing: count = count + 1 count += 1 # We can increment a variable by any number we like. count += 2 count += 7 count += a + b7 sẽ tự động được chuyển đổi thành số điểm nổi trong ví dụ sau: 16 là 17 trong khi # These statements mean exactly the same thing: count = count + 1 count += 1 # We can increment a variable by any number we like. count += 2 count += 7 count += a + b7 là 10. Python sẽ tự động chuyển đổi các toán hạng để chúng cùng loại. Trong trường hợp này, điều này đạt được nếu số nguyên # These statements mean exactly the same thing: count = count + 1 count += 1 # We can increment a variable by any number we like. count += 2 count += 7 count += a + b7 được chuyển đổi thành điểm nổi tương đương 21. Sau đó, hai số điểm nổi có thể được nhân lên.Hãy để một cái nhìn vào một ví dụ phức tạp hơn: 2Python thực hiện các hoạt động theo thứ tự ưu tiên và quyết định xem có cần chuyển đổi trên cơ sở hoạt động hay không. Trong ví dụ 22 của chúng tôi có ưu tiên cao nhất, vì vậy nó sẽ được xử lý trước. 23 và # this is fine: a = 3 # these are all illegal: 3 = 4 3 = a a + b = 35 đều là số nguyên và 22 là toán tử phân chia số nguyên - kết quả của hoạt động này là số nguyên # These statements mean exactly the same thing: count = count + 1 count += 1 # We can increment a variable by any number we like. count += 2 count += 7 count += a + b7. Bây giờ chúng ta còn lại với 27. Việc bổ sung và trừ ở cùng một mức độ ưu tiên, vì vậy chúng được đánh giá từ trái sang phải, bắt đầu bằng việc bổ sung. Đầu tiên # These statements mean exactly the same thing: count = count + 1 count += 1 # We can increment a variable by any number we like. count += 2 count += 7 count += a + b7 được chuyển đổi thành số điểm nổi 21 và hai số điểm nổi được thêm vào, khiến chúng ta với 30. Kết quả của phép trừ điểm nổi này là 21, được gán cho 32.Chuyển đổi rõ ràngChuyển đổi số từ 17 thành 10 sẽ dẫn đến mất độ chính xác. Ví dụ: cố gắng chuyển đổi 35 thành 10 - không thể làm điều này mà không mất độ chính xác. Để điều này xảy ra, chúng ta phải nói rõ ràng rằng Python rằng chúng ta biết rằng độ chính xác sẽ bị mất. Ví dụ: chúng ta cần nói với trình biên dịch để chuyển đổi 17 thành 10 như thế này:Hàm 10 chuyển đổi 17 thành 10 bằng cách loại bỏ phần phân số - nó sẽ luôn làm tròn! Nếu chúng ta muốn kiểm soát nhiều hơn về cách mà số được làm tròn, chúng ta sẽ cần sử dụng một chức năng khác: 3Chuyển đổi rõ ràng đôi khi cũng được gọi là đúc-chúng ta có thể đọc về một 17 được chọn đến 10 hoặc ngược lại.Chuyển đổi đến và từ chuỗiNhư chúng ta đã thấy trong các phần trước, Python hiếm khi thực hiện các chuyển đổi ngầm đến và từ 44 - chúng ta thường phải chuyển đổi các giá trị rõ ràng. Nếu chúng ta chuyển một số duy nhất (hoặc bất kỳ giá trị nào khác) cho hàm 06, nó sẽ được chuyển đổi thành một chuỗi tự động - nhưng nếu chúng ta cố gắng thêm một số và một chuỗi, chúng ta sẽ gặp lỗi: 4Để chuyển đổi số thành chuỗi, chúng ta có thể sử dụng định dạng chuỗi - đây thường là cách sạch nhất và dễ đọc nhất để chèn nhiều giá trị vào một thông báo. Nếu chúng ta muốn chuyển đổi một số duy nhất thành một chuỗi, chúng ta cũng có thể sử dụng chức năng 44 một cách rõ ràng: 5Thêm về Chuyển đổi OrTrong Python, các chức năng như 44, 10 và 17 sẽ cố gắng chuyển đổi bất cứ điều gì thành các loại tương ứng của chúng-ví dụ, chúng ta có thể sử dụng hàm 10 để chuyển đổi chuỗi thành số nguyên hoặc chuyển đổi số điểm nổi sang số nguyên. Lưu ý rằng mặc dù 10 có thể chuyển đổi một chiếc phao thành một số nguyên, nó có thể chuyển đổi một chuỗi chứa một float thành một số nguyên trực tiếp! 6Các giá trị của loại 52 có thể chứa giá trị 53 hoặc 54. Các giá trị này được sử dụng rộng rãi trong các câu lệnh có điều kiện, thực thi hoặc không thực hiện các phần của chương trình của chúng tôi tùy thuộc vào một số điều kiện nhị phân: 7Điều kiện thường là một biểu thức đánh giá giá trị boolean: 8Tuy nhiên, hầu hết mọi giá trị có thể được chuyển đổi hoàn toàn thành Boolean nếu nó được sử dụng trong một câu như thế này: 9Điều này thường hoạt động theo cách mà bạn mong đợi: các số khác không là các giá trị 53 và 0 là 54. Tuy nhiên, chúng ta cần cẩn thận khi sử dụng chuỗi - chuỗi trống được coi là 54, nhưng bất kỳ chuỗi nào khác là 53 - thậm chí 59 và 60!# Define three variables at once: count, result, total = 0, 0, 0 # This is equivalent to: count = 0 result = 0 total = 00 Bài tập 3¶
Câu trả lời cho các bài tậpTrả lời cho bài tập 1¶
Trả lời cho bài tập 2¶
Trả lời cho bài tập 3¶Đây là câu trả lời ví dụ: # Define three variables at once: count, result, total = 0, 0, 0 # This is equivalent to: count = 0 result = 0 total = 02 Bạn có thể thay đổi một biến trong một chức năng python?Một số giá trị trong Python có thể được sửa đổi, và một số không thể. Điều này không bao giờ có nghĩa là chúng ta không thể thay đổi giá trị của một biến - nhưng nếu một biến chứa một giá trị của một loại bất biến, chúng ta chỉ có thể gán cho nó một giá trị mới. Chúng ta không thể thay đổi giá trị hiện có theo bất kỳ cách nào.. This does not ever mean that we can't change the value of a variable – but if a variable contains a value of an immutable type, we can only assign it a new value. We cannot alter the existing value in any way.
Làm thế nào để bạn cập nhật một biến trong Python?Trong python += được sử dụng để tăng và -= cho giảm. Trong một số ngôn ngữ khác, thậm chí còn có một cú pháp đặc biệt ++ và - để tăng hoặc giảm dần bởi 1. Python không có cú pháp đặc biệt như vậy. Để tăng x bởi 1, bạn phải viết x + = 1 hoặc x = x + 1.+= is used for incrementing, and -= for decrementing. In some other languages, there is even a special syntax ++ and -- for incrementing or decrementing by 1. Python does not have such a special syntax. To increment x by 1 you have to write x += 1 or x = x + 1 .
Làm cách nào để thay đổi giá trị của một biến trong một hàm?Thay vì truyền giá trị của biến, chúng ta có thể truyền tham chiếu hoặc con trỏ của biến dưới dạng tham số đầu vào của hàm.Sử dụng con trỏ đó, chúng tôi có thể thay đổi biến.Cơ chế này cũng được gọi là 'cuộc gọi bằng tham chiếu'.pass the reference or pointer of the variable as input parameter of the function. Using that pointer we'd be able to change the variable. This mechanism is also know as 'Call by Reference'.
Làm thế nào để bạn truy cập một biến bên trong một hàm trong Python?Các biến được xác định bên trong các phương thức chỉ có thể được truy cập trong phương thức đó chỉ bằng cách sử dụng tên biến.Ví dụ - var_name.Nếu bạn muốn sử dụng biến đó bên ngoài phương thức hoặc lớp, bạn phải khai báo biến đó là toàn cầu.using the variable name. Example – var_name. If you want to use that variable outside the method or class, you have to declared that variable as a global. |