KIẾN THỨC PYTHON - TỪ CƠ BẢN TỚI NÂNG CAO

December 9, 2019

KIẾN THỨC PYTHON - TỪ CƠ BẢN TỚI NÂNG CAO

Python là một dạng ngôn ngữ lập trình được sử dụng khá phổ biến trên thế giới bởi những tiện ích mà nó đem lại. Nếu như bạn vẫn còn mơ hồ về Python thì bài viết này Jt1 sẽ giúp các lập trình viên khám phá “tất tần tật” mọi thứ về ngôn ngữ lập trình này từ cơ bản tới nâng cao.

 

 

1. Python là gì?

Python là một ngôn ngữ lập trình máy tính hướng tới đối tượng bậc cao, thường được dùng để phát triển các website và một số ứng dụng khác.

 

Lập trình viên ưu tiên sử dụng Python bởi nó rất dễ dàng để mã hóa và dễ hiểu. Nó cũng là một ngôn ngữ lập trình phù hợp giúp thu hẹp khoảng cách giữa doanh nghiệp và nhà phát triển. Tuy nhiên để so sánh thì Python chậm hơn C ++, C #, Java, điều này là do thiếu trình tối ưu hóa Just In Time. Ràng buộc không gian trắng cú pháp của Python làm cho nó hơi khó thực hiện đối với các lập trình viên mới vào nghề.

 

Cách Python hoạt động là khiến trình thông dịch chịu trách nhiệm dịch ngôn ngữ Python cấp cao sang ngôn ngữ máy cấp thấp.

 

 

 

2. Biến - Loại đối tượng và phạm vi của Python

Các biến lưu trữ thông tin có thể được sử dụng trong chương trình của bạn như là cách để giữ đầu vào của người dùng, trạng thái cục bộ của chương trình, v.v. Các biến thường được đặt tên để chúng có thể được tham chiếu trong mã. Ở Python hỗ trợ số, chuỗi, bộ, danh sách, bộ dữ liệu và từ điển.

 

Về phần số thì Python có hỗ trợ số nguyên, số thập phân và float. 

 

value = 1 #integer

value = 1.2 #float with a floating point

 

Về chuỗi là các chữ cái, giá trị của chuỗi được đặt trong dấu ngoặc kép. Chúng bất biến và khi đã được tạo thì không thể thay đổi. Khi các biến chuỗi được gán một giá trị mới bên trong, Python tạo một đối tượng mới để lưu trữ giá trị.

 

Về phạm vi, các biến được khai báo trong một hàm, như một ví dụ, chỉ có thể tồn tại trong khối. Một khi khối tồn tại, các biến cũng không thể truy cập được. Các biến có thể được truy cập từ bất kỳ hàm nào có phạm vi toàn cục. Bạn có thể khai báo một biến toàn cục bên ngoài các hàm.

 

3. Hoạt động

Hoạt động số, Python hỗ trợ cơ bản *, /, +, - và Python cũng hỗ trợ phân chia, lũy thừa và Modulus.

 

Về hoạt động của chuỗi, hàm concat 'A' + 'B' = 'AB' và lặp lại chuỗi sẽ là A * * 3 sẽ lặp lại A ba lần: AAA.

 

Đối với Regex, sử dụng:

split (): tách một chuỗi thành một danh sách thông qua regex.

sub (): thay thế chuỗi phù hợp thông qua regex.

subn (): thay thế chuỗi phù hợp thông qua regex và trả về số lần thay thế.

 

Đặt hoạt động, chúng ta có thể định nghĩa một biến đặt là: a = {1,2,3}

 

4. Bình luận

Khi muốn nhận xét dòng đơn sử dụng # và khi muốn nhận xét nhiều dòng thì dùng ``` đặt ở đầu và cuối bình luận.

 

5. Biểu thức

Biểu thức có thể thực hiện các hoạt động boolean như:

Bình đẳng: ==

Không bằng :! =

Lớn hơn:>

Ít hơn: <

Lớn hơn hoặc bằng> =

Ít hoặc bằng <=

 

 

6. Cách tẩy

