Hướng dẫn what should i learn before python - tôi nên học gì trước khi bắt trăn

Bắt đầu với một ngôn ngữ lập trình mới có thể là một thách thức. Cho dù bạn là người mới bắt đầu hay là một cựu chiến binh grizzled, có một số câu hỏi bối cảnh lớn hơn để trả lời vượt xa chỉ đơn giản là học cú pháp của ngôn ngữ. Bài viết này cung cấp một cái nhìn tổng quan cấp cao về năm điều quan trọng cần ghi nhớ khi bạn bắt đầu hành trình vào Python. Bạn sẽ không tìm hiểu các chi tiết cụ thể của ngôn ngữ ở đây, nhưng bạn sẽ có được một bức tranh chung về cách thức hoạt động của Python. & NBSP;

Lưu ý: Cũng xem năm điều cần biết trước khi học video Python từ Red Hat Developer.: Also see the Five things to know before learning Python video from Red Hat Developer.

1: Python là một ngôn ngữ được giải thích

Ngôn ngữ lập trình rơi vào hai loại: những loại yêu cầu bước tổng hợp trước khi chạy (như Java và C) và các loại được giải thích trực tiếp từ mã nguồn (như JavaScript và Ruby). Python rơi vào loại sau. Các tệp mã nguồn Python, thường được gọi là các tập lệnh, được sử dụng trực tiếp bởi một trình thông dịch Python để thực thi.

Ví dụ: lấy mã sau:

print(‘Hello World’)

Khi được lưu vào một tệp, ví dụ

$ python hello.py
Hello World
1, nó có thể được chuyển cho trình thông dịch Python mà không cần một bước biên dịch rõ ràng:

$ python hello.py
Hello World

2: Python là hướng đối tượng, nhưng không độc quyền

Nếu bạn đến từ một nền hướng đối tượng, đặc biệt là Java trong đó mọi thứ là một đối tượng, ví dụ

$ python hello.py
Hello World
1 có thể trông hơi lạ. Tập lệnh một dòng không chỉ không xác định bất kỳ lớp nào, mà còn không phải là bên trong một tuyên bố phương thức.

Python hỗ trợ lập trình hướng đối tượng, nhưng bạn không bị khóa vào đó. Bạn có thể thêm các chức năng trực tiếp vào một tập lệnh khi có nhu cầu về chi phí và biến chứng của việc xác định một lớp.

Ví dụ, tham gia lớp học (rõ ràng là học thuật) sau:

class PhoneNumber(object):

    def __init__(self, area_code, number) -> None:
        self.area_code = area_code
        self.number = number

    def display(self):
        print(f'({self.area_code}) {self.number}')

pn = PhoneNumber('973', '555-1234')
pn.display()

Lưu ý: Bài viết này sẽ không đi vào chi tiết của Python. Tuy nhiên, điều đáng nói là tham chiếu

$ python hello.py
Hello World
3 trong đoạn này được sử dụng để chỉ ra các biến đối tượng.: This article won't get into the details of Python. However, it is worth mentioning that the
$ python hello.py
Hello World
3 reference in this snippet is used to indicate object variables.

Chạy tập lệnh này tạo ra đầu ra được định dạng

$ python hello.py
Hello World
4.

Nếu đầu ra là mục tiêu duy nhất, thì nó có thể không cần phải là một lớp. Bạn có thể viết lại nó như một hàm, thay vào đó:

def display_pn(area_code, number):
    print(f'({area_code}) {number}')

display_pn('973', '555-7890')

Tùy chọn thứ ba là kết hợp cả hai, xác định các hàm không trạng thái khi thích hợp và có đối tượng sử dụng các phương pháp này:

class PhoneNumber(object):

    def __init__(self, area_code, number) -> None:
        self.area_code = area_code
        self.number = number

    def display(self):
        display_pn(self.area_code, self.number)

def display_pn(area_code, number):
    print(f'({area_code}) {number}')

pn = PhoneNumber('973', '555-1234')
pn.display()

3: Python không được gõ mạnh (đó là một thanh kiếm hai lưỡi)

Hãy xem mã Python sau đây, hoàn toàn hợp lệ:

x = 'ba'
x = 1
x = print
x = None

Đó là & nbsp; đoạn trích gán cho biến

$ python hello.py
Hello World
5 một chuỗi theo nghĩa đen, một số nguyên, hàm và giá trị python cho null. Trên hết, biến thậm chí không cần phải được khai báo rõ ràng.

Python sử dụng khái niệm về việc gõ con vịt nếu nó bơi như một con vịt và những kẻ lừa đảo như một con vịt, nó có lẽ là một con vịt. Nói cách khác, nếu giá trị của một biến có một số khả năng nhất định, loại đối tượng thực tế thì nó không thực sự quan trọng.

Lấy khái niệm về việc lặp lại làm ví dụ. Chức năng tích hợp

