Cách các biến được lưu trữ trong bộ nhớ trong Python

Để hiểu các biến trong Python, bạn nên hiểu cách máy tính sử dụng và lưu trữ mọi thứ trong bộ nhớ

Chào mừng trở lại với một bài viết mới trong loạt bài Giới thiệu về Lập trình của tôi

Trong bài đăng trên blog này, tôi sẽ tìm hiểu về các biến, chúng là gì và tại sao bạn cần chúng. Khái niệm biến là cơ bản trong lập trình, vì vậy điều quan trọng là bạn phải hiểu nó sớm. Tuy nhiên, để hiểu các biến, trước tiên bạn cần hiểu cơ bản về cách máy tính lưu trữ mọi thứ trong bộ nhớ. Vì vậy, trong bài đăng trên blog này, bạn cũng sẽ tìm hiểu một chút về cách thức hoạt động của bộ nhớ máy tính

Các biến là gì và chúng liên quan đến bộ nhớ máy tính như thế nào?

Khi tôi giới thiệu ngắn gọn về các loại dữ liệu, tôi đã đề cập rằng bạn có thể nghĩ về một chương trình máy tính đơn giản là một chuỗi các hướng dẫn. Các hướng dẫn này hoạt động trên dữ liệu mà chương trình đang nhận được từ nhiều nguồn bên ngoài, chẳng hạn như đầu vào của người dùng, tệp hoặc cơ sở dữ liệu

Nguồn hình ảnh. người biết chữ

Chương trình máy tính đọc dữ liệu này từ các nguồn, nhưng để làm bất cứ điều gì với dữ liệu, trước tiên, nó cần lưu trữ dữ liệu (hoặc ít nhất là một phần của dữ liệu) ở đâu đó để sau này có thể truy cập khi cần. Nó làm điều đó trong cái được gọi là bộ nhớ

Tại sao nó cần lưu trữ dữ liệu nếu nó có quyền truy cập vào nó? . Nghĩ về nó theo cách này. ngay cả đối với con người, việc truy cập thông tin từ bộ nhớ luôn nhanh hơn là mở trình duyệt và tìm kiếm thông tin đó trên internet. Cũng giống như ở người, bộ nhớ đóng một vai trò quan trọng trong việc làm cho máy tính hoạt động hiệu quả trong các nhiệm vụ của chúng.

Hãy suy nghĩ về bài tập tinh thần sau đây. Giả sử tôi yêu cầu bạn cộng hai số và bạn nói, "Ok, các số là gì?"

17 + 10 = ?

Bạn không thể thực hiện phép cộng mà không ghi nhớ hai số bạn cần cộng lần lượt là 17 và 10. Bạn lưu trữ những con số trong bộ nhớ ngắn hạn của bạn. Mặc dù chúng ta không hiểu đầy đủ về cách thức hoạt động của bộ nhớ ở người, nhưng hầu hết chúng ta đều có thể sử dụng nó mà không gặp vấn đề gì

Như tôi đã đề cập, máy tính cũng có bộ nhớ và đó là nơi chúng đặt dữ liệu mà chúng cần để làm việc. Khi bạn viết một chương trình máy tính, bạn sử dụng bộ nhớ đó (ngầm hoặc rõ ràng, tùy thuộc vào ngôn ngữ lập trình bạn sử dụng) và về cơ bản, bạn có thể lưu trữ các bit thông tin có liên quan trong bộ nhớ này

Bạn có thể coi bộ nhớ của máy tính như một chiếc tủ rất, rất lớn chứa rất nhiều hộp nhỏ. Các hộp này đại diện cho các khe cắm bộ nhớ, vì vậy trong mỗi hộp này, chúng ta có thể lưu trữ một thứ gì đó. Bức ảnh tủ gỗ sồi dưới đây là một cách hay để hình dung điều này.  

nguồn hình ảnh. https. //www. trung tâm mua sắm-11. đầu trang/Chi tiết sản phẩm. aspx?iid=69812322&pr=78. 88

Một phiên bản đơn giản hóa là trong hình dưới đây

nguồn hình ảnh. Microsoft Excel

Bạn có thể giả vờ rằng mỗi ô vuông này là một hộp bộ nhớ như vậy và trong mỗi ô này, bạn có thể đặt một số dữ liệu

Ví dụ: giả sử bạn muốn lưu số 17 vào ô màu đỏ.  

