Hướng dẫn variable names in python - tên biến trong python

Như bài trước thì mình đã đi tìm hiểu qua cơ bản về python và chạy chương trình đầu tiên, chương trình muôn thủa Hello world. Nếu bạn nào chưa xem thì xem tại đây. Còn phần này mình sẽ đi qua về variable trong python. Let's go.

Quy tắc đặt tên biến

Đầu tiên thì chúng ta cùng lướt qua về quy tắc đặt tên biến. Làm gì thì cũng phải biết quy tắc của nó.

Quy tắc:

  • Tên biến chỉ có thể chứa chữ cái, số và dấu gạch dưới _. Có thể bắt đầu bằng chữ cái hoặc dấu gạch dưới, nhưng không được bắt đầu bằng số. VD:
    myTuple = (2, 4, 16, [50, 100])
    print(myTuple[3][1]) //100
    
    3,
    myTuple = (2, 4, 16, [50, 100])
    print(myTuple[3][1]) //100
    
    4 nhưng không thể đặt là
    myTuple = (2, 4, 16, [50, 100])
    print(myTuple[3][1]) //100
    
    5.
  • Khoảng trống (space) không được cho phép khi đặt tên biến, nhưng bạn có thể sử dụng dấu gạch dưới để tách các từ.
  • Khi đặt tên biến không được sử dụng từ khóa Python và tên của hàm. Các từ khóa trong python mà ta không thể đặt cho biến.

Hướng dẫn variable names in python - tên biến trong python

Các kiểu dữ liệu trong python

5 kiểu dữ liệu chuẩn trong python là:

  • Number
  • String
  • List
  • Tuple
  • Set
  • Dictionary

Ta có thể sử dụng hàm type() để kiểm tra kiểu dữ liệu của biến

Number

String

  • List
  • Tuple
  • Set
  • Dictionary
  • Ta có thể sử dụng hàm type() để kiểm tra kiểu dữ liệu của biến

Python hỗ trợ 5 kiểu dữ liệu numbers khác nhau:

String

List

myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
6

myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
7

myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
8

myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
9

Tuple

List

Tuple

del myTuple
1

Set

Dictionary

Ta có thể sử dụng hàm type() để kiểm tra kiểu dữ liệu của biến

Tuple

Set

Dictionary

Ta có thể sử dụng hàm type() để kiểm tra kiểu dữ liệu của biến

myTuple = (2, 4, 16, 256)
myTuple = 100, "nghiem tuan", 10.9

Python hỗ trợ 5 kiểu dữ liệu numbers khác nhau:

Int

Float

myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100

Long

Complex (số phức)

Fraction (số thập phân)

Các phép toán cơ bản với kiểu number: +, -, /, *, %, //, **

NHư BÀi TRướC thì Mình Đi Đi TìM Nếu bạn nào chưa xem thì xem tại đNy. CNn Phần NÀy Mình Sẽ Đi Qua Về biến Trong Python biến đổi. Đi nào.

QUY TắC ĐING

Đầu tiênt thì chún ta cùng lướt qua về quy tắc Đặt Tênn biến. LÀm gì thì cũng phải biết quy tắc của nó.

QUY TắC:

  • Tênn biến chỉ nhập thể chứa chữ cái, số và dấu gạch dưới _. Đó là bắt ôn VD:
    myTuple = (2, 4, 16, [50, 100])
    print(myTuple[3][1]) //100
    
    3,
    myTuple = (2, 4, 16, [50, 100])
    print(myTuple[3][1]) //100
    
    4 NHưng Không thể Đặt Là
    myTuple = (2, 4, 16, [50, 100])
    print(myTuple[3][1]) //100
    
    5.
  • Khoảng trống (không gian) Không Đan Cho Phép Khi
  • Khi họ Các từ Khùaa Trong Python Mà Ta Không thể ĐặT Cho Biến.

Các kiểu dữ liệu trong python