$ python hello.py
Hello World
6 lặp lại trên một bộ sưu tập các mục. Làm thế nào những mặt hàng được lưu trữ là không liên quan; Phần quan trọng là đối tượng hỗ trợ khả năng lặp đi lặp lại.

Điều này khá rõ ràng cho các cấu trúc đơn giản như danh sách và bộ:

x = [1, 2, 3]  # list
y = {1, 2, 3}  # set

for i in x:
    print(i)

for i in y:
    print(i)

Đối với các cặp giá trị khóa (được gọi là Dict in Python), hàm

$ python hello.py
Hello World
6 sẽ lặp lại chỉ các phím (tạo ra đầu ra
$ python hello.py
Hello World
8 từ đoạn trích sau):

z = {'a': 1, 'b': 2, 'c': 3}

for i in z:
    print(i)

Tuy nhiên, có những lúc, sức mạnh và tính linh hoạt này có thể tạo ra ... kết quả thú vị. Ví dụ, một chuỗi cũng được coi là có thể lặp lại, có nghĩa là nó có thể được chuyển vào vòng lặp

$ python hello.py
Hello World
6 mà không tạo ra lỗi thời gian chạy. Nhưng kết quả thường bất ngờ:

w = 'water'

for i in w:
    print(i)

Đoạn trích đó sẽ chạy mà không có lỗi, tạo ra những điều sau:

w
a
t
e
r

Lưu ý: Ví dụ cụ thể này có nghĩa là để chứng minh một tình huống trong đó danh sách độ dài 1 (nói cách khác, một danh sách với nước từ) đã được mong đợi, thay vì chuỗi theo nghĩa đen. Có nhiều tình huống khác mà việc gõ vịt không tạo ra ngoại lệ thời gian chạy; Tuy nhiên, hành vi không phải là những gì được dự định.: This particular example is meant to demonstrate a situation where a list of length 1 (in other words, a list with the word water) was expected, rather than the literal string. There are many other situations where duck typing doesn't produce a runtime exception; however, the behavior is not what was intended.

4: Vấn đề khoảng trắng trong Python

Có vẻ kỳ lạ khi làm nổi bật một cái gì đó dường như tầm thường như khoảng trắng, nhưng đó là một khía cạnh quan trọng của cú pháp của Python mà nó đảm bảo đề cập.

Python sử dụng thụt lề để chỉ ra phạm vi, giải phóng nó khỏi các đối số về vị trí nẹp xoăn mà các ngôn ngữ khác gặp phải. Nói chung, một khối mã được xác định bởi các câu lệnh có cùng mức thụt. Nhìn lại ví dụ về số điện thoại:

$ python hello.py
Hello World
0

Hai bài tập trong phương thức

class PhoneNumber(object):

    def __init__(self, area_code, number) -> None:
        self.area_code = area_code
        self.number = number

    def display(self):
        print(f'({self.area_code}) {self.number}')

pn = PhoneNumber('973', '555-1234')
pn.display()
0 (triển khai của một hàm tạo) của Python) được coi là một phần của định nghĩa phương thức. Chúng tôi biết điều này bởi vì chúng được thụt vào hơn so với tuyên bố và chia sẻ cùng một cấp độ thụt. Nếu câu lệnh thứ hai (
class PhoneNumber(object):

    def __init__(self, area_code, number) -> None:
        self.area_code = area_code
        self.number = number

    def display(self):
        print(f'({self.area_code}) {self.number}')

pn = PhoneNumber('973', '555-1234')
pn.display()
1) được bù bởi ngay cả một không gian theo một trong hai hướng, mã sẽ không chạy (với một lỗi tương tự như
class PhoneNumber(object):

    def __init__(self, area_code, number) -> None:
        self.area_code = area_code
        self.number = number

    def display(self):
        print(f'({self.area_code}) {self.number}')

pn = PhoneNumber('973', '555-1234')
pn.display()
2).

Dọc theo cùng một dòng, hàm

class PhoneNumber(object):

    def __init__(self, area_code, number) -> None:
        self.area_code = area_code
        self.number = number

    def display(self):
        print(f'({self.area_code}) {self.number}')

pn = PhoneNumber('973', '555-1234')
pn.display()
3 được thụt vào cùng cấp với lớp
class PhoneNumber(object):

    def __init__(self, area_code, number) -> None:
        self.area_code = area_code
        self.number = number

    def display(self):
        print(f'({self.area_code}) {self.number}')

pn = PhoneNumber('973', '555-1234')
pn.display()
4, cho thấy nó không phải là một phần của định nghĩa lớp. Tuy nhiên, hãy nhớ rằng sự thụt đầu vào cơ thể của
class PhoneNumber(object):

    def __init__(self, area_code, number) -> None:
        self.area_code = area_code
        self.number = number

    def display(self):
        print(f'({self.area_code}) {self.number}')