nguồn hình ảnh. Microsoft Excel

Bây giờ, giả sử rằng trong một hộp khác, bạn muốn lưu số 10

nguồn hình ảnh. Microsoft Excel

Khi bạn muốn lưu trữ thứ gì đó vào một trong những hộp này, bạn yêu cầu nó, bạn đặt tên cho nó và bạn đặt giá trị mong muốn của mình vào đó. Quá trình yêu cầu hộp bộ nhớ (hoặc vị trí) về cơ bản là một cách để dành vị trí bộ nhớ đó cho mục đích sử dụng của riêng bạn và thông báo cho hệ điều hành (Windows, OS X, Ubuntu, v.v. ) mà không ai khác được phép sử dụng cho đến khi bạn hủy xác nhận quyền sở hữu

Tôi đã giới thiệu thêm một vài thuật ngữ trong đoạn trên, vì vậy hãy dành chút thời gian và làm rõ chúng. Hộp bộ nhớ thường được gọi là vị trí bộ nhớ trong khoa học máy tính. Tất cả các vị trí bộ nhớ này đều có địa chỉ bộ nhớ. Địa chỉ bộ nhớ thường là một số (số nguyên) xác định duy nhất vị trí bộ nhớ đó (hoặc hộp, nếu bạn thích phép loại suy hơn)

Khái niệm về địa chỉ bộ nhớ là cần thiết. Không có địa chỉ bộ nhớ, sẽ không thể xác định vị trí bộ nhớ. Về mặt này, các địa chỉ bộ nhớ không khác lắm so với các số bạn có thể thấy trên các hộp Bưu điện, giúp xác định duy nhất từng hộp

nguồn hình ảnh. Hộp thư bưu điện, https. // vi. wikipedia. org/wiki/Post_office_box

Quá trình yêu cầu một hộp bộ nhớ và đặt tên cho nó được gọi là xác định một biến. Chúng tôi thường sử dụng cụm từ xác định biến thay vì tạo biến. Điều này có ý nghĩa nếu bạn nghĩ về nó, bởi vì bạn không thực sự tạo ra một hộp ký ức. Hộp bộ nhớ đi kèm với máy tính của bạn. Những gì bạn đang thực sự làm tương đương với việc nói rằng theo định nghĩa, vị trí bộ nhớ tại địa chỉ X hiện được dành riêng cho mục đích sử dụng của riêng bạn và sẽ được gọi là biến "tương tự" và sẽ lưu trữ một giá trị mà bạn đã chỉ định. Biến là một phần của bộ nhớ có tên và giá trị

Để tóm tắt những gì tôi đã trình bày cho đến nay, khi các hộp bộ nhớ này được đặt tên và có một giá trị bên trong chúng, bạn có thể coi chúng như các biến số. Khi chúng không được yêu cầu bởi bất kỳ chương trình đang chạy nào và chúng không được đặt tên, chúng chỉ là vị trí của bộ nhớ khả dụng. Thực tế phức tạp hơn một chút, nhưng mô hình tinh thần này sẽ giúp bạn hiểu các biến

nguồn hình ảnh. Microsoft Excel

Bên cạnh đó, bạn đã bao giờ nhận được cảnh báo rằng máy tính của bạn sắp hết bộ nhớ trong khi chạy một số ứng dụng chưa? . Ứng dụng có thể đang xác định rất nhiều biến, nhưng không bao giờ "hủy" chúng để giải phóng bộ nhớ, tức là để cung cấp các hộp bộ nhớ cho các ứng dụng khác

Những gì tôi đã làm ở đây không phải là đưa ra một định nghĩa chính thức, mà là một phép loại suy. Các chi tiết tất nhiên là phức tạp hơn, nhưng đây là một xấp xỉ đủ tốt cho hiện tại.  

Như tên ngụ ý, một biến có thể thay đổi, hay nói cách khác, thay đổi giá trị của nó. Về mặt khái niệm, bạn có thể lấy số 17 ra khỏi ô màu đỏ và thay vào đó đặt số 5 vào đó. 5 nằm trong cùng một hộp và có cùng tên, nhưng bây giờ nó chỉ lưu trữ một giá trị khác

nguồn hình ảnh. Microsoft Excel