Chuyển đổi một đối tượng thành một chuỗi và kết xuất chuỗi thành một tệp được gọi là tẩy. Điều ngược lại được gọi là giải nén.

 

7. Chức năng

Các hàm cho phép chúng ta chia một ứng dụng lớn thành các phần nhỏ hơn, các hàm là chuỗi các câu lệnh mà bạn có thể thực thi trong mã của mình. Nếu bạn thấy sự lặp lại trong mã của mình thì hãy tạo một hàm có thể sử dụng lại và sử dụng nó trong chương trình của bạn. Các chức năng cũng có thể tham khảo các chức năng khác và loại bỏ sự lặp lại trong mã của bạn.

 

8. Các Mô-đun

Về khái niệm thì, Python được vận chuyển với hơn 200 mô-đun tiêu chuẩn, Mô-đun là một thành phần nhóm chức năng tương tự của giải pháp python của bạn. Bất kỳ tập tin mã python có thể được đóng gói như một mô-đun và sau đó nó có thể được nhập. 

PYTHONPATH là một biến môi trường, ở đây cho biết nơi trình thông dịch Python cần điều hướng để định vị các mô-đun. PYTHONHOME là một đường dẫn tìm kiếm mô-đun thay thế.

 

9. Các gói

Gói là một thư mục của các mô-đun, các gói cho phép bạn tổ chức các mô-đun tốt hơn giúp bạn giải quyết các vấn đề và tìm kiếm các mô-đun dễ dàng hơn. Một gói có thể chứa một số lượng lớn các mô-đun. Nếu giải pháp của bạn cung cấp chức năng tương tự thì có thể nhóm các mô-đun thành một gói bằng lệnh: 

from packageroot.packagefolder.mod import my_object

 

10. Các điều kiện

Điều kiện để viết: 

if a == b:

 print 'a is b'

elif a < b:

 print 'a is less than b'

elif a > b:

 print 'a  is greater than b'

else:

 print 'a is different'

Lưu ý rằng các dấu hai chấm và ngoặc được viết để thể hiện sự logic trong hàm.

 

11. Các vòng lặp

Để cung cấp một điều kiện và chạy vòng lặp cho đến khi điều kiện được đáp ứng sử dụng lệnh: 

while (input < 0):

do_something(input)

input = input-1

Nếu muốn kết thúc các vòng lặp, sử dụng lệnh: 

for i in range(0,10):

 if (i==5):

  break

while True:

  x = get_value()

  if (x==1):

    break

 

12. Lệnh truy hồi

Quy tắc là sẽ là các lệnh: 

0! = 1 #Factorial of 0 is 1

n! = n(n-1)! #Factorial of n is n * factorial of n-1

 

Các bước bắt đầu từ việc tạo một hàm gọi là giai thừa với đầu vào n và nếu n = 0 trả về 1 làm n x giai thừa của n-1:

 

def factorial(n):

  if n==0:

    return 1

  else:

    return n * factorial(n-1)

 

13. Các khung và Stack

Mã Python được tải vào các khung được đặt trong Stack, các hàm được tải trong một khung cùng với các tham số và biến. Stack phác thảo việc thực hiện các chức năng và các biến được khai báo bên ngoài các hàm được lưu trữ trong __main__.

 

14. Về bộ sưu tập dữ liệu

Danh sách là các cấu trúc dữ liệu có thể chứa một chuỗi các giá trị của bất kỳ loại dữ liệu nào, chúng có thể thay đổi (có thể cập nhật). Danh sách được lập chỉ mục bởi số nguyên, để tạo danh sách, sử dụng dấu ngoặc vuông: my_list = ['A', 'B'].

 

Để thêm / cập nhật / xóa một mục, sử dụng chỉ mục:

 

my_list.append ('C') #adds at the end

my_list [1] = 'D' #update

my_list.pop (1) # removes

 

Bộ dữ liệu giống như các danh sách theo nghĩa là chúng có thể lưu trữ một chuỗi các đối tượng và nó nhanh hơn danh sách, bất biến:

 

my_tuple = tuple()

or

my_tuple = 'f','m'

or

my_tuple = ('f', 'm')

 