5 kiểu dữ liệu chuẩn trong python là:

  • Con số
  • Sợi dây
  • Danh sách
  • Tuple
  • Bộ
  • Từ điển

Taó thể sử dụng loại ha ()

Con số

Sợi dây

  • Danh sách
  • Tuple
  • Bộ
  • Từ điển
  • Taó thể sử dụng loại ha ()

Python hỗ trợ 5 kiểu dữ liệu số Khác nhau:

Sợi dây

Danh sách

myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
6

myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
7

myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
8

myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
9

Tuple

Danh sách

Tuple

del myTuple
1

Bộ

Từ điển

Taó thể sử dụng loại ha ()

Tuple

Bộ

Từ điển

Taó thể sử dụng loại ha ()

myTuple = (2, 4, 16, 256)
myTuple = 100, "nghiem tuan", 10.9

Tuple không bị giới hạn số lượng phần tử và có thể có nhiều kiểu dữ liệu khác nhau như số nguyên, số thập phân, list, string,...

Tạo tuple chỉ có một phần tử hơi phức tạp chút, nếu bạn tạo theo cách thông thường là cho phần tử đó vào trong cặp dấu () là chưa đủ, cần phải thêm dấu phẩy để chỉ ra rằng, đây là tuple.

Để truy cập đến từng phần tử trong tuple cũng tương tự như list ta sử dụng []:

myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100

Không giống như list, tuple không thể thay đổi. Điều này có nghĩa là các phần tử của một tuple không thể thay đổi một khi đã được gán. Nhưng, nếu bản thân phần tử đó là một kiểu dữ liệu có thể thay đổi (như list chẳng hạn) thì các phần tử lồng nhau có thể được thay đổi.

Các phần tử trong tuple không thể thay đổi nên chúng ta cũng không thể xóa, loại bỏ phần tử khỏi tuple. Nhưng việc xóa hoàn toàn một tuple có thể thực hiện được với từ khóa del.

del myTuple

Kết luận bài này cũng khá dài rồi, về kiểu biến trong python còn 2 loại nữa là set và dictionary mình xin để lại cho số sau.

Như bài trước thì mình đã đi tìm hiểu qua cơ bản về python và chạy chương trình đầu tiên, chương trình muôn thủa Hello world. Nếu bạn nào chưa xem thì xem tại đây. Còn phần này mình sẽ đi qua về variable trong python. Let's go.

Quy tắc đặt tên biến

Đầu tiên thì chúng ta cùng lướt qua về quy tắc đặt tên biến. Làm gì thì cũng phải biết quy tắc của nó.

Quy tắc:

  • Tên biến chỉ có thể chứa chữ cái, số và dấu gạch dưới _. Có thể bắt đầu bằng chữ cái hoặc dấu gạch dưới, nhưng không được bắt đầu bằng số. VD:
    myTuple = (2, 4, 16, [50, 100])
    print(myTuple[3][1]) //100
    
    3,
    myTuple = (2, 4, 16, [50, 100])
    print(myTuple[3][1]) //100
    
    4 nhưng không thể đặt là
    myTuple = (2, 4, 16, [50, 100])
    print(myTuple[3][1]) //100
    
    5.
  • Khoảng trống (space) không được cho phép khi đặt tên biến, nhưng bạn có thể sử dụng dấu gạch dưới để tách các từ.
  • Khi đặt tên biến không được sử dụng từ khóa Python và tên của hàm. Các từ khóa trong python mà ta không thể đặt cho biến.

Các kiểu dữ liệu trong python

5 kiểu dữ liệu chuẩn trong python là:

  • Number
  • String
  • List
  • Tuple
  • Set
  • Dictionary

Ta có thể sử dụng hàm type() để kiểm tra kiểu dữ liệu của biến

Number

String

  • List
  • Tuple
  • Set
  • Dictionary
  • Ta có thể sử dụng hàm type() để kiểm tra kiểu dữ liệu của biến