Quá trình lấy một số dữ liệu, trong trường hợp này là một giá trị số và đặt nó vào một trong các hộp bộ nhớ này được gọi là gán biến. Bạn đang gán một giá trị cho biến. Hoặc, nếu bạn muốn, bạn đang đặt một số dữ liệu vào hộp bộ nhớ được đặt tên mà bạn đã yêu cầu

Cách đặt tên biến đúng cách

Đặt tên biến là việc mà một lập trình viên luôn làm. Đó là một phần khoa học, một phần nghệ thuật. Các biến cần phải có tên để cả lập trình viên và máy tính đang chạy chương trình biết cách tham chiếu đến chúng và cũng biết tìm chúng ở đâu. Hãy tưởng tượng một thư viện công cộng nơi các ngăn xếp không có số, không có tên, không có gì. Tìm thấy bất cứ điều gì là không thể. Trong hầu hết các ngôn ngữ lập trình, chúng tôi có một số hạn chế về những gì cấu thành một tên biến thích hợp và chúng tôi sẽ đề cập đến các quy tắc đó cho Python ngay lập tức. Đó là phần khoa học của việc đặt tên biến

Tuy nhiên, bây giờ, tôi muốn thu hút sự chú ý của bạn đến phần nghệ thuật. Làm thế nào để bạn đặt tên cho một biến? . Ví dụ, nếu bạn đang lưu trữ tuổi của một người trong một biến, có lẽ bạn nên đặt tên cho biến đó là tuổi, chứ không phải một từ ngẫu nhiên nào khác chẳng hạn như biến. Khi bạn nhìn lại mã của mình vài tháng sau khi bạn viết nó lần đầu tiên, sẽ dễ hiểu hơn nhiều nếu các biến có tên mô tả. Tin tôi đi. Luôn quan tâm đến bản thân trong tương lai của bạn và dành một chút thời gian và đặt tên cho các biến của bạn đúng cách

  • TIỀN BOA. nhiều người mới bắt đầu, trong lúc vội vã đạt được tiến bộ trong quá trình đào tạo của họ, đã sử dụng các phím tắt và đặt tên chung cho các biến của họ - hoặc bất cứ điều gì xuất hiện trước tiên trong đầu họ. Tôi khuyên bạn chống lại điều đó. Ngay cả khi mất nhiều thời gian hơn, hãy tập thói quen dành một chút thời gian và chọn một tên hay cho biến của bạn

Thói quen dành thời gian để đặt tên cho các biến của bạn tốt sẽ giúp bạn trở thành một lập trình viên giỏi hơn về lâu dài. Biến giống như danh từ trong câu tiếng Anh. Mặc dù máy tính sẽ vui vẻ theo dõi và làm việc với bất kỳ tên nào bạn chọn, nhưng đồng nghiệp của bạn sẽ khó hiểu mã của bạn nếu nó chứa đầy các biến có tên var, xyz, my_var, v.v.

Các biến có tên và có thể lưu trữ một số dữ liệu. Tất nhiên, có một số quy tắc về những gì cấu thành một tên biến hợp lệ. Trong Python, các hạn chế tồn tại đơn giản là để giúp công việc của Trình thông dịch Python dễ dàng hơn. Hãy nhớ rằng, Trình thông dịch Python là phần mềm thực sự đọc chương trình của bạn, chuyển đổi nó từ ngôn ngữ Python sang ngôn ngữ mà máy tính hiểu được và chạy chương trình đó trên máy tính. Trình thông dịch Python rất mạnh, nhưng không phải tất cả đều mạnh. Để nó hoạt động bình thường, có một số quy tắc mà chúng ta phải tuân theo khi viết chương trình. Một quy tắc như vậy là cách chúng ta đặt tên biến

Dưới đây, chúng tôi sẽ xem xét các yêu cầu đặt tên biến trong Python

Muốn tìm hiểu thêm?

Quy tắc 1. Các biến không thể bắt đầu bằng một số

Tuy nhiên, chúng có thể chứa một số, miễn là nó không phải là ký tự đầu tiên trong tên

Có hiệu lực. công thức1, p4s, v.v.

Không hợp lệ. 1 hướng, 34_năm, v.v.

Quy tắc 2. Biến không thể chứa khoảng trắng

Khoảng trắng rất quan trọng trong Python và trong nhiều ngôn ngữ lập trình nói chung. Chúng được sử dụng để tách các phần mã của bạn thành các đoạn có thể được xử lý một cách logic bởi Trình thông dịch Python. Như vậy, chúng ta không thể chỉ thêm khoảng trắng ở những vị trí ngẫu nhiên, đặc biệt là trong Python, vốn rất nhạy cảm với không gian

