Giới thiệu tổng quan
1. Phạm vi biến (Scope)
Biến tồn tại trong bộ nhớ có thể được truy cập từ bất kỳ đâu trong chương trình. Ví dụ:
if True:
username = 'example_user'
print(username)
Điều quan trọng cần nhớ:
- Biến trong khối mã con có thể truy cập biến ngoài khối
- Biến trong hàm chỉ tồn tại trong phạm vi hàm
2. Toán tử 3 ngôi
Cú pháp:
result = giá_trị_nếu_đúng if điều_kiện else giá_trị_nếu_sai
Ví dụ minh họa:
user_input = input("Nhập tên: ")
status = "Đúng tên" if user_input == "admin" else "Sai tên"
print(status)
3. Phân loại ngôn ngữ lập trình
Python thuộc loại:
- Thông dịch: Mã nguồn được dịch từng dòng khi chạy
- Động: Kiểu dữ liệu xác định lúc runtime
- Kiên định (Strongly Typed): Không tự động chuyển đổi kiểu dữ liệu
So sánh với ngôn ngữ biên dịch:
# Python (thông dịch)
x = "1" + 2 # Báo lỗi
# PHP (yếu)
$x = "1" + 2; // Tự động chuyển đổi
Các kiểu dữ liệu cơ bản
1. Số nguyên (Integer)
Ví dụ:
age = 25
print(age.bit_length()) # Độ dài bit cần thiết
Các phương thức thường dùng: to_bytes(), from_bytes(), conjugate()
2. Số thực (Float)
pi = 3.14159
print(pi.is_integer()) # False
print((2.0).is_integer()) # True
3. Chuỗi (String)
text = "Python cơ bản"
print(text.upper()) # PYTHON CƠ BẢN
print(text.find("cơ")) # Vị trí ký tự
Các phương thức quan trọng: split(), join(), format()
4. Danh sách (List)
fruits = ["táo", "cam", "chuối"]
fruits.append("xoài")
fruits.sort()
print(fruits)
5. Bộ (Tuple)
coordinates = (10, 20)
x, y = coordinates
print(x, y)
6. Từ điển (Dictionary)
person = {"name": "Nam", "age": 30}
print(person.get("gender", "Không xác định"))
7. Tập hợp (Set)
set_a = {1, 2, 3}
set_b = {3, 4, 5}
print(set_a.union(set_b)) # Hợp hai tập hợp
Collections nâng cao
1. Counter
from collections import Counter
text = "python collections"
char_count = Counter(text)
print(char_count.most_common(3))
2. OrderedDict
from collections import OrderedDict
d = OrderedDict()
d['a'] = 1
d['b'] = 2
print(d) # Duy trì thứ tự chèn
3. defaultdict
from collections import defaultdict
scores = defaultdict(int)
scores['math'] = 90
print(scores['english']) # Mặc định 0
Trình sinh (Generator)
Hàm sinh với yield:
def squares(n):
for i in range(n):
yield i*i
for num in squares(5):
print(num)
Sao chép đối tượng
1. Sao chép nông (Shallow Copy)
import copy
original = [[1, 2], [3, 4]]
copied = copy.copy(original)
original[0][0] = 9
print(copied) # [[9, 2], [3, 4]]
2. Sao chép sâu (Deep Copy)
deep = copy.deepcopy(original)
original[0][0] = 5
print(deep) # [[9, 2], [3, 4]]