Compile function trong Python
Compile function trong Python

Hàm compile() được sử dụng để biên dịch mã nguồn Python thành bytecode hoặc các đối tượng mã nguồn có thể thực thi. Đơn giản là bạn có thể biến một đoạn string python thành một đoạn mã có thể thực thi.

string_code = """
print(55)
print(88)
"""
x = compile(string_code, 'test', 'exec')
exec(x) # => khối lệnh sẽ in ra 55 và 88 theo hai lệnh print. Lưu ý exec là một mode của complie

Hàm compile() trong Python có ba chế độ (mode) chính: “exec”, “eval” và “single”. Dưới đây là mô tả về từng chế độ:

Chế độ “exec” được sử dụng để biên dịch mã nguồn Python thành bytecode để thực thi các khối mã lớn. Trong chế độ này, hàm compile() trả về một đối tượng mã nguồn có thể thực thi.

source_code = """
def multiply(a, b):
    return a * b

result = multiply(5, 3)
print(result)
"""

compiled_code = compile(source_code, 'any_file_name', mode="exec")
exec(compiled_code)
```
# compile(source, filename, mode, flag, dont_inherit, optimize)
Trong ví dụ này, chúng ta sử dụng chế độ "exec" để biên dịch đoạn mã nguồn trong biến `source_code` thành bytecode. Đối tượng mã nguồn này sau đó được thực thi bằng cách sử dụng hàm `exec()`.

Chế độ “eval” được sử dụng để đánh giá một biểu thức Python và trả về kết quả của biểu thức đó. 

expression = "5 + 3 * 2"
compiled_code = compile(expression, filename="<string>", mode="eval")
result = eval(compiled_code)
print(result)  # Output: 11
```

Trong ví dụ này, chúng ta sử dụng chế độ "eval" để biên dịch biểu thức `"5 + 3 * 2"` thành bytecode. Đối tượng mã nguồn này sau đó được đánh giá bằng cách sử dụng hàm `eval()`.

Chế độ “single” được sử dụng để biên dịch các dòng mã Python đơn lẻ.

line_of_code = "print('Hello, world!')"
compiled_code = compile(line_of_code, filename="<string>", mode="single")
exec(compiled_code)
```

Trong ví dụ này, chúng ta sử dụng chế độ "single" để biên dịch dòng mã `"print('Hello, world!')"`. Đối tượng mã nguồn này sau đó được thực thi bằng cách sử dụng hàm `exec()`.

Hàm complie sẽ cho người dùng nhập các hàm python dạng string và thực thi chúng. Bạn có thể thấy một số ứng dụng phổ biến như Odoo chẳng hạn, cũng sẽ cho bạn viết code python để xử lý dữ liệu trực tiếp.

Last modified: September 20, 2023

Author

Comments

Write a Reply or Comment

Your email address will not be published.