Về bộ từ điển thì từ điển là một trong những cấu trúc dữ liệu quan trọng nhất trong thế giới lập trình. Nó lưu trữ các đối tượng cặp khóa / giá trị. Nó có nhiều lợi ích, ví dụ: tối ưu hóa chức năng truy xuất dữ liệu. Bạn có thể sử dụng lệnh sau:

 

my_dictionary = dict()

my_dictionary['my_key'] = 1

my_dictionary['another_key'] = 2

 

15. Biên dịch và liên kết

Các tính năng này có thể được sử dụng để sử dụng một tệp được viết bằng ngôn ngữ khác, ví dụ: C hoặc C ++, v.v. Khi mã được ghi vào một tệp thì tệp có thể được đặt trong thư mục Mô-đun. Điều quan trọng là thêm một dòng trong tệp Setup.local để đảm bảo rằng tệp mới được tạo có thể được tải.

 

16. Biến lặp

Biến lặp cho phép di chuyển qua bộ sưu tập, tất cả các trình vòng lặp chứa các hàm __iter __ () và __next __ (). Đơn giản nhất là bạn chỉ cần thực hiện iter (x) trên danh sách, từ điển, chuỗi hoặc bộ.

 

Ở phần này thì bộ lọc có nhiệm vụ lọc ra các giá trị dựa trên một điều kiện. Bản đồ áp dụng một tính toán trên mỗi giá trị của một bộ sưu tập nó phản ánh một giá trị này sang một giá trị khác, ví dụ: chuyển đổi văn bản thành số nguyên.

 

17. Thiết kế hướng đối tượng và các lớp

Python cho phép chúng ta tạo các loại tùy chỉnh của mình. Những kiểu do người dùng định nghĩa được gọi là các lớp. Các lớp có thể có các thuộc tính / thuộc tính và chức năng tùy chỉnh, thiết kế hướng đối tượng cho phép các lập trình viên xác định mô hình kinh doanh của họ là các đối tượng với các thuộc tính và chức năng cần thiết. Python cũng hỗ trợ sự kế thừa. Bạn sử dụng câu lệnh:

 

class MyClass:

  def MyClassFunction(self):  #self = reference to the object

    return 5

#Create new instance of MyClass and then call the function

m = MyClass()

returned_value = m.MyClassFunction()

 

Lưu ý rằng hàm __init__ có mặt trong tất cả các lớp. Nó được thực thi khi chúng ta được yêu cầu khởi tạo một đối tượng của một lớp. Hàm __init__ có thể lấy bất kỳ thuộc tính nào mà chúng ta muốn đặt:

 

class MyClass:

   def __init__(self, first_property):

       self.first_property = first_property

   def MyClassFunction(self):

      return self.first_property

 

#Create an instance

m = MyClass(123)

r = m.MyClassFunction()

r will be 123

 

Sử dụng hàm đối tượng __cmp__ nếu bạn muốn cung cấp logic tùy chỉnh để so sánh hai đối tượng. Nó trả về 1 (lớn hơn), -1 (thấp hơn) và 0 (bằng) để biểu thị đẳng thức của hai đối tượng. 

 

Ngoài ra, các phương thức của một đối tượng có thể bị quá tải bằng cách cung cấp thêm đối số làm ví dụ. Bạn cũng có thể quá tải một toán tử bằng cách triển khai thực hiện riêng cho hàm  __add__.

 

18. Thiết kế hướng đối tượng - Kế thừa

Python hỗ trợ kế thừa các đối tượng. Kết quả là, một đối tượng có thể kế thừa các chức năng và thuộc tính của “cha mẹ” nó. Một lớp kế thừa có thể chứa logic khác nhau trong các chức năng của nó. Bạn có thể tạo ra các lớp như:

 

class ParentClass:

 def my_function(self):

   print 'I am here'

 

class SubClass1(ParentClass):

class SubClass2(ParentClass):

 

19. Không gian lưu trữ heap và quản lý bộ nhớ