Python hỗ trợ 5 kiểu dữ liệu numbers khác nhau:

String

List

myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
6

myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
7

myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
8

myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
9

Tuple

List

Tuple

del myTuple
1

Set

Dictionary

Ta có thể sử dụng hàm type() để kiểm tra kiểu dữ liệu của biến

Tuple

Set

Dictionary

Ta có thể sử dụng hàm type() để kiểm tra kiểu dữ liệu của biến

myTuple = (2, 4, 16, 256)
myTuple = 100, "nghiem tuan", 10.9

Tuple không bị giới hạn số lượng phần tử và có thể có nhiều kiểu dữ liệu khác nhau như số nguyên, số thập phân, list, string,...

Tạo tuple chỉ có một phần tử hơi phức tạp chút, nếu bạn tạo theo cách thông thường là cho phần tử đó vào trong cặp dấu () là chưa đủ, cần phải thêm dấu phẩy để chỉ ra rằng, đây là tuple.

Để truy cập đến từng phần tử trong tuple cũng tương tự như list ta sử dụng []:

myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100

Không giống như list, tuple không thể thay đổi. Điều này có nghĩa là các phần tử của một tuple không thể thay đổi một khi đã được gán. Nhưng, nếu bản thân phần tử đó là một kiểu dữ liệu có thể thay đổi (như list chẳng hạn) thì các phần tử lồng nhau có thể được thay đổi.

Các phần tử trong tuple không thể thay đổi nên chúng ta cũng không thể xóa, loại bỏ phần tử khỏi tuple. Nhưng việc xóa hoàn toàn một tuple có thể thực hiện được với từ khóa del.

del myTuple

Kết luận BÀi nào

TL;DR

Sử dụng Trình trợ giúp

myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
0 từ
myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
1:

from varname.helpers import Wrapper

foo = Wrapper(dict())

# foo.name == 'foo'
# foo.value == {}
foo.value['bar'] = 2

Đối với phần hiểu danh sách, bạn có thể làm:

myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
0

Tôi là tác giả của gói

myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
1. Vui lòng cho tôi biết nếu bạn có bất kỳ câu hỏi hoặc bạn có thể gửi vấn đề trên GitHub.

Câu trả lời dài

Nó thậm chí có thể?

Có và không.

Chúng tôi đang truy xuất các tên biến trong thời gian chạy, vì vậy chúng tôi cần một chức năng được gọi để cho phép chúng tôi truy cập các khung trước để truy xuất các tên biến. Đó là lý do tại sao chúng ta cần một

myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
0 ở đó. Trong chức năng đó, vào thời gian chạy, chúng tôi đang phân tích mã nguồn/nút AST trong các khung trước để có được tên biến chính xác.

Tuy nhiên, mã nguồn/các nút AST trong các khung trước không phải lúc nào cũng có sẵn hoặc chúng có thể được sửa đổi bởi các môi trường khác (ví dụ: câu lệnh

myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
5 của ________ 44). Một ví dụ đơn giản là các mã chạy qua
myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
6. Mặc dù chúng tôi vẫn có thể lấy một số thông tin từ mã byte, nhưng nó cần quá nhiều nỗ lực và nó cũng dễ bị lỗi.

Làm thế nào để làm nó?

Trước hết, chúng ta cần xác định khung nào được đưa ra. Nó không phải lúc nào cũng chỉ đơn giản là khung trực tiếp trước đó. Ví dụ: chúng ta có thể có một trình bao bọc khác cho chức năng:

myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
1

Trong ví dụ trên, chúng ta phải bỏ qua khung bên trong

myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
7 để đến đúng khung
myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
8 để chúng ta có thể định vị
myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
9. Các đối số
del myTuple
0 và
del myTuple
1 của
del myTuple
2 cho phép chúng tôi bỏ qua một số khung trung gian này. Xem thêm chi tiết trong tệp readme và tài liệu API của gói.