Nếu bạn có hai từ tạo nên tên biến (giả sử người dùng và tuổi), chỉ cần đặt dấu gạch dưới giữa chúng thay vì khoảng trắng (e. g. user_age)

Có hiệu lực. use_age, favorite_number, usd_eur_exchange_rate

Không hợp lệ. tuổi người dùng, số yêu thích, usd eur exchange_rate

Có những ký tự bổ sung không được phép, nhưng thay vì liệt kê tất cả, tôi nghĩ bạn nên tuân theo quy tắc ngón tay cái này. Tên biến chỉ được chứa chữ cái, số (miễn là không bắt đầu bằng số) và dấu gạch dưới

Quy tắc 3. Các biến không thể khớp với bất kỳ từ khóa Python dành riêng nào

Đầu tiên, từ khóa là gì? . Tôi sẽ nói nhiều hơn về các từ khóa khi bạn tiếp tục với loạt blog này, nhưng nếu bạn tò mò thì đây là danh sách các từ khóa Python (hãy nhớ rằng danh sách này có thể thay đổi trong các phiên bản Python mới hơn)

Sai, Không có, Đúng và, như, khẳng định, không đồng bộ, chờ đợi, ngắt, lớp, tiếp tục, def, del, elif, khác, ngoại trừ, cuối cùng, cho, từ, toàn cầu, nếu, nhập, vào, là, lambda,

Những từ khóa này có ý nghĩa đặc biệt và là manh mối mà Trình thông dịch Python sử dụng để hiểu mã của bạn. Bởi vì chúng đều có một ý nghĩa được xác định trước rất quan trọng đối với sự hiểu biết của máy tính về mã của bạn, bạn không thể sử dụng chúng để đặt tên cho biến của riêng mình. Làm như vậy về cơ bản sẽ thay đổi ý nghĩa của chúng và Trình thông dịch Python sẽ phàn nàn về điều đó

Quy tắc 4. Viết tên biến bằng chữ thường

Một điều cuối cùng tôi sẽ đề cập về tên biến là, theo quy ước, chúng tôi viết chúng bằng tất cả các ký tự chữ thường. Không có gì ngăn cản bạn sử dụng chữ in hoa, nhưng điều đó chỉ khiến cộng đồng Python khó chịu

Khi bạn thăng tiến trong sự nghiệp lập trình của mình, bạn sẽ nhận thấy rằng các lập trình viên có một số thứ mà họ rất, rất kén chọn và thành thật mà nói, điều đó có lý. Mã máy tính có thể rất phức tạp và các quy tắc như vậy chuẩn hóa mã ở một mức độ nào đó và thực sự làm cho nhiệm vụ đọc và viết mã dễ dàng hơn. Nói ngắn gọn. dán các chữ cái, số và dấu gạch dưới, đặt chữ thường và giữ cho nó có tính mô tả

Nhập tĩnh V là gì. S. Gõ động?

Tôi muốn dành một chút thời gian để nói về cách gõ tĩnh và gõ động. Bạn rất có thể sẽ gặp những thuật ngữ này thường xuyên, vì vậy bạn nên biết ý nghĩa của chúng. Nó thực sự khá đơn giản và nó liên quan đến việc thay đổi giá trị của các biến

Hãy quay trở lại hộp của chúng tôi tương tự cho bộ nhớ.  

nguồn hình ảnh. Microsoft Excel

Bây giờ bạn biết rằng một khi bạn xác định một biến, bạn có thể gán giá trị cho nó. Điều đó tương đương với việc đặt một giá trị vào hộp ký ức đó

Sau này nếu cần bạn có thể thay đổi giá trị đó. Quá trình này được gọi là gán biến. Hóa ra là một số ngôn ngữ lập trình giới hạn cách bạn có thể thay đổi giá trị biến. Một số ngôn ngữ lập trình không cho phép thay đổi kiểu dữ liệu của biến

Đặc biệt, các ngôn ngữ lập trình này không cho phép bạn lưu trữ dữ liệu khác loại với dữ liệu ban đầu bạn có trong một biến