pn = PhoneNumber('973', '555-1234')
pn.display()
3 không có liên quan đến cơ thể của các phương pháp lớp (nói cách khác, không có ý nghĩa cú pháp nào đối với thực tế là cơ thể của
class PhoneNumber(object):

    def __init__(self, area_code, number) -> None:
        self.area_code = area_code
        self.number = number

    def display(self):
        print(f'({self.area_code}) {self.number}')

pn = PhoneNumber('973', '555-1234')
pn.display()
3 và định nghĩa của
class PhoneNumber(object):

    def __init__(self, area_code, number) -> None:
        self.area_code = area_code
        self.number = number

    def display(self):
        print(f'({self.area_code}) {self.number}')

pn = PhoneNumber('973', '555-1234')
pn.display()
7 đều được thụt vào bởi bốn không gian).

Lưu ý: Xem Hướng dẫn kiểu PEP 8 cho mã Python để biết thêm chi tiết về Whitespace, cũng như Hướng dẫn kiểu mã Python chung.: See the PEP 8 Style Guide for Python Code for more details about whitespace, as well as general Python code style guidelines.

5: Sử dụng môi trường ảo để ngăn chặn xung đột phụ thuộc

Trong nhiều trường hợp, bạn đã cài đặt trình thông dịch Python trên hệ thống của mình. Tuy nhiên, để phát triển, bạn có thể sẽ muốn tạo ra một môi trường ảo, đây thực sự là một bản sao của thông dịch viên được giới thiệu cụ thể đến môi trường đó.

Lý do sử dụng môi trường ảo phần lớn xoay quanh việc cài đặt các phụ thuộc. Không cần sử dụng môi trường ảo, bất kỳ phụ thuộc nào được cài đặt cho dự án của bạn (chẳng hạn như các thư viện Django, Flask, Pandas hoặc Numpy) được cài đặt cho trình thông dịch toàn cầu. Có các phụ thuộc như vậy được cài đặt trên toàn hệ thống là một rủi ro vì một số lý do, bao gồm các vấn đề tương thích phiên bản.

Thay vào đó, việc tạo ra một môi trường ảo cho dự án của bạn cung cấp một thông dịch viên được sử dụng để sử dụng. Bất kỳ sự phụ thuộc nào được cài đặt vào môi trường ảo chỉ tồn tại cho môi trường đó, cho phép bạn dễ dàng phát triển trên nhiều dự án mà không sợ ý nghĩa hoặc xung đột trên toàn hệ thống.

Có một số cách để quản lý các môi trường ảo Python, bao gồm lệnh VETV tích hợp, cũng như các gói tiện ích (thân thiện hơn với người dùng) PyenV và VirtualEnv.

Sự kết luận

Bài viết này không phải là một tổng quan toàn diện về ngôn ngữ Python hoặc cú pháp của nó. Nhưng nó sẽ giúp thiết lập giai đoạn cho những gì mong đợi và làm thế nào để làm việc tốt nhất với ngôn ngữ. Với các khái niệm cơ bản này trong tâm trí, bước tiếp theo là đi vào và bắt đầu thử nghiệm.

Cập nhật lần cuối: ngày 6 tháng 10 năm 2022

Những gì bạn nên học trước khi học Python?

Năm điều cần biết trước khi học Python..
1: Python là một ngôn ngữ được giải thích ..
2: Python là định hướng đối tượng, nhưng không độc quyền ..
3: Python không được gõ mạnh (đó là một thanh kiếm hai lưỡi).
4: Vấn đề khoảng trắng trong Python ..
5: Sử dụng môi trường ảo để ngăn chặn xung đột phụ thuộc ..
Conclusion..

Tôi có nên học C trước Python không?

Tôi nên học ngôn ngữ lập trình nào trước tiên như một người mới bắt đầu, C, C ++ hoặc Python?Python được khuyến nghị cho người mới bắt đầu vì nó dễ dàng, nhưng một số lập trình viên đề nghị bắt đầu với C vì nó sẽ giúp bạn học tất cả các ngôn ngữ.some programmers suggest to start with C because it will help you to learn all languages.

Có cần phải học Python trước khi học không?

Điều cần thiết là phải biết các ngôn ngữ lập trình như R và Python để thực hiện toàn bộ quá trình học máy.Cả Python và R đều cung cấp các thư viện được xây dựng giúp việc thực hiện các thuật toán học máy.. Python and R both provide in-built libraries that make it very easy to implement Machine Learning algorithms.

Tôi nên học Python theo thứ tự nào?

Kiểm tra một số khóa học Python của chúng tôi ở đây ...
Bước 1: Xác định những gì thúc đẩy bạn.....
Bước 2: Tìm hiểu cú pháp cơ bản, nhanh chóng.....
Bước 3: Thực hiện các dự án có cấu trúc.....
Bước 4: Làm việc trên các dự án Python một mình.....
Bước 5: Tiếp tục làm việc trong các dự án chăm chỉ hơn (và khó hơn) ..