Sau đó, chúng ta cần phân tích nút AST để định vị nơi biến được gán giá trị (gọi chức năng) đến. Nó không phải lúc nào cũng chỉ là một nhiệm vụ đơn giản. Đôi khi có thể có các nút AST phức tạp, ví dụ,

del myTuple
3. Chúng ta cần xác định sự gán chính xác bằng cách đi qua cây AST.

Nó đáng tin cậy như thế nào?

Khi chúng tôi xác định nút gán, nó là đáng tin cậy.

del myTuple
2 là tất cả tùy thuộc vào gói
del myTuple
5 để tìm nút. Các phát hiện thực thi nút được đảm bảo là chính xác (xem thêm điều này).

Nó hoạt động một phần với các môi trường áp dụng các phép thuật AST khác, bao gồm pytest, ipython, macropy, Birdseye, reticulation với R, v.v.

Chúng ta có cần một gói để làm điều đó không?

Vâng, có và không, một lần nữa.

Nếu kịch bản của bạn đơn giản, mã được cung cấp bởi @Juan Isaza hoặc @scohe001 có thể là đủ để bạn làm việc với trường hợp một biến được xác định ở khung trực tiếp trước đó và nút AST là một bài tập đơn giản. Bạn chỉ cần quay lại một khung và lấy thông tin ở đó.

Tuy nhiên, nếu kịch bản trở nên phức tạp hoặc chúng ta cần áp dụng các kịch bản ứng dụng khác nhau, có lẽ bạn cần một gói như

myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
1, để xử lý chúng. Những kịch bản này có thể bao gồm:

  1. Trình bày các tin nhắn thân thiện hơn khi mã nguồn không khả dụng hoặc không thể truy cập các nút AST
  2. Bỏ qua các khung trung gian (cho phép chức năng được bọc hoặc gọi trong các khung trung gian khác)
  3. Tự động bỏ qua các cuộc gọi từ các chức năng hoặc thư viện tích hợp. Ví dụ:
    del myTuple
    
    7
  4. Truy xuất nhiều tên biến ở phía bên trái của nhiệm vụ
  5. vân vân.

Làm thế nào về

del myTuple
8?

Giống như câu trả lời được cung cấp bởi @aivar Paalberg. Nó chắc chắn nhanh chóng và đáng tin cậy. Tuy nhiên, nó không phải là thời gian chạy, có nghĩa là bạn phải biết đó là

del myTuple
9 trước khi bạn in tên ra. Nhưng với
del myTuple
2, bạn không cần phải biết rằng biến đó đang đến:

myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
2

Cuối cùng

myTuple = (2, 4, 16, [50, 100])
print(myTuple[3][1]) //100
1 không chỉ có thể phát hiện tên biến từ một bài tập mà còn:

  • Truy cập tên biến trực tiếp, sử dụng
    myTuple = (2, 4, 16, 256)
    myTuple = 100, "nghiem tuan", 10.9
    
    2
  • Phát hiện tên thuộc tính ngay lập tức tiếp theo, sử dụng
    myTuple = (2, 4, 16, 256)
    myTuple = 100, "nghiem tuan", 10.9
    
    3
  • Tìm nạp các tên/nguồn đối số được truyền cho một hàm bằng cách sử dụng
    myTuple = (2, 4, 16, 256)
    myTuple = 100, "nghiem tuan", 10.9
    
    4

Đọc thêm từ tài liệu của nó.

Tuy nhiên, từ cuối cùng tôi muốn nói là, hãy cố gắng tránh sử dụng nó bất cứ khi nào bạn có thể.try to avoid using it whenever you can.

Bởi vì bạn không thể đảm bảo rằng mã máy khách sẽ chạy trong một môi trường có sẵn nút nguồn hoặc nút AST có thể truy cập được. Và tất nhiên, chi phí tài nguyên để phân tích mã nguồn, xác định môi trường, truy xuất các nút AST và đánh giá chúng khi cần thiết.