Vì vậy, ví dụ: nếu bạn đã gán biến của mình cho một số nguyên, giả sử là 17, những ngôn ngữ này sẽ cho phép bạn gán cho nó một số nguyên khác, giả sử là 5, nhưng sẽ không cho phép bạn gán cho nó một số dấu phẩy động, . Họ sẽ chỉ cho phép bạn gán cho một biến một giá trị có cùng loại với bất kỳ giá trị nào ở đó để bắt đầu

Những ngôn ngữ này được gọi là kiểu tĩnh. Từ tĩnh trong ngữ cảnh này có nghĩa là cố định. Kiểu dữ liệu của biến là cố định và nó được thiết lập khi bạn định nghĩa biến. Ngôn ngữ lập trình kiểu tĩnh không cho phép thay đổi kiểu dữ liệu của biến

Bây giờ, Python không quan tâm bạn lưu trữ giá trị nào trong biến nào và đây là một phần khiến nó trở nên linh hoạt và dễ dàng nhận. Ngôn ngữ lập trình Python sẽ vui lòng cho phép bạn lấy biến của mình và lưu trữ trong đó một số nguyên, sau đó lưu trữ một chuỗi trong đó hoặc một danh sách hoặc một số dấu phẩy động

Các ngôn ngữ như Python được gọi là kiểu động. Năng động trong ngữ cảnh này có nghĩa là linh hoạt, có thể thay đổi. Các ngôn ngữ lập trình được gõ động (e. g. Python) cho phép thay đổi kiểu dữ liệu của một biến

Vì vậy, nó đây

  • Nhập tĩnh = bạn không thể thay đổi kiểu dữ liệu của biến bằng cách gán lại cho nó một giá trị của kiểu dữ liệu khác
  • Dynamic Typing = bạn có thể thay đổi kiểu dữ liệu của một biến bằng cách gán lại cho nó một giá trị của kiểu dữ liệu khác

Tại sao một số ngôn ngữ lập trình sử dụng tính năng nhập tĩnh và các ngôn ngữ khác sử dụng tính năng nhập động cho các biến

Một điều bạn có thể thắc mắc là tại sao một số ngôn ngữ được nhập tĩnh và các ngôn ngữ khác được nhập động. Hóa ra cả gõ tĩnh và động đều có ưu và nhược điểm. Ví dụ, gõ động linh hoạt hơn và viết mã nhanh hơn. Bạn thực sự phải gõ ít mã hơn trong các ngôn ngữ sử dụng kiểu gõ động này

Mặt khác, hãy xem xét điều này. nếu chương trình của bạn giả định rằng một biến nhất định chứa một số nguyên, nhưng bằng cách nào đó nó bị thay đổi thành một chuỗi, bạn sẽ gặp một lỗi rất khó chịu nếu bạn cố chia giá trị của biến cho 2. Vì vậy, kiểu gõ động thường dễ gặp phải các lỗi liên quan đến "ồ-tôi-không-biết-bạn-là-một-chuỗi" (hoặc boolean hoặc danh sách, v.v. ) loại khoảnh khắc

Gõ tĩnh ít bị lỗi kiểu dữ liệu hơn. Tuy nhiên, các chương trình được viết bằng ngôn ngữ có kiểu gõ tĩnh có xu hướng dài hơn và dài dòng hơn. Các ngôn ngữ này cũng có xu hướng có cú pháp phức tạp hơn một chút so với các ngôn ngữ được nhập động

Cách sử dụng biến Python trong Jupyter Notebook

Đối với phần này của bài đăng trên blog, tốt nhất là bạn nên theo dõi sổ ghi chép Jupyter của mình. Nếu bạn chưa quen với điều này và gặp khó khăn, vui lòng làm theo hướng dẫn của chúng tôi để bắt đầu với Jupyter notebook

  • GHI CHÚ. Mã được hiển thị bằng định dạng kiểu sổ ghi chép Jupyter

Trong Python bạn định nghĩa một biến đơn giản bằng cách nhắc đến nó và gán cho nó một giá trị như vậy

Trong đoạn mã trên, tôi đã đặt tên biến là favorite_number và gán cho nó giá trị số nguyên là 17. Việc gán được thực hiện bằng toán tử =. Tên biến nằm bên trái dấu bằng và giá trị bạn muốn gán cho biến nằm bên phải

  • GHI CHÚ. Khi Trình thông dịch Python đọc mã gán, nó sẽ luôn đánh giá (i. e. chạy) bên phải trước. Chúng ta sẽ thấy tại sao điều này quan trọng trong giây lát