Tất cả các đối tượng trong Python được lưu trữ trong không gian heap - đây là một vùng lưu trữ đặc biệt cho phép có thể truy cập vào trình thông dịch Python. Điều đó có nghĩa là Python có thể phân bổ và phân bổ lại bộ nhớ cho chương trình của bạn một cách tự động, chẳng hạn như trong C ++ hoặc C#. 

 

Trách nhiệm của nó là xóa khoảng trống trong bộ nhớ của những đối tượng không được tham chiếu / sử dụng trong chương trình. Vì nhiều đối tượng có thể chia sẻ các tham chiếu bộ nhớ, python sử dụng hai cơ chế:

  • Đếm tham chiếu.

  • Cơ chế thứ hai đảm nhiệm các tham chiếu vòng tròn, còn được gọi là tham chiếu theo chu kỳ.

20. Input/Output

Đầu tiên, sử dụng lệnh trên bàn phím:

 

user_says = raw_input()

print(user_says)

 

Riêng với các tệp, sử dụng câu lệnh with / as để mở và đọc tệp. Nó tương đương với việc sử dụng câu lệnh trong C #. Để mở tập tin, bạn chỉ cần dùng lệnh:

 

with open(file path, 'r') as my_file:

  for line in my_file

#File is closed due to with/as

 

Để mở một kết nối, bạn sử dụng:

 

import MySQLdb

database = MySQLdb.connect(“host”=”server”, “database-user”=”my username”, “password”=”my password”, “database-name”=”my database”)

cursor = database.cursor()

 

Đối với dịch vụ trên website, để truy cứu một dịch vụ tĩnh, bạn cần nhập lệnh: 

import requests

url = 'http://myblog.com'

response = requests.get(url).text

 

21. Xử lý lỗi

Nếu bạn muốn tăng ngoại lệ thì hãy sử dụng từ khóa nâng cao:

 

try:

  raise TypError

except:

  print('exception')

 

Để nắm được những ngoại lệ trong Python bạn nên dùng:

 

try:

   do_something()

except:

   print('exception')

 

22. Đa luồng và GIL

Về cơ bản thì GIL là khóa phiên dịch toàn cầu. Nó đảm bảo rằng các luồng có thể thực thi bất cứ lúc nào và cho phép các chu kỳ CPU chọn luồng cần thiết được thực thi. GIL được truyền vào các luồng hiện đang được thực thi. 

 

Lưu ý: GIL thêm chi phí chung để thực hiện. Do đó, hãy chắc chắn rằng bạn muốn chạy nhiều chủ đề.

 

23. Mẫu thiết kế

Mẫu thiết kế trong Python có thể thêm chức năng để giải mã. Chúng cơ bản là các hàm gọi các đối tượng / hàm khác. Bạn có thể bọc một lớp / hàm và sau đó một mã cụ thể sẽ được thực thi bất cứ khi nào hàm được gọi. Bạn cũng có thể triển khai logic chung để ghi nhật ký, kiểm tra kiểm tra bảo mật, v.v. và sau đó gán phương thức với thẻ @property.

 

24. Kiểm tra đơn vị trong Python

Có một số thư viện thử nghiệm và mô phỏng đơn vị có sẵn trong Python. Bạn có thể thử kiểm tra đơn vị bằng lệnh:

 

import unittest

class TestClass(unittest.TestCase):

 def my_test(self):

   self.assertEqual(my_function(1), 0)) #checking 1 becomes 0

 

Trên đây là toàn bộ những kiến thức từ cơ bản tới nâng cao để hiểu rõ về Python trong lập trình cho lập trình viên. Hy vọng bài viết đã có thể giải đáp toàn bộ thắc mắc của bạn về ngôn ngữ lập trình này. Đừng quên tiếp tục theo dõi Jt1 để học thêm về Python qua những bài viết khác nhé!

 

Nguồn Tổng hợp

---

JT1 - IT Recruitment Agency
Website
https://www.jt1.vn
Email: hi@jt1.vn
Điện thoại: +8428 6675 6685
Xem thêm các bài viết khác tại: https://www.jt1.vn/blog
Theo dõi chúng tôi tại: https://www.facebook.com/jt1asia/

 

Please reload

Recent Posts

Please reload

banner-top-it-job-right.gif

Archive

Please reload

Tags