Ảnh của Juan Gomez trên unplash Bạn rất có thể đã nghe những điều tuyệt vời về ngôn ngữ lập trình Python-cú pháp giống như tiếng Anh, dễ học, rất linh hoạt và con dao lập trình của Quân đội Thụy Sĩ. Python rất dễ học và ngôn ngữ kết hợp các ý tưởng từ các mô hình chức năng, có cấu trúc và OOP, làm cho nó trở thành một ngôn ngữ cực kỳ mạnh mẽ và năng động. Trong trường hợp các ngôn ngữ khác có nhiều dòng mã để hoàn thành một nhiệm vụ, Python thường có thể làm tương tự bằng cách sử dụng một lớp lót đơn. Đó là niềm vui của lập trình trong Python. Và người mới bắt đầu và các chuyên gia cũng đang học các thủ thuật mới mỗi ngày. Bài viết này thảo luận về một vài tính năng quan trọng của ngôn ngữ Python thường bị bỏ qua hoặc không được hiểu rõ, cũng như một vài điểm nổi bật mà các nhà phát triển dày dạn nhất. Cụ thể, bài viết này sẽ thảo luận: Danh sách hiểu Sử dụng các hàm bất kỳ () và tất cả () Sử dụng hàm zip () Các nhà khai thác so sánh chuỗi Chức năng Lambda Iterator là một chủ đề trong Python không dễ dàng được đánh giá cao và hiểu. Và vì vậy tôi sẽ cố gắng hợp lý hóa nó trong bài viết này. Đầu tiên, từ IT ITRATE có nghĩa là để có được một mục từ một cái gì đó, một mục tại một thời điểm. Trong Python, một số loại tích hợp hỗ trợ lặp lại (chúng tôi nói rằng chúng là một đối tượng có thể đi được). Ví dụ. Hoặc, A print(next(i))5: Tương tự, hàm print(next(i))9 trả về một đối tượng nums = [3,4,1,7,9,5] 0, là một nums = [3,4,1,7,9,5] 1.Iterator vs IterborableTrong Python, hai thuật ngữ luôn xuất hiện khi chúng ta nói về sự lặp lại - có thể lặp lại và lặp đi lặp lại. nums = [3,4,1,7,9,5] Một nums = [3,4,1,7,9,5] 1 là một đối tượng mà bạn có thể lặp lại (chẳng hạn như print(next(i))4, print(next(i))5, v.v.), trong khi nums = [3,4,1,7,9,5] 5 là một đối tượng mà bạn có thể lặp lại thông qua việc sử dụng hàm nums = [3,4,1,7,9,5] 6. Một nums = [3,4,1,7,9,5] 5 được tạo khi bạn gọi hàm nums = [3,4,1,7,9,5] 8 trên đối tượng nums = [3,4,1,7,9,5] 1.print(next(i)) # 3 Mỗi nums = [3,4,1,7,9,5] 5 là một nums = [3,4,1,7,9,5] 1, trong khi không phải mọi nums = [3,4,1,7,9,5] 1 là nums = [3,4,1,7,9,5] 5. Ví dụ, đối tượng print(next(i))4 là nums = [3,4,1,7,9,5] 1, nhưng nó không phải là nums = [3,4,1,7,9,5] 5.print(next(i)) Bối rối? Xem xét ví dụ sau: nums = [3,4,1,7,9,5] class Fib: def __init__(self, max): self.max = max self.a = 0 self.b = 1 def __iter__(self): return self def __next__(self): fib = self.a if fib > self.max: raise StopIteration self.a, self.b = self.b, self.a + self.b return fib7 là một print(next(i))'''---------------------------------------------------------------------------StopIteration Traceback (most recent call last)<ipython-input-27-58c5a451ce44> in <module>----> 1 print(next(i))StopIteration: '''4, đó là một nums = [3,4,1,7,9,5]i = iter(nums)while True: try: print(next(i), end=' ') except StopIteration: break# 3 4 1 7 9 51. Khi bạn sử dụng vòng lặp fib = Fib(1000)0 để lặp qua nội dung của nó, nó sẽ tự động chuyển đổi class Fib: def __init__(self, max): self.max = max self.a = 0 self.b = 1 def __iter__(self): return self def __next__(self): fib = self.a if fib > self.max: raise StopIteration self.a, self.b = self.b, self.a + self.b return fib7 thành nums = [3,4,1,7,9,5]i = iter(nums)while True: try: print(next(i), end=' ') except StopIteration: break# 3 4 1 7 9 55. Khi bạn in ra giá trị của fib = Fib(1000)3, nó sẽ gọi hàm nums = [3,4,1,7,9,5]i = iter(nums)while True: try: print(next(i), end=' ') except StopIteration: break# 3 4 1 7 9 56 trên nums = [3,4,1,7,9,5]i = iter(nums)while True: try: print(next(i), end=' ') except StopIteration: break# 3 4 1 7 9 55 để có được giá trị tiếp theo. Khi không có thêm các yếu tố nào để nhận được từ nums = [3,4,1,7,9,5]i = iter(nums)while True: try: print(next(i), end=' ') except StopIteration: break# 3 4 1 7 9 55, hàm nums = [3,4,1,7,9,5]i = iter(nums)while True: try: print(next(i), end=' ') except StopIteration: break# 3 4 1 7 9 56 sẽ tăng ngoại lệ fib = Fib(1000)8 và vòng lặp fib = Fib(1000)0 sẽ chấm dứt ngay khi ngoại lệ này.Tạo đối tượng Iterator class Fib: Bạn có thể chuyển đổi thủ công nums = [3,4,1,7,9,5] 1 thành đối tượng iterator bằng hàm nums = [3,4,1,7,9,5] 8:Fib class contains the following:
Thực hiện các đối tượng lặp fib = Fib(1000) Có thể có những trường hợp khi bạn muốn tạo các đối tượng nums = [3,4,1,7,9,5] 5 của riêng mình. Hãy xem xét kịch bản sau - bạn muốn tạo chuỗi các số Fibonacci lên đến giá trị tối đa là 1000, nhưng bạn không cần tất cả các số cùng một lúc. Tất cả những gì bạn biết là bạn cần tạo ra các con số theo yêu cầu. Đây là một trường hợp sử dụng hoàn hảo cho các trình lặp. Đây là cách bạn có thể làm điều này bằng cách tạo đối tượng nums = [3,4,1,7,9,5] 5 của riêng bạn:print(next(fib)) # 0 Trong nội bộ, lớp FIB chỉ cần lưu trữ ba biến - s = 'Hello' 12, s = 'Hello' 13 và s = 'Hello' 14.Fib class only needs to store three variables — s = 'Hello' 12, s = 'Hello' 13, and s = 'Hello' 14.Nếu bạn muốn nhận tất cả các số trong chuỗi, bạn có thể sử dụng vòng lặp fib = Fib(1000) 0:s = 'Hello' 0Ngoài ra, để buộc lớp FIB trả về tất cả các số cùng một lúc, hãy gọi nó bằng hàm danh sách ():Fib class to return all the numbers at once, call it using the list() function: s = 'Hello' 1Triển khai trình lặp bằng cách sử dụng máy phát điệnMặc dù bạn có thể thực hiện s = 'Hello' 16 bằng cách sử dụng s = 'Hello' 17 với các chức năng s = 'Hello' 03 và s = 'Hello' 05, nhưng đôi khi nó có quá nhiều rắc rối. Một cách đơn giản hơn là sử dụng máy phát điện. Trình tạo cho phép bạn tạo trình lặp từ các chức năng. Như thường lệ, một ví dụ sẽ làm sạch không khí.
Một lần nữa, hãy xem xét ví dụ của ví dụ Fibonacci. Hãy tưởng tượng bây giờ yêu cầu thay đổi một chút. Thay vì tạo ra chuỗi số lên đến một số tối đa cụ thể, giờ đây bạn muốn tạo ra một chuỗi vô hạn của các số fibonacci. Bạn có thể thực hiện điều này bằng cách sử dụng một chức năng với một trình tạo: s = 'Hello' 2Điều này trông giống như một chức năng thông thường, ngoại trừ câu lệnh s = 'Hello' 20. Cụ thể, hàm s = 'Hello' 21 ở trên trả về s = 'Hello' 22Object.object.
Câu lệnh s = 'Hello' 20 giống như câu lệnh s = 'Hello' 24, với một ngoại lệ-khi câu lệnh s = 'Hello' 20 được thực thi, chương trình đình chỉ việc thực thi hàm, bảo tồn trạng thái của hàm và trả về giá trị; Lần tiếp theo người gọi gọi hàm () tiếp theo trên đối tượng s = 'Hello' 22, việc thực thi hàm tiếp tục ở nơi trước đó.next() function on the s = 'Hello' 22 object, the execution of the function continues where it previously left off.
Để xem cách thức hoạt động, hãy gọi hàm s = 'Hello' 21 và gọi hàm nums = [3,4,1,7,9,5] 6 trên đối tượng s = 'Hello' 22:s = 'Hello' 3
Danh sách hiểuMột trong những tính năng mang tính biểu tượng của Python là sự hiểu biết danh sách. Danh sách hiểu là một minh chứng hoàn hảo cho sự thanh lịch của Python-dễ đọc, dễ hiểu, đơn lẻ và mạnh mẽ. Danh sách hiểu cho phép bạn tạo danh sách bằng cú pháp sau: s = 'Hello' 4Ví dụ: để tạo danh sách các số chẵn từ 0 đến 10, bạn có thể sử dụng câu lệnh sau: s = 'Hello' 5Tại đây, bạn tạo ra một loạt các giá trị từ 0 đến 11 (độc quyền), với kích thước bước là 2. nghĩa là, 0,2,4,6,8 và 10. sau đó bạn sử dụng vòng lặp để lặp qua bộ này của các số sử dụng biến fib = Fib(1000) 3. Mỗi giá trị của n sau đó được thêm vào danh sách. Kết quả cuối cùng là:for loop to iterate through this set of numbers using the variable fib = Fib(1000) 3. Each value of n is then added to the list. The end result is:s = 'Hello' 6Bạn cũng có thể thêm một biểu thức tùy chọn sau khi có thể lặp lại, như thế này: s = 'Hello' 7Câu lệnh trên sẽ tạo ra kết quả tương tự. Trong trường hợp này N sẽ chỉ đảm nhận tất cả các số từ 0 đến 11 (độc quyền) chia hết cho 2. Lưu ý rằng bạn không được phép có điều kiện s = 'Hello' 31 ở đây:n will only take on all the numbers from 0 to 11 (exclusive) that is divisible by 2. Note
that you are not allowed to have an s = 'Hello' 31 condition here:s = 'Hello' 8Mặt khác, bạn cũng có thể đặt biểu thức của mình trước vòng lặp fib = Fib(1000) 0, như thế này:s = 'Hello' 9Trong tuyên bố trên, bạn đang kiểm tra xem N có chia hết cho 2. Nếu có, kết quả sẽ bao gồm N, nếu không nó sẽ bao gồm ____ ____133. Xin lưu ý rằng trong trường hợp này, tuyên bố s = 'Hello' 31 là bắt buộc.n is divisible by 2. If it is, the result will include n, else it will include “s = 'Hello' 33”. Do note that in this case, the s = 'Hello' 31 statement is mandatory.Khi không sử dụng danh sách hiểu biếtMặc dù danh sách hiểu là thanh lịch, có những lúc bạn không nên sử dụng nó. Bởi vì sự hiểu biết danh sách đòi hỏi tất cả các mục trong danh sách phải được tạo và lưu trữ trong bộ nhớ, nên nó rất kém hiệu quả khi nói đến việc xử lý số lượng lớn các mặt hàng. Hãy xem xét trường hợp bạn muốn tổng hợp tất cả các số từ 1 đến 1000000000. Sử dụng danh sách hiểu, mã của bạn sẽ trông giống như: r = range(5) 0Vấn đề là trước tiên bạn cần tạo ra 1 tỷ số trong danh sách trước khi bạn có thể tổng hợp chúng bằng hàm sum (). Câu lệnh trên sử dụng rất nhiều bộ nhớ. Trong kịch bản này, tốt hơn là sử dụng một trình tạo, như thế này:sum() function. The above statement uses a lot of memory. In this scenario, it is better to use a generator, like this: r = range(5) 1
Sử dụng các trình tạo, mỗi lần một số được tạo, nó được thêm vào tổng hiện tại và sau đó bị loại bỏ. Do đó, không cần lưu trữ 1 tỷ số trong bộ nhớ. Sử dụng các hàm bất kỳ () và tất cả ()Hàm s = 'Hello' 35 kiểm tra một số khác (danh sách, tuple, bộ, trình tạo, v.v.) để xem liệu có bất kỳ mục nào là s = 'Hello' 36 không. Mặt khác, chức năng s = 'Hello' 37 kiểm tra một điều khác để xem tất cả các mục là s = 'Hello' 36.Sau đây kiểm tra danh sách để xem liệu bất kỳ mục nào trong class Fib:7 đều là số thậm chí: r = range(5) 2Nếu bạn muốn xem tất cả các số trong num đều chẵn, thì hãy sử dụng hàm s = 'Hello' 37:r = range(5) 3Vì vậy, đây là một bài kiểm tra để tự kiểm tra. Đưa ra một danh sách các từ, bạn có thể viết mã để kiểm tra xem có từ nào trong danh sách có chứa nguyên âm không (tức là ‘aeoiu,)? r = range(5) 4Bây giờ, hãy tự mình thử trước khi bạn quay lại để trả lời. Sẳn sàng? Xong? Dưới đây là câu trả lời của tôi bằng cách sử dụng hàm s = 'Hello' 35 và danh sách hiểu:r = range(5) 5Để hiểu câu lệnh trên, bạn bắt đầu với biểu thức bên phải nhất: r = range(5) 6Điều này trả về một máy phát điện. Sau đó, với mỗi từ, bạn kiểm tra từng ký tự để xem nó có chứa bất kỳ ký tự nào trong ‘AEIOU, không: r = range(5) 7Hàm s = 'Hello' 35 thực hiện ngắn mạch-miễn là một ký tự nằm trong ‘Aeiou, không cần phải kiểm tra thêm. Và việc ngắn mạch này được mở rộng cho tất cả các từ trong danh sách:r = range(5) 8Nếu bất kỳ từ nào trong danh sách có một ký tự trong ‘AEIOU, thì hoạt động sẽ dừng và trả về s = 'Hello' 36.Sử dụng hàm zip ()Hàm s = 'Hello' 44 kết hợp hai lần lặp lại với nhau. Xem xét các đoạn mã sau:r = range(5) 9Bạn có ba bộ ngày, mỗi ngày được lưu trữ trong ba danh sách riêng biệt. Nếu bạn muốn trích xuất tất cả các ngày, bạn có thể kết hợp chúng bằng hàm s = 'Hello' 44:nums = [3,4,1,7,9,5] 0Nhưng hàm ____144 trả về một đối tượng s = 'Hello' 47 mà bạn phải lặp lại để có được nội dung của nó. Cách dễ nhất là sử dụng danh sách hiểu, như thế này:s = 'Hello' 44 function returns a s = 'Hello' 47 object, which you must iterate over to get its content. The
easiest way is to use list comprehension, like this:nums = [3,4,1,7,9,5] 1Sau đó, bạn có thể chuyển đổi từng tuple trong danh sách thành đối tượng s = 'Hello' 48:nums = [3,4,1,7,9,5] 2Các nhà khai thác so sánh chuỗiKhi thực hiện so sánh, người ta thường kiểm tra xem một giá trị có nằm trong một phạm vi cụ thể không. Ví dụ: bạn muốn kiểm tra xem một biến có nhiều hơn 2 và dưới 6 không, và do đó mã thông thường trông như thế này: nums = [3,4,1,7,9,5] 3Tuy nhiên, Python hỗ trợ các toán tử so sánh chuỗi chuỗi và do đó bạn có thể viết lại biểu thức so sánh ở trên như thế này: nums = [3,4,1,7,9,5] 4Chắc chắn trông gọn gàng hơn và dễ hiểu hơn! Không sử dụng các đối tượng có thể thay đổi làm đối số mặc địnhPython hỗ trợ các đối số tùy chọn - Đối số nếu không được cung cấp sẽ được cung cấp một giá trị mặc định. Tính năng có vẻ đơn giản và đơn giản này có một số hành vi bất ngờ nếu bạn không cẩn thận. Xem xét những điều sau đây nums = [3,4,1,7,9,5] 5Đối số thứ hai s = 'Hello' 49 là tùy chọn. Nếu không được cung cấp một giá trị ____149 sẽ giả định một danh sách trống. Trong chức năng, s = 'Hello' 51 sẽ được thêm vào s = 'Hello' 49. Để dễ dàng nhìn thấy giá trị của s = 'Hello' 49, tôi in nó ra trong hàm.Hãy để thử nghiệm Gọi chức năng với cả hai đối số được cung cấp: nums = [3,4,1,7,9,5] 6Kết quả ở trên có vẻ hợp lý và hoạt động phù hợp với sự hiểu biết của chúng tôi. Bây giờ, hãy bỏ qua đối số thứ hai và gọi chức năng với s = 'Hello' 54. Vì đối số thứ hai hiện bị bỏ qua, s = 'Hello' 49 nên giả định s = 'Hello' 56. Việc nối thêm một s = 'Hello' 54 đến s = 'Hello' 56 sẽ dẫn đến s = 'Hello' 59, như mong đợi:nums = [3,4,1,7,9,5] 7Tuy nhiên, nếu bạn gọi lại chức năng với cùng một đối số, bây giờ bạn sẽ nhận được s = 'Hello' 60:nums = [3,4,1,7,9,5] 8Gọi hàm một lần nữa mang lại s = 'Hello' 61:nums = [3,4,1,7,9,5] 9Bạn sẽ mong đợi rằng mỗi khi bạn gọi hàm, s = 'Hello' 49 sẽ được khởi tạo thành s = 'Hello' 56. Tuy nhiên, đây rõ ràng không phải là trường hợp. Hóa ra đối với các đối số tùy chọn, nếu giá trị mặc định là loại có thể thay đổi (danh sách là loại có thể thay đổi), giá trị mặc định sẽ chỉ được khởi tạo một lần. Khi hàm sau đó được gọi, s = 'Hello' 49 sẽ tiếp tục giá trị hiện có của nó. Và điều này dẫn đến khá bất ngờ cho khá nhiều người.
Vì vậy, làm thế nào để bạn sửa chữa nó để hoạt động như bạn đã dự định? Dễ nhất là thực hiện khởi tạo s = 'Hello' 49 bên trong hàm và đặt nó thành s = 'Hello' 66 trong khai báo chức năng:print(next(i)) # 3 0Chức năng của bạn bây giờ sẽ hoạt động như dự định: print(next(i)) # 3 1Chức năng LambdaPython hỗ trợ việc sử dụng các hàm Lambda. Các hàm Lambda là các hàm ẩn danh mà không có tên. Về bản chất, các hàm Lambda là các hàm biểu hiện đơn. Việc sử dụng phù hợp các chức năng Lambda có thể làm cho mã của bạn dễ đọc và có thể duy trì hơn. Hãy để cố gắng hiểu làm thế nào chức năng Lambda hoạt động. Xem xét danh sách các số sau, class Fib:7: print(next(i)) # 3 2Giả sử bạn muốn nhân mỗi số với một hằng số, giả sử, 2. Điều này có thể dễ dàng đạt được bằng cách sử dụng một số phương pháp. Một là mặc dù danh sách hiểu biết: print(next(i)) # 3 3Một phương pháp khác là sử dụng hàm s = 'Hello' 68. Hàm s = 'Hello' 68 cho phép bạn áp dụng một hàm trên tất cả các yếu tố của một điều đáng tin cậy (như một danh sách), do đó ánh xạ (do đó tên của nó) nó từ giá trị này sang giá trị khác. Để hiểu làm thế nào chức năng s = 'Hello' 68 hoạt động, hãy để Lừa làm việc trên từng bước một.Hàm s = 'Hello' 68 có hai đối số - một hàm và một hàm. Đối với chức năng, hãy để xác định một hàm gọi là s = 'Hello' 72, với tham số đầu vào và chuyển nó đến hàm s = 'Hello' 68:print(next(i)) # 3 4Khi xử lý các chức năng có chức năng khác (chẳng hạn như hàm s = 'Hello' 68), tôi luôn muốn xác định hàm và in ra các đối số trước để tôi có thể kiểm tra những gì được truyền vào hàm. Khi bạn chạy đoạn mã trên, không có gì được in ra. Điều này là do hàm s = 'Hello' 68 trả về một đối tượng s = 'Hello' 76, bản thân nó là một trình lặp (và do đó có thể lặp lại). Bạn có thể xác nhận nếu một đối tượng có thể lặp lại bằng cách sử dụng các câu lệnh sau:print(next(i)) # 3 5Vì s = 'Hello' 77 là một trình lặp, để bạn thấy đầu ra của hàm thay đổi (), bạn có thể sử dụng chuyển đổi nó thành print(next(i))4 bằng hàm s = 'Hello' 79:change() function, you can use convert it to a print(next(i))4 using the s = 'Hello' 79 function:print(next(i)) # 3 6Bây giờ bạn có thể thấy đầu ra sau: print(next(i)) # 3 7Vì vậy, bây giờ rõ ràng hàm s = 'Hello' 72 đang làm gì - về cơ bản nó có tất cả các số trong danh sách class Fib:7 từng cái một và sau đó trả về số. Bây giờ, hãy để Lừa chỉ trả về mỗi số nhân với 2: print(next(i)) # 3 8Và đầu ra sẽ là: print(next(i)) # 3 9Với một bức tranh rõ ràng hơn về những gì hàm s = 'Hello' 72 đang làm, bạn có thể tập trung vào việc chuyển đổi nó thành hàm Lambda.
Vì vậy, chức năng s = 'Hello' 72 hiện có thể được viết lại như sau:print(next(i))0 Điều gì sẽ xảy ra nếu bạn muốn chuyển đổi các số thành chuỗi và tiền tố mỗi chuỗi với dấu hiệu ____ ____184? Bạn có thể làm điều đó bằng cách sử dụng chuỗi F: print(next(i))1
Làm thế nào về việc áp dụng thuế bán hàng 7% cho mỗi mặt hàng? Biến F-String hỗ trợ các biểu thức Python: print(next(i))2 Điều gì sẽ xảy ra nếu thuế bán hàng chỉ áp dụng cho các mặt hàng từ 5 đô la trở lên? Bạn có thể làm điều đó bằng cách sử dụng các toán tử python ternary: print(next(i))3 Miễn là nội dung của hàm có thể được hoàn thành trong một biểu thức duy nhất, bạn có thể sử dụng hàm lambda thay cho hàm thông thường. Các chức năng Lambda rất hữu ích và đặc biệt tuyệt vời khi xử lý các khung dữ liệu gấu trúc. Bản tóm tắtTôi hy vọng bây giờ bạn hiểu rõ hơn về một số tính năng gọn gàng trong Python. Nếu bạn nghĩ rằng tôi đã bỏ lỡ bất kỳ tính năng cụ thể nào đáng được đề cập, hãy cho tôi biết! Đá quý trong Python là gì?GEMS là một thư viện Python để lập trình các quy trình mô phỏng MDO, được xây dựng trên đỉnh Numpy2, SCIPY3 và MATPLOTLIB4.a Python library for programing MDO simulation processes, built on top of NumPy2, SciPy3 and Matplotlib4.
Python có dễ học không?Python được xem xét rộng rãi trong số các ngôn ngữ lập trình dễ nhất cho người mới bắt đầu học hỏi. Nếu bạn quan tâm đến việc học ngôn ngữ lập trình, Python là một nơi tốt để bắt đầu. Nó cũng là một trong những người được sử dụng rộng rãi nhất.. If you're interested in learning a programming language, Python is a good place to start. It's also one of the most widely used.
Tại sao Python là phổ biến?Python rất dễ học, nó sử dụng cú pháp đơn giản hóa với sự nhấn mạnh vào ngôn ngữ tự nhiên, cho một đường cong học tập dễ dàng hơn nhiều cho người mới bắt đầu.Và, vì Python có thể sử dụng miễn phí và được hỗ trợ bởi một hệ sinh thái cực kỳ lớn của các thư viện và gói, nó thường là ngôn ngữ lựa chọn đầu tiên cho các nhà phát triển mới.
It uses a simplified syntax with an emphasis on natural language, for a much easier learning curve for beginners. And, because Python is free to use and is supported by an extremely large ecosystem of libraries and packages, it's often the first-choice language for new developers.
Ngôn ngữ Python được sử dụng để làm gì?Python là ngôn ngữ lập trình máy tính thường được sử dụng để xây dựng các trang web và phần mềm, tự động hóa các tác vụ và tiến hành phân tích dữ liệu.Python là một ngôn ngữ đa năng, có nghĩa là nó có thể được sử dụng để tạo ra nhiều chương trình khác nhau và không chuyên về bất kỳ vấn đề cụ thể nào.build websites and software, automate tasks, and conduct data analysis. Python is a general-purpose language, meaning it can be used to create a variety of different programs and isn't specialized for any specific problems. |