Tôi có thể thuyết phục bản thân rằng thực sự, favorite_number hiện lưu trữ giá trị 17 chỉ bằng cách in nó

Nếu tôi muốn thay đổi giá trị mà tôi lưu trữ trong biến favorite_number thì sao?

  • GHI CHÚ. Bạn sẽ nhận thấy rằng tôi đặt dấu cách trước và sau dấu bằng (vì vậy favorite_number = 10 thay vì favorite_number=10). Chúng không bắt buộc, nhưng chúng được khuyến nghị để làm cho mã dễ đọc hơn. Dù không cần thiết nhưng bạn nên tập thói quen gõ dấu cách. Đồng nghiệp của bạn (và bản thân bạn trong tương lai) sẽ rất biết ơn vì điều đó

Tôi muốn chỉ cho bạn một thủ thuật khác, lần này liên quan đến Jupyter

Để in giá trị của một biến, tôi không thực sự phải sử dụng lệnh in, tôi chỉ cần nhập tên của nó rồi chạy ô, như vậy

Khi tôi sử dụng phím tắt này, Jupyter sẽ đánh dấu kết quả là đầu ra (Hết [5] trong trường hợp này), để dễ theo dõi hơn. Và, tất nhiên, giá trị mà tôi nhìn thấy trên màn hình vẫn là 10

Hy vọng điều đó có ý nghĩa với bạn. Một biến sẽ giữ giá trị mà bạn đã gán cho nó cho đến khi bạn gán cho nó một giá trị khác

Một điều quan trọng cần hiểu là giá trị bạn gán cho một biến không nhất thiết phải là một giá trị đơn giản, chẳng hạn như 10 hoặc 17. Nó thực sự có thể là một biểu thức có thể được tính toán

Ví dụ

Vậy chuyện gì đã xảy ra ở đây? . e. tính toán) giá trị ở bên phải của dấu bằng trước tiên và SAU ĐÓ, một khi nó xác định kết quả của điều đó, nó sẽ gán kết quả cho biến

Vì vậy, trong trường hợp này, nó tính toán 10 * 17 trước, tức là 170 và SAU ĐÓ nó gán 170 cho số_yêu_thích

  • GHI CHÚ. Đây là một điều rất quan trọng cần nhớ. phía bên phải của một bài tập luôn được đánh giá đầu tiên

Tôi sẽ gán lại favorite_number cho 10

Bởi vì cuối cùng các biến chỉ là các tham chiếu đến các giá trị nhất định được lưu trữ trong bộ nhớ, nên bạn thực sự có thể sử dụng chúng trong các biểu thức

Ví dụ: tôi có thể thêm favorite_number vào favorite_number và tôi nhận được 20 vì 10 + 10 bằng 20

favorite_number + favorite_number

Điều gì đã xảy ra ở đây? . Vì vậy, trong trường hợp này, nó thay thế số_yêu_thích đầu tiên bằng 10 và số_yêu_thích thứ hai cũng bằng 10, sau đó nó tính 10 + 10

Hãy để tôi cho bạn thấy một cái gì đó thậm chí còn điên rồ hơn

favorite_number = favorite_number + favorite_number

Bạn nghĩ số_yêu_thích bây giờ có giá trị gì?

Điều đầu tiên, hãy nhớ rằng Trình thông dịch Python luôn nhìn vào bên phải trước. Ở bên phải của dấu bằng, tôi có số_yêu_thích + số_yêu_thích. Tôi biết từ phía trên rằng số_yêu_thích là 10. Vậy, số_yêu_thích + số_yêu_thích là gì?

Tôi thực sự đã tính toán nó ở trên. nó là 10 + 10, là 20. Vì vậy, bây giờ tôi đã có nó, tôi chỉ cần gán 20 cho số_yêu_thích. Vì vậy, bây giờ favorite_number phải là 20

Hãy xem nếu tôi đúng

Đúng, tôi đã đúng

Những dòng mã này ban đầu có thể hơi khó hiểu, nhưng nếu bạn gặp khó khăn, hãy nhớ điều này. Luôn nhìn vào vế phải của dấu bằng trước. Kết quả của bất cứ điều gì bạn có là những gì cuối cùng sẽ được gán cho biến

Điều gì xảy ra nếu tôi chạy lại cùng mã đó?

favorite_number = favorite_number + favorite_number

Tại sao lại là 40? . Vì vậy, bây giờ tôi có số_yêu_thích = 20 + 20, tức là 40. Hy vọng rằng điều này có ý nghĩa

Bây giờ hãy viết một cái gì đó phức tạp hơn một chút.  

Giả sử tôi muốn xây dựng một chương trình đơn giản cho một công ty trao đổi tiền tệ và giả sử đây là một công ty rất thích hợp, nó chỉ chuyển đổi Euro sang USD. Có thể họ đang ở sân bay đâu đó và họ chỉ đổi Euro sang USD

Giả sử ai đó đến và có 100 Euro và muốn đổi nó lấy USD, và giả sử rằng 1 Euro mua được 1. 25 USD. Tỷ giá hối đoái có thể khác trong thực tế, nhưng hiện tại thì không sao

Làm cách nào để viết một chương trình tính toán số tiền USD cần được đưa ra để đổi lấy 100 Euro?

Chà, một cách ngây thơ là chỉ cần nói nó là 100 * 1. 25, và đó là 125, đúng

Nhưng một cách tốt hơn để làm điều đó là như sau

euro = 100
euro_usd_exchange_rate = 1.25

usd = euro * euro_usd_exchange_rate
print(usd)

Trong đoạn mã trên, tôi lưu trữ số tiền Euro trong một biến, hãy gọi số tiền đó là euro. Tôi cũng lưu trữ tỷ giá hối đoái trong một biến khác, được gọi là euro_usd_exchange_rate, mà tôi gán giá trị là 1. 25, nghĩa là một euro mua được một đô la và 25 xu

Vì vậy, bây giờ, tôi có thể dễ dàng tính toán số tiền USD như thế này. usd = euro * euro_usd_exchange_rate và tôi có thể in ra kết quả, hiện được lưu trong biến có tên là usd

Bây giờ, tại sao điều này tốt hơn?

Giải pháp này thực sự liên quan đến nhiều mã hơn, nhưng tốt hơn là vì hầu hết logic của chương trình không phụ thuộc vào các số cụ thể

Như bạn có thể thấy trong đoạn mã trên, phần mà tôi thực sự tính toán bao nhiêu USD để đổi lấy Euro không phụ thuộc vào số Euro tôi có và cũng không phụ thuộc vào tỷ giá hối đoái là bao nhiêu. Bởi vì nó sử dụng các biến và các biến đó có thể lưu trữ bất kỳ giá trị nào, mã sẽ hoạt động với bất kỳ số lượng euro nào và bất kỳ tỷ giá hối đoái nào

Đây là chìa khóa bởi vì ngay bây giờ tôi lưu trữ thủ công số euro tôi có và tỷ giá hối đoái trong các biến này

Trong tương lai, bạn sẽ học cách đọc các giá trị này dưới dạng đầu vào. Nếu bạn có thể đọc các giá trị dưới dạng đầu vào và gán các giá trị bạn đọc cho các biến này, thì chương trình của bạn sẽ hoạt động với bất kỳ đầu vào nào do người dùng cung cấp

Và đó là vẻ đẹp của việc viết mã máy tính. Các chương trình tốt giải quyết các loại vấn đề, không chỉ các vấn đề riêng lẻ

Trong trường hợp này, một chương trình trao đổi tiền tệ tốt sẽ hoạt động bất kể số lượng ngoại tệ là bao nhiêu và tỷ giá hối đoái là bao nhiêu

Các biến được lưu trữ trong bộ nhớ như thế nào?

Các biến thường được lưu trữ trong RAM . Đây là hoặc trên đống (e. g. tất cả các biến toàn cục thường sẽ ở đó) hoặc trên ngăn xếp (tất cả các biến được khai báo trong một phương thức/hàm thường ở đó). Stack và Heap đều là RAM, chỉ khác vị trí.

Bộ Python được lưu trữ trong bộ nhớ như thế nào?

Phân bổ bộ nhớ trong Python . The methods/method calls and the references are stored in stack memory and all the values objects are stored in a private heap.

Biến trong Python có vị trí trong bộ nhớ không?

Chúng ta có thể thấy vị trí địa chỉ bộ nhớ của giá trị đó bằng hàm id() . Hãy nghĩ về con số dài đó như một lọ lưu trữ. Tôi có thể kiểm tra vị trí của giá trị được liên kết với Peanut_butter bằng cách chuyển biến của tôi tới hàm id().

Chủ đề