Ngôn ngữ lập trình đang phát triển nhanh chóng Python. Ngôn ngữ lập trình Python: cơ bản, tính năng và ví dụ. Các kiểu dữ liệu trong Python

Giới thiệu


Do những gì hiện đang được quan sát phát triển nhanh chóng công nghệ máy tính cá nhân, có sự thay đổi dần dần về yêu cầu đối với ngôn ngữ lập trình. Các ngôn ngữ thông dịch đang bắt đầu đóng một vai trò ngày càng quan trọng khi sức mạnh ngày càng tăng những máy tính cá nhân bắt đầu cung cấp đủ tốc độ thực thi của các chương trình được giải thích. Và ưu điểm đáng kể duy nhất của các ngôn ngữ lập trình được biên dịch là mã tốc độ cao. Khi tốc độ thực hiện chương trình không phải là giá trị quan trọng, lựa chọn đúng đắn nhất sẽ là ngôn ngữ thông dịch, vì một công cụ lập trình đơn giản và linh hoạt hơn.

Về vấn đề này, điều đáng quan tâm là xem xét một ngôn ngữ tương đối mới Lập trình Python(Python), được tạo ra bởi tác giả Guido van Rossum vào đầu những năm 90.

Thông tin chung về Python. Ưu điểm và nhược điểm


Python là một ngôn ngữ lập trình hướng đối tượng được giải thích nguyên bản. Nó cực kỳ đơn giản và chứa một số lượng nhỏ từ khóa nhưng cũng rất linh hoạt và giàu tính biểu cảm. Đây là ngôn ngữ cấp cao hơn Pascal, C++ và tất nhiên là C, ngôn ngữ này đạt được chủ yếu thông qua các cấu trúc dữ liệu cấp cao tích hợp sẵn (danh sách, từ điển, bộ dữ liệu).

Ưu điểm của ngôn ngữ.
Một lợi thế không thể nghi ngờ là trình thông dịch Python được triển khai trên hầu hết các nền tảng và hệ điều hành. Ngôn ngữ đầu tiên như vậy là C, nhưng kiểu dữ liệu của nó trên các máy khác nhau có thể chiếm lượng bộ nhớ khác nhau và điều này gây trở ngại cho việc viết một chương trình di động thực sự. Python không có nhược điểm như vậy.

Đặc điểm quan trọng tiếp theo là khả năng mở rộng của ngôn ngữ; tầm quan trọng lớn được gắn liền với điều này và, như chính tác giả đã viết, ngôn ngữ được hình thành chính xác là có khả năng mở rộng. Điều này có nghĩa là tất cả các lập trình viên quan tâm đều có thể cải thiện ngôn ngữ. Trình thông dịch được viết bằng C và nguồn có sẵn cho bất kỳ thao tác nào. Nếu cần, bạn có thể chèn nó vào chương trình của mình và sử dụng nó như một shell tích hợp. Hoặc, bằng cách viết các phần bổ sung của riêng bạn cho Python bằng C và biên dịch chương trình, bạn có thể có được một trình thông dịch “mở rộng” với các khả năng mới.

Ưu điểm tiếp theo là sự có mặt số lượng lớn các mô-đun được kết nối với chương trình cung cấp nhiều khả năng bổ sung khác nhau. Các mô-đun như vậy được viết bằng C và Python và có thể được phát triển bởi tất cả các lập trình viên đủ trình độ. Ví dụ bao gồm các mô-đun sau:

  • Python số - các khả năng toán học nâng cao như thao tác với vectơ và ma trận số nguyên;
  • Tkinter - xây dựng ứng dụng sử dụng giao diện đồ họa người dùng (GUI) dựa trên giao diện Tk được sử dụng rộng rãi trên X-Windows;
  • OpenGL - sử dụng thư viện mở rộng mô hình đồ họađối tượng hai và ba chiều Thư viện đồ họa mở từ Silicon Graphics Inc. Tiêu chuẩn này được hỗ trợ, trong số những thứ khác, trong các hệ điều hành phổ biến như Microsoft Windows 95 OSR 2, 98 và Windows NT 4.0.
Nhược điểm của ngôn ngữ.
Hạn chế duy nhất được tác giả nhận thấy là tốc độ thực thi tương đối thấp của chương trình Python, do tính dễ hiểu của nó. Tuy nhiên, theo ý kiến ​​​​của chúng tôi, điều này được bù đắp nhiều hơn bởi những ưu điểm của ngôn ngữ khi viết chương trình không quá quan trọng đối với tốc độ thực thi.

Tổng quan về tính năng


1. Python, không giống như nhiều ngôn ngữ (Pascal, C++, Java, v.v.), không yêu cầu khai báo biến. Chúng được tạo tại nơi chúng được khởi tạo, tức là. lần đầu tiên một biến được gán một giá trị. Điều này có nghĩa là loại biến được xác định bởi loại giá trị được gán. Về mặt này, Python giống với Basic.
Loại của một biến không phải là bất biến. Bất kỳ phép gán nào cho nó đều đúng và điều này chỉ dẫn đến thực tế là kiểu của biến trở thành kiểu của giá trị được gán mới.

2. Trong các ngôn ngữ như Pascal, C, C++, việc tổ chức danh sách gặp một số khó khăn. Để thực hiện chúng, người ta phải nghiên cứu kỹ lưỡng các nguyên tắc làm việc với con trỏ và bộ nhớ động. Và ngay cả khi có trình độ chuyên môn tốt, lập trình viên mỗi lần thực hiện lại các cơ chế tạo, làm việc và hủy danh sách vẫn có thể dễ dàng mắc những lỗi tinh vi. Theo quan điểm này, một số công cụ đã được tạo ra để làm việc với danh sách. Ví dụ, Delphi Pascal có một lớp TList thực hiện các danh sách; Thư viện STL (Thư viện mẫu tiêu chuẩn) đã được phát triển cho C++, chứa các cấu trúc như vectơ, danh sách, bộ, từ điển, ngăn xếp và hàng đợi. Tuy nhiên, các cơ sở như vậy không có sẵn ở tất cả các ngôn ngữ và cách triển khai chúng.

Một trong tính năng đặc biệt Python là sự hiện diện của các cấu trúc được tích hợp trong chính ngôn ngữ như bộ dữ liệu(bộ dữ liệu) danh sách(danh sách) và từ điển(từ điển), đôi khi được gọi là thẻ(bản đồ). Chúng ta hãy xem xét kỹ hơn về họ.

  1. Bộ dữ liệu . Nó phần nào gợi nhớ đến một mảng: nó bao gồm các phần tử và có độ dài được xác định nghiêm ngặt. Các phần tử có thể là bất kỳ giá trị nào - các hằng số hoặc đối tượng đơn giản. Không giống như mảng, các phần tử của một bộ không nhất thiết phải đồng nhất. Và điều phân biệt một bộ dữ liệu với một danh sách là một bộ dữ liệu không thể thay đổi được, tức là. chúng ta không thể gán một cái gì đó mới cho phần tử tuple thứ i và không thể thêm các phần tử mới. Vì vậy, một bộ có thể được gọi là một danh sách hằng. Về mặt cú pháp, một bộ dữ liệu được chỉ định bằng cách liệt kê tất cả các phần tử được phân tách bằng dấu phẩy, tất cả được đặt trong dấu ngoặc đơn:

  2. (1, 2, 5, 8)
    (3.14, ‘chuỗi’, -4)
    Tất cả các yếu tố được lập chỉ mục từ đầu. Để lấy phần tử thứ i, bạn phải chỉ định tên bộ theo sau là chỉ mục i trong ngoặc vuông. Ví dụ:
    t = (0, 1, 2, 3, 4)
    in t, t[-1], t[-3]
    Kết quả: 0 4 2
    Do đó, một bộ có thể được gọi là một vectơ hằng nếu các phần tử của nó luôn đồng nhất.
  3. Danh sách . Một ví dụ điển hình và cụ thể về danh sách là chuỗi ngôn ngữ Turbo Pascal. Các phần tử của một dòng là các ký tự đơn, độ dài không cố định, có thể xóa các phần tử hoặc ngược lại, chèn chúng vào bất kỳ vị trí nào trong dòng. Các phần tử của danh sách có thể là các đối tượng tùy ý, không nhất thiết phải cùng loại. Để tạo một danh sách, chỉ cần liệt kê các phần tử được phân tách bằng dấu phẩy, đặt tất cả chúng trong dấu ngoặc vuông:


  4. ['chuỗi', (0,1,8),]
    Không giống như tuple, danh sách có thể được sửa đổi theo ý muốn. Việc truy cập vào các phần tử được thực hiện giống như trong các bộ dữ liệu. Ví dụ:
    tôi = ]
    in l, l, l[-2], l[-1]
    Kết quả: 1 giây (2,8) 0
  5. Từ điển . Nó gợi nhớ đến kiểu bản ghi trong Pascal hoặc kiểu cấu trúc trong C. Tuy nhiên, thay vì sơ đồ “trường bản ghi” - “giá trị”, ở đây sử dụng “khóa” - “giá trị”. Từ điển là tập hợp các cặp khóa-giá trị. Ở đây, “khóa” là một hằng số thuộc bất kỳ loại nào (nhưng chuỗi được sử dụng chủ yếu), nó dùng để đặt tên (chỉ mục) một số giá trị tương ứng (có thể thay đổi).

  6. Từ điển được tạo bằng cách liệt kê các phần tử của nó (các cặp khóa-giá trị được phân tách bằng dấu hai chấm), phân tách bằng dấu phẩy và đặt tất cả chúng trong dấu ngoặc nhọn. Để truy cập vào một giá trị nhất định, sau tên từ điển, hãy viết khóa tương ứng trong ngoặc vuông. Ví dụ:
    d = ("a": 1, "b": 3, 5: 3.14, "tên": "John")
    d["b"] = d
    in d["a"], d["b"], d, d["name"]
    Kết quả: 1 3,14 3,14 John
    Để thêm một cặp khóa-giá trị mới, chỉ cần gán giá trị tương ứng cho phần tử bằng khóa mới:
    d["mới"] = "giá trị mới"
    in d
    Kết quả: ("a":1, "b":3, 5:3.14, "name:"John", "mới":giá trị mới")

3. Python, không giống như Pascal, C, C++, không hỗ trợ làm việc với con trỏ, bộ nhớ động và số học địa chỉ. Theo cách này, nó tương tự như Java. Như bạn đã biết, con trỏ là nguồn gốc của các lỗi nhỏ và việc làm việc với chúng liên quan nhiều hơn đến lập trình cấp thấp. Để mang lại độ tin cậy và đơn giản cao hơn, chúng không được đưa vào Python.

4. Một trong những tính năng của Python là cách một biến được gán cho một biến khác, tức là. khi ở hai bên của người vận hành" = "có những biến số.

Theo Timothy Budd (), chúng tôi sẽ gọi ngữ nghĩa con trỏ trường hợp việc gán chỉ dẫn đến việc gán một tham chiếu (con trỏ), tức là. biến mới chỉ trở thành một tên khác, biểu thị cùng vị trí bộ nhớ với biến cũ. Trong trường hợp này, việc thay đổi giá trị được biểu thị bằng biến mới sẽ dẫn đến thay đổi giá trị của biến cũ, bởi vì chúng thực sự có ý nghĩa tương tự.

Khi một phép gán dẫn đến việc tạo ra một đối tượng mới (ở đây là một đối tượng - theo nghĩa là một phần bộ nhớ để lưu trữ một giá trị thuộc loại nào đó) và sao chép nội dung của biến được gán vào đó, chúng ta gọi trường hợp này là sao chép ngữ nghĩa. Do đó, nếu ngữ nghĩa sao chép được áp dụng khi sao chép thì các biến ở hai bên dấu "=" sẽ có nghĩa là hai đối tượng độc lập có cùng nội dung. Và ở đây, một sự thay đổi tiếp theo ở một biến sẽ không ảnh hưởng đến biến kia theo bất kỳ cách nào.

Bài tập trong Python hoạt động như thế này: if có thể chuyển nhượngđối tượng là một thể hiện của các loại như số hoặc chuỗi, thì ngữ nghĩa sao chép sẽ được áp dụng, nhưng nếu ở phía bên phải có một thể hiện của một lớp, danh sách, từ điển hoặc bộ dữ liệu thì ngữ nghĩa con trỏ sẽ được áp dụng. Ví dụ:
a = 2; b = a; b = 3
print "sao chép ngữ nghĩa: a=", a, "b=", b
một = ; b = a; b = 3
print "ngữ nghĩa con trỏ: a=", a, "b=", b
Kết quả:
sao chép ngữ nghĩa: a= 2 b= 3
ngữ nghĩa con trỏ: a= b=

Đối với những ai muốn biết điều gì đang diễn ra ở đây, tôi sẽ đưa ra cho bạn một bài tập khác trong Python. Nếu trong các ngôn ngữ như Basic, Pascal, C/C++, chúng ta xử lý các biến và hằng số “dung lượng” được lưu trữ trong chúng (số, ký hiệu, chuỗi - không thành vấn đề) và thao tác gán có nghĩa là “nhập” hằng số vào biến được gán, thì trong Python chúng ta phải làm việc với các biến “tên” và các đối tượng mà chúng đặt tên. (Lưu ý một số điểm tương đồng với ngôn ngữ Prolog?) Đối tượng trong Python là gì? Đây là tất cả mọi thứ có thể được đặt tên: số, chuỗi, danh sách, từ điển, thể hiện lớp (trong Object Pascal được gọi là đối tượng), chính các lớp (!), hàm, mô-đun, v.v. Vì vậy, khi gán một biến cho một đối tượng, biến đó sẽ trở thành “tên” của nó và đối tượng có thể có bao nhiêu “tên” như mong muốn và tất cả chúng đều độc lập với nhau.

Bây giờ, các đối tượng được chia thành có thể sửa đổi (có thể thay đổi) và không thể thay đổi. Có thể thay đổi - những thứ có thể thay đổi “nội dung nội bộ” của chúng, ví dụ: danh sách, từ điển, thể hiện của lớp. Và những chuỗi không thể thay đổi - chẳng hạn như số, bộ dữ liệu, chuỗi (vâng, cả chuỗi nữa; bạn có thể gán một chuỗi mới thu được từ chuỗi cũ cho một biến, nhưng bạn không thể sửa đổi chính chuỗi cũ).

Vì vậy, nếu chúng ta viết một = ; b = a; b = 3, Python diễn giải nó như thế này:

  • cung cấp cho đối tượng một "danh sách" " Tên Một ;
  • đặt cho đối tượng này một tên khác - b ;
  • sửa đổi phần tử null của một đối tượng.

  • Đây là cách chúng ta có được ngữ nghĩa “giả” của con trỏ.

    Điều cuối cùng cần nói về điều này: mặc dù không thể thay đổi cấu trúc của bộ dữ liệu, nhưng các thành phần có thể thay đổi mà nó chứa vẫn có sẵn để sửa đổi:

    T = (1, 2, , "string") t = 6 # điều này là không thể được del t # cũng là lỗi t = 0 # được phép, bây giờ thành phần thứ ba là danh sách t = "S" # lỗi: chuỗi không có thể thay đổi

    5. Cách thức các toán tử nhóm Python rất độc đáo. Trong Pascal, việc này được thực hiện bằng cách sử dụng dấu ngoặc toán tử bắt đầu-kết thúc, trong C, C++, Java - dấu ngoặc nhọn (), trong Cơ bản, phần cuối của cấu trúc ngôn ngữ được sử dụng (NEXT, WEND, END IF, END SUB).
    Trong Python, mọi thứ đơn giản hơn nhiều: việc chọn một khối câu lệnh được thực hiện bằng cách dịch chuyển nhóm đã chọn theo một hoặc nhiều dấu cách hoặc ký tự tab sang bên phải so với phần đầu của cấu trúc mà khối đã cho sẽ thuộc về. Ví dụ:

    nếu x > 0: in ‘ x > 0 ’ x = x - 8 ngược lại: in ‘ x<= 0 ’ x = 0 Bằng cách ấy, phong cách tốt các chương trình ghi âm mà giáo viên dạy các ngôn ngữ Pascal, C++, Java, v.v. yêu cầu, được cung cấp ở đây ngay từ đầu, vì đơn giản là nó sẽ không hoạt động theo bất kỳ cách nào khác.

    Mô tả của ngôn ngữ. Cấu trúc điều khiển



    Xử lý ngoại lệ


    thử:
    <оператор1>
    [ngoại trừ[<исключение> [, <переменная>] ]:
    <оператор2>]
    [khác <оператор3>]
    Đã thực hiện<оператор1>, nếu có ngoại lệ xảy ra<исключение>, thì nó được thỏa mãn<оператор2>. Nếu như<исключение>có một giá trị, nó được gán<переменной>.
    Sau khi hoàn thành thành công<оператора1>, thực hiện<оператор3>.
    thử:
    <оператор1>
    Cuối cùng:
    <оператор2>
    Đã thực hiện<оператор1>. Nếu không có ngoại lệ xảy ra thì thực thi<оператор2>. Mặt khác được thực thi<оператор2>và một ngoại lệ ngay lập tức được nêu ra.
    nâng lên <исключение> [<значение>] Ném một ngoại lệ<исключение>với tham số<значение>.

    Ngoại lệ chỉ là chuỗi. Ví dụ:

    My_ex = ‘chỉ mục xấu’ thử: nếu xấu: tăng my_ex, xấu ngoại trừ my_ex, giá trị: print ‘Lỗi’, giá trị

    Khai báo hàm



    Khai báo lớp



    Lớp cMyClass: def __init__(self, val): self.value = val # def printVal(self): print ' value = ', self.value # # end cMyClass obj = cMyClass (3.14) obj.printVal() obj.value = " chuỗi ngay bây giờ" obj.printVal () !} Kết quả:
    giá trị = 3,14
    giá trị = chuỗi bây giờ

    Toán tử cho tất cả các loại chuỗi (danh sách, bộ dữ liệu, chuỗi)


    Toán tử cho danh sách (danh sách)


    s[i] = x Phần tử thứ i s được thay thế bằng x.
    s = t một phần phần tử s từ i đến j-1 được thay thế bằng t (t cũng có thể là một danh sách).
    del s xóa phần s (giống như s = ).
    s.append(x) thêm phần tử x vào cuối s.
    s.count(x) trả về số phần tử s bằng x.
    s.index(x) trả về giá trị i nhỏ nhất sao cho s[i]==x.
    s.insert(i,j) phần của s, bắt đầu từ phần tử thứ i, được dịch chuyển sang phải và s[i] được gán cho x.
    s.remove(x) giống như del s[ s.index(x) ] - loại bỏ phần tử đầu tiên của s bằng x.
    s.reverse() viết một chuỗi theo thứ tự ngược lại
    s.sort() sắp xếp danh sách theo thứ tự tăng dần.

    Toán tử cho từ điển


    Đối tượng tệp


    Được tạo bởi một hàm tích hợp mở()(xem mô tả bên dưới). Ví dụ: f = open('mydan.dat','r').
    Phương pháp:

    Các thành phần ngôn ngữ khác và các chức năng tích hợp


    = phân công.
    in [ < c1 > [, < c2 >]* [, ] ] hiển thị giá trị< c1 >, < c2 >V. đầu ra tiêu chuẩn. Đặt một khoảng trắng giữa các đối số. Nếu không có dấu phẩy ở cuối danh sách đối số, nó sẽ chuyển sang dòng mới.
    cơ bụng (x) trả lại giá trị tuyệt đối x.
    áp dụng( f , <аргументы>) gọi hàm (hoặc phương thức) f với< аргументами >.
    chr(i) trả về chuỗi một ký tự có mã ASCII i.
    cmp(x,y) trả về âm, 0 hoặc dương nếu x<, ==, или >hơn y.
    divmod (a, b) trả về bộ dữ liệu (a/b, a%b), trong đó a/b là div b (phần nguyên của kết quả phép chia), a%b là mod b (phần còn lại của phép chia).
    (các) đánh giá
    trả về đối tượng được chỉ định trong s dưới dạng một chuỗi. S có thể chứa bất kỳ cấu trúc ngôn ngữ nào. S cũng có thể là một đối tượng mã, ví dụ: x = 1 ; incr_x = eval("x+1") .
    phao(x) trả về một giá trị thực bằng số x.
    hex(x) trả về một chuỗi chứa biểu diễn thập lục phân của x.
    đầu vào(<строка>) hiển thị<строку>, đọc và trả về một giá trị từ đầu vào tiêu chuẩn.
    int(x) trả về giá trị nguyên của x.
    (các) len trả về độ dài (số phần tử) của một đối tượng.
    dài (x) trả về một giá trị số nguyên dài x.
    tối đa, phút trả về phần tử lớn nhất và nhỏ nhất của chuỗi s (nghĩa là s là một chuỗi, danh sách hoặc bộ dữ liệu).
    tháng mười(x) trả về một chuỗi chứa biểu diễn của số x.
    mở(<имя файла>, <режим>='r' ) trả về một đối tượng tệp được mở để đọc.<режим>= 'w' - mở đầu cho việc viết.
    thứ tự(c) trả về mã ASCII của một ký tự (chuỗi có độ dài 1) c.
    pow(x, y) trả về giá trị của x lũy thừa của y.
    phạm vi(<начало>, <конец>, <шаг>) trả về danh sách các số nguyên lớn hơn hoặc bằng<начало>và ít hơn<конец>, được tạo với một giá trị nhất định<шагом>.
    raw_input( [ <текст> ] ) hiển thị<текст>đến đầu ra tiêu chuẩn và đọc một chuỗi từ đầu vào tiêu chuẩn.
    tròn (x, n=0) trả về số thực x được làm tròn đến chữ số thập phân thứ n.
    str(<объект>) trả về một biểu diễn chuỗi<объекта>.
    kiểu(<объект>) trả về kiểu của đối tượng.
    Ví dụ: if type(x) == type(''): print ' đây là một chuỗi '
    xrange (<начало>, <конец>, <шаг>) tương tự như phạm vi, nhưng chỉ mô phỏng danh sách mà không tạo danh sách. Được sử dụng trong vòng lặp for.

    Các hàm đặc biệt để làm việc với danh sách


    lọc (<функция>, <список>) trả về danh sách các phần tử đó<спиcка>, mà<функция>nhận giá trị "true".
    bản đồ(<функция>, <список>) áp dụng<функцию>tới từng phần tử<списка>và trả về một danh sách kết quả.
    giảm bớt ( f , <список>,
    [, <начальное значение> ] )
    trả về giá trị thu được bằng cách "giảm"<списка>chức năng f. Điều này có nghĩa là có một số biến nội bộ p được khởi tạo<начальным значением>, thì với mỗi phần tử<списка>, hàm f được gọi với hai tham số: p và phần tử<списка>. Kết quả trả về của f được gán cho p. Sau khi trải qua mọi chuyện<списка>giảm lợi nhuận p.
    Ví dụ, khi sử dụng hàm này, bạn có thể tính tổng các phần tử của một danh sách: def func (đỏ, el): trả về đỏ+el tổng = giảm (func, , 0) # bây giờ tổng == 15
    lambda [<список параметров>] : <выражение> Một hàm "ẩn danh" không có tên và được viết ở nơi nó được gọi. Chấp nhận các tham số được chỉ định trong<списке параметров>, và trả về giá trị<выражения>. Được sử dụng để lọc, thu nhỏ, bản đồ. Ví dụ: >>>bộ lọc in (lambda x: x>3, ) >>>in bản đồ (lambda x: x*2, ) >>>p=reduce (lambda r, x: r*x, , 1) >>> in trang 24

    Nhập mô-đun



    Mô-đun toán tiêu chuẩn


    Biến: số Pi, e.
    Chức năng(tương tự như các hàm của ngôn ngữ C):

    acos(x) cos(x) ldexp(x,y) mét vuông(x)
    asin(x) kinh nghiệm(x) nhật ký(x) tan(x)
    atan(x) tuyệt vời (x) sinh(x) frexp(x)
    atan2(x,y) tầng(x) pow(x,y) modf(x)
    trần(x) fmod(x,y) tội lỗi(x)
    cos(x) log10(x) tính(x)

    mô-đun chuỗi


    Chức năng:

    Phần kết luận


    Do tính đơn giản và linh hoạt của ngôn ngữ Python, nó có thể được khuyến nghị cho người dùng (nhà toán học, nhà vật lý, nhà kinh tế, v.v.) không phải là lập trình viên nhưng sử dụng công nghệ máy tính và lập trình trong công việc của tôi.
    Các chương trình bằng Python được phát triển trung bình nhanh hơn từ một đến rưỡi đến hai (và đôi khi hai đến ba) lần so với các ngôn ngữ được biên dịch (C, C++, Pascal). Do đó, ngôn ngữ này có thể được các lập trình viên chuyên nghiệp phát triển các ứng dụng không quan trọng về tốc độ thực thi cũng như các chương trình sử dụng cấu trúc dữ liệu phức tạp rất quan tâm. Đặc biệt, Python đã chứng tỏ mình rất tốt trong việc phát triển các chương trình làm việc với đồ thị và tạo cây.

    Văn học


    1. Budd T. Lập trình hướng đối tượng. - St. Petersburg: Peter, 1997.
    2. Guido van Rossum. Hướng dẫn Python. (www.python.org)
    3. Chris Hoffman. Tài liệu tham khảo nhanh về Python. (www.python.org)
    4. Guido van Rossum. Tham khảo thư viện Python. (www.python.org)
    5. Guido van Rossum. Hướng dẫn tham khảo Python. (www.python.org)
    6. Guido van Rossum. Hội thảo lập trình Python. (http://sultan.da.ru)

    Hãy chuyển sang phần lý thuyết và thực hành và bắt đầu với định nghĩa phiên dịch viên là gì.

    Thông dịch viên

    Thông dịch viên là một chương trình thực thi các chương trình khác. Khi bạn viết một chương trình bằng Python, trình thông dịch sẽ đọc chương trình của bạn và thực hiện các hướng dẫn trong đó. Trong thực tế, trình thông dịch là một lớp logic chương trình giữa mã chương trình và phần cứng máy tính của bạn.

    Tùy thuộc vào phiên bản Python bạn đang sử dụng, bản thân trình thông dịch có thể được triển khai dưới dạng chương trình C, dưới dạng một tập hợp các lớp Java hoặc dưới một số dạng khác, nhưng sẽ nói thêm về điều đó sau.

    Chạy tập lệnh trong bảng điều khiển

    Hãy chạy trình thông dịch trong bảng điều khiển:

    Bây giờ nó đang chờ nhập lệnh, hãy nhập hướng dẫn sau vào đó:

    In "xin chào thế giới!"

    yay, chương trình đầu tiên của chúng tôi! :D

    Chạy tập lệnh từ một tập tin

    Tạo một tệp "test.py", với nội dung:

    # print "hello world" print "hello world" # in 2 lũy thừa 10 in 2 ** 10

    và thực thi tập tin này:

    # python /path/to/test.py

    Biên dịch động và mã byte

    Sau khi bạn chạy tập lệnh, đầu tiên nó sẽ biên dịch văn bản gốc tập lệnh thành mã byte cho máy ảo. biên soạn chỉ đơn giản là một bước dịch và mã byte là sự thể hiện cấp độ thấp, độc lập với nền tảng của văn bản nguồn của chương trình. Python dịch từng lệnh trong mã nguồn tập lệnh thành các nhóm hướng dẫn mã byte để cải thiện tốc độ thực thi chương trình vì mã byte thực thi nhanh hơn nhiều. Sau khi biên dịch thành mã byte, một tệp có phần mở rộng ".pyc" bên cạnh văn bản script gốc.

    Lần tiếp theo bạn chạy chương trình, trình thông dịch sẽ bỏ qua giai đoạn biên dịch và tạo ra một tệp đã biên dịch có phần mở rộng ".pyc" để thực thi. Tuy nhiên, nếu bạn thay đổi nguồn của chương trình, bước biên dịch sang mã byte sẽ xảy ra lần nữa vì Python tự động theo dõi ngày sửa đổi của tệp mã nguồn.

    Nếu Python không thể ghi tệp mã byte, chẳng hạn như do thiếu quyền ghi vào đĩa, thì chương trình sẽ không bị ảnh hưởng, mã byte sẽ chỉ được thu thập trong bộ nhớ và bị xóa khỏi đó khi chương trình thoát.

    Máy ảo Python (PVM)

    Sau khi quá trình biên dịch diễn ra, mã byte được chuyển tới một cơ chế gọi là máy ảo, sẽ thực thi các hướng dẫn từ mã byte. Máy ảo là một cơ chế thời gian chạy, nó luôn hiện diện trong hệ thống Python và là một thành phần cực đoan của hệ thống được gọi là “Trình thông dịch Python”.

    Để củng cố những gì chúng ta đã học, hãy làm rõ tình huống một lần nữa: quá trình biên dịch thành mã byte được thực hiện tự động và PVM chỉ là một phần của hệ thống Python mà bạn đã cài đặt cùng với trình thông dịch và trình biên dịch. Mọi thứ diễn ra một cách minh bạch với người lập trình và bạn không phải thực hiện các thao tác này một cách thủ công.

    Hiệu suất

    Các lập trình viên có kinh nghiệm về các ngôn ngữ như C và C++ có thể nhận thấy một số khác biệt trong mô hình thực thi của Python. Đầu tiên là không có bước build hay gọi tiện ích "make", chương trình Python có thể chạy ngay sau khi viết mã nguồn. Điểm khác biệt thứ hai là mã byte không phải là mã máy nhị phân (ví dụ: hướng dẫn cho bộ vi xử lý Intel), nó là biểu diễn bên trong của chương trình Python.

    Vì những lý do này, các chương trình trong Python không thể thực thi nhanh như trong C/C++. Truyền lệnh thực hiện hệ thống ảo, không phải bộ vi xử lý và để thực thi mã byte cần có sự diễn giải bổ sung có hướng dẫn mất nhiều thời gian hơn hướng dẫn máy của bộ vi xử lý.

    Tuy nhiên, mặt khác, không giống như các trình thông dịch truyền thống, chẳng hạn như trong PHP, có một giai đoạn biên dịch bổ sung - trình thông dịch không cần phải phân tích văn bản nguồn của chương trình mỗi lần.

    Kết quả là hiệu năng của Python nằm giữa các ngôn ngữ lập trình biên dịch truyền thống và ngôn ngữ lập trình phiên dịch truyền thống.

    Triển khai Python thay thế

    Những gì đã nói ở trên về trình biên dịch và máy ảo, là điển hình cho việc triển khai Python tiêu chuẩn, cái gọi là CPython (triển khai trong ANSI C). Tuy nhiên, cũng có những triển khai thay thế như Jython và IronPython, sẽ được thảo luận ngay bây giờ.

    Đây là cách triển khai Python tiêu chuẩn và nguyên bản, được đặt tên như vậy vì nó được viết bằng ANSI C. Đây là những gì chúng tôi đã cài đặt khi chọn gói Python hoạt động hoặc được cài đặt từ BSD miễn phí cổng. Vì đây là một triển khai tham khảo nên nhìn chung hoạt động nhanh hơn, ổn định hơn và tốt hơn hơn các triển khai thay thế.

    Jython

    Tên gốc JPython, mục đích chính - Tích hợp chặt chẽ với ngôn ngữ Lập trình Java . Việc triển khai Jython bao gồm các lớp Java thực hiện việc biên dịch Mã chương trình bằng Python sang mã byte Java và sau đó chuyển mã byte kết quả Máy ảo Java (JVM).

    Mục tiêu của Jython là cho phép các chương trình Python kiểm soát các ứng dụng Java, giống như CPython có thể kiểm soát các thành phần C/C++. Việc triển khai này có sự tích hợp liền mạch với Java. Vì mã Python được dịch sang mã byte Java nên nó hoạt động chính xác như một chương trình Python thực trong thời gian chạy. ngôn ngữ Java. Các chương trình Jython có thể hoạt động như các applet và servlet, tạo giao diện đồ họa bằng cơ chế Java, v.v. Hơn nữa, Jython còn cung cấp hỗ trợ cho khả năng nhập và sử dụng các lớp Java trong mã Python.

    Tuy nhiên, do việc triển khai Jython cung cấp nhiều tốc độ thấp thực thi và kém mạnh mẽ hơn CPython, điều này được các nhà phát triển chương trình Java quan tâm, những người cần một ngôn ngữ kịch bản làm giao diện cho mã Java.

    Việc triển khai nhằm mục đích cung cấp sự tích hợp các chương trình Python với các ứng dụng được xây dựng để chạy trong Môi trường Microsoft.Nền tảng NET hệ điều hành Windows, cũng như Mono, mã nguồn mở tương đương với Linux. .NET framework và thời gian chạy C# được thiết kế để cho phép khả năng tương tác giữa các đối tượng phần mềm—bất kể ngôn ngữ lập trình được sử dụng—theo tinh thần của mô hình COM trước đây của Microsoft.

    IronPython cho phép các chương trình Python hoạt động như cả thành phần máy khách và máy chủ có thể truy cập được từ các ngôn ngữ lập trình .NET khác. Bởi vì sự phát triển đang được tiến hành bởi Microsoft , người ta sẽ mong đợi sự tối ưu hóa hiệu suất đáng kể từ IronPython, cùng với những thứ khác.

    Công cụ tối ưu hóa tốc độ thực thi

    Có các triển khai khác, bao gồm trình biên dịch động Tâm thần và trình dịch Shedskin C++, cố gắng tối ưu hóa mô hình thực thi cơ bản.

    Trình biên dịch động Psyco

    Hệ thống tâm lý là thành phần mở rộng mô hình thực thi mã byte, cho phép các chương trình chạy nhanh hơn. Tâm thần là một phần mở rộng PVM, thu thập và sử dụng thông tin loại để dịch các phần mã byte của chương trình thành mã nhị phân thực sự mã máy, chạy nhanh hơn nhiều. Bản dịch này không yêu cầu thay đổi mã nguồn hoặc biên dịch bổ sung trong quá trình phát triển.

    Trong quá trình thực hiện chương trình, Psyco thu thập thông tin về các loại đối tượng và thông tin này sau đó được sử dụng để tạo mã máy hiệu quả cao được tối ưu hóa cho loại đối tượng đó. Mã máy được tạo ra sau đó sẽ thay thế các phần mã byte tương ứng, từ đó tăng tốc độ thực thi.

    Lý tưởng nhất là một số phần của mã chương trình dưới sự kiểm soát của Psyco có thể chạy nhanh như mã C đã biên dịch.

    Psyco cung cấp tốc độ tăng từ 2 đến 100 lần, nhưng thường là 4 lần, khi sử dụng trình thông dịch Python chưa sửa đổi. Nhược điểm duy nhất của Psyco là hiện tại nó chỉ có khả năng tạo mã máy cho kiến ​​trúc Intel x86.

    Psyco không vào giao hàng tiêu chuẩn, nó phải được tải xuống và cài đặt riêng. Ngoài ra còn có một dự án PyPy, đại diện cho một nỗ lực để viết lại PVMđể tối ưu hóa mã như trong Tâm thần, dự án PyPy sẽ hấp thụ nhiều hơn của dự án Tâm thần.

    Trình dịch Shedskin C++

    Lột da là một hệ thống chuyển đổi mã nguồn Python thành mã nguồn C++, sau đó có thể được biên dịch thành mã máy. Ngoài ra, hệ thống còn triển khai cách tiếp cận độc lập với nền tảng để thực thi mã Python.

    Mã nhị phân đông lạnh

    Đôi khi bạn cần tạo các tệp thực thi độc lập từ các chương trình Python của mình. Điều này là cần thiết cho việc đóng gói và phân phối các chương trình.

    đã sửa tập tin nhị phân kết hợp mã byte chương trình, PVM và các tệp hỗ trợ mà chương trình cần vào một tệp gói duy nhất. Kết quả là một tệp thực thi duy nhất, chẳng hạn như tệp có phần mở rộng ".exe" dành cho Windows.

    Ngày nay có ba công cụ chính để tạo "các tệp nhị phân bị đóng băng":

    • py2exe- nó có thể tạo các chương trình độc lập cho Windows sử dụng thư viện Tkinter, PMW, wxPython và PyGTK để tạo giao diện đồ họa, các chương trình sử dụng phần mềm tạo trò chơi PyGame, chương trình máy khách win32com và nhiều chương trình khác;
    • Trình cài đặt Py- giống py2exe, nhưng cũng chạy trên Linux và UNIX và có khả năng tạo các tệp thực thi tự cài đặt;
    • đông cứng- phiên bản gốc.

    Bạn cần tải xuống các công cụ này riêng biệt với Python, chúng miễn phí.

    Các tệp nhị phân cố định khá lớn vì chúng chứa PVM, nhưng theo tiêu chuẩn hiện đại, chúng vẫn không lớn bất thường. Vì trình thông dịch Python được tích hợp trực tiếp vào các tệp nhị phân cố định nên không cần phải cài đặt nó để chạy các chương trình ở đầu nhận.

    Bản tóm tắt

    Đó là tất cả cho ngày hôm nay, trong bài viết tiếp theo, tôi sẽ nói về các kiểu dữ liệu tiêu chuẩn trong Python và trong các bài viết tiếp theo, chúng ta sẽ xem xét từng loại riêng biệt, cũng như các hàm và toán tử để làm việc với các kiểu này.

    Trong đó, ở dạng cô đọng,
    nói về những điều cơ bản của ngôn ngữ Python. Tôi cung cấp cho bạn một bản dịch của bài viết này. Bản dịch không theo nghĩa đen. Tôi đã cố gắng giải thích chi tiết hơn một số điểm có thể chưa rõ ràng.

    Nếu bạn đang có ý định học ngôn ngữ Python nhưng không tìm được hướng dẫn phù hợp thì đây
    Bài viết sẽ rất hữu ích cho bạn! Phía sau một khoảng thời gian ngắn, bạn có thể làm quen
    cơ bản của ngôn ngữ Python. Mặc dù bài viết này thường dựa
    rằng bạn đã có kinh nghiệm lập trình, nhưng tôi hy vọng ngay cả đối với những người mới bắt đầu
    tài liệu này sẽ hữu ích. Đọc từng đoạn một cách cẩn thận. Bởi vì
    tính ngắn gọn của tài liệu, một số chủ đề được thảo luận một cách hời hợt nhưng chứa đựng tất cả
    số liệu cần thiết.

    Các tính chất cơ bản

    Python không yêu cầu khai báo rõ ràng các biến và là ngôn ngữ hướng đối tượng phân biệt chữ hoa chữ thường (biến var không tương đương với Var hoặc VAR - chúng là ba biến khác nhau).

    Cú pháp

    Đầu tiên, cần lưu ý một tính năng thú vị của Python. Thay vào đó, nó không chứa dấu ngoặc toán tử (bắt đầu..kết thúc trong pascal hoặc (..) trong C). các khối được thụt vào: dấu cách hoặc tab và việc nhập khối câu lệnh được thực hiện bằng dấu hai chấm. Nhận xét một dòng bắt đầu bằng dấu thăng "#", nhận xét nhiều dòng bắt đầu và kết thúc bằng ba dấu ngoặc kép """".
    Để gán giá trị cho một biến, hãy sử dụng dấu “=” và để so sánh -
    "==". Để tăng giá trị của một biến hoặc thêm vào một chuỗi, hãy sử dụng toán tử “+=” và “-=” để giảm giá trị đó. Tất cả các thao tác này có thể tương tác với hầu hết các loại, bao gồm cả chuỗi. Ví dụ


    >>> myvar = 3
    >>> myvar += 2
    >>> myvar -= 1
    ""Đây là một bình luận nhiều dòng
    Các dòng nằm trong ba dấu ngoặc kép sẽ bị bỏ qua"""

    >>> mystring = "Xin chào"
    >>> mystring += "thế giới."
    >>> in dây bí ẩn
    Chào thế giới.
    # Dòng tiếp theo thay đổi
    giá trị của các biến được hoán đổi. (Chỉ một dòng thôi!)

    >>> myvar, mystring = mystring, myvar

    Cấu trúc dữ liệu

    Python chứa các cấu trúc dữ liệu như danh sách, bộ dữ liệu và từ điển). Danh sách tương tự như mảng một chiều (nhưng bạn có thể sử dụng Danh sách bao gồm danh sách - mảng nhiều chiều), bộ dữ liệu là danh sách bất biến, từ điển cũng là danh sách, nhưng chỉ mục có thể thuộc bất kỳ loại nào, không chỉ là số. "Mảng" trong Python có thể chứa dữ liệu thuộc bất kỳ loại nào, nghĩa là một mảng có thể chứa các loại dữ liệu số, chuỗi và các loại dữ liệu khác. Mảng bắt đầu ở chỉ số 0 và phần tử cuối cùng có thể được lấy ở chỉ số -1 Bạn có thể gán biến hàm và sử dụng chúng cho phù hợp.


    >>> sample = , ("a", "tuple" )] #Danh sách bao gồm một số nguyên, một danh sách khác và một bộ dữ liệu
    >>> #Danh sách này chứa một chuỗi, một số nguyên và một phân số
    >>> mylist = “Liệt kê lại mục 1” #Thay đổi phần tử đầu tiên (không) của trang tính mylist
    >>> danh sách của tôi[-1 ] = 3 .14 #Thay đổi phần tử cuối cùng của trang tính
    >>> mydict = ("Khóa 1" : "Giá trị 1" , 2 : 3 , "pi" : 3 .14 ) #Tạo một từ điển có chỉ mục số và số nguyên
    >>> mydict[“pi” ] = 3 .15 #Thay đổi thành phần từ điển dưới chỉ mục “pi”.
    >>> mytuple = (1 , 2 , 3 ) #Chỉ định một bộ
    >>> hàm của tôi = len #Python cho phép bạn khai báo từ đồng nghĩa hàm theo cách này
    >>> in chức năng của tôi (danh sách)
    3

    Bạn có thể sử dụng một phần của mảng bằng cách chỉ định chỉ mục đầu tiên và cuối cùng được phân tách bằng dấu hai chấm ://. Trong trường hợp này, bạn sẽ nhận được một phần của mảng, từ chỉ mục đầu tiên đến chỉ mục thứ hai, không bao gồm. Nếu phần tử đầu tiên không được chỉ định thì việc đếm bắt đầu từ đầu mảng và nếu phần tử cuối cùng không được chỉ định thì mảng sẽ được đọc đến phần tử cuối cùng. Giá trị âm xác định vị trí của phần tử từ cuối. Ví dụ:


    >>> mylist = [“Danh sách mục 1” , 2 , 3 .14 ]
    >>> in danh sách của tôi[:] #Tất cả các phần tử của mảng đều được đọc
    ["Danh sách mục 1" , 2 , 3 .14000000000000001 ]
    >>> in danh sách của tôi #Phần tử 0 và phần tử đầu tiên của mảng được đọc.
    ["Danh sách mục 1" , 2 ]
    >>> in danh sách của tôi[-3 :-1 ] #Elements được đọc từ 0 (-3) đến giây (-1) (không bao gồm)
    ["Danh sách mục 1" , 2 ]
    >>> in danh sách của tôi #Elements được đọc từ đầu đến cuối

    Dây

    Chuỗi trong Python được phân tách bằng dấu ngoặc kép """ hoặc dấu ngoặc đơn """. Dấu ngoặc kép có thể chứa dấu ngoặc đơn hoặc ngược lại. Ví dụ: dòng “Anh ấy đã nói xin chào!” sẽ được hiển thị là "Anh ấy đã nói xin chào!". Nếu bạn cần sử dụng một chuỗi gồm nhiều dòng thì dòng này phải bắt đầu và kết thúc bằng ba dấu ngoặc kép """". Bạn có thể thay thế các phần tử từ một bộ hoặc từ điển vào mẫu chuỗi. Dấu phần trăm "%" giữa chuỗi và bộ dữ liệu thay thế các ký tự trong chuỗi "%s" thành một phần tử bộ dữ liệu. Từ điển cho phép bạn chèn một phần tử tại một chỉ mục nhất định vào một chuỗi. Để thực hiện việc này, hãy sử dụng cấu trúc "%(index)s" trong chuỗi. Trong trường hợp này, thay vì "%(index)s", giá trị từ điển tại chỉ mục đã cho sẽ được thay thế bằng chỉ mục.


    >>>in "Tên: %s\nSố: %s\nChuỗi: %s"% (Của tôi lớp học.name, 3 , 3 * "-") )
    Tên: Poromenos
    Số 3
    Sợi dây: -
    strString = """Văn bản này nằm ở
    trên nhiều dòng"""

    >>> in“Đây là %(động từ)s a %(danh từ)s.” %("danh từ" : "kiểm tra", "động từ" : "là")
    Đây là một bài kiểm tra.

    Toán tử

    Các câu lệnh while nếu như, tạo nên các toán tử di chuyển. Không có sự tương tự ở đây chọn câu lệnh, vì vậy bạn sẽ phải thực hiện nếu như. Trong toán tử sự so sánh diễn ra biến và danh sách. Để có được danh sách các chữ số lên đến một số - sử dụng phạm vi (hàm ). Đây là một ví dụ về việc sử dụng toán tử


    danh sách phạm vi = phạm vi (10) #Nhận danh sách mười số (từ 0 đến 9)
    >>> in người kiểm tra phạm vi
    số trong danh sách phạm vi: #Miễn là biến số (tăng thêm một lần) được đưa vào danh sách...
    # Kiểm tra xem biến có được đưa vào không
    # số thành một bộ số(3 , 4 , 7 , 9 )
    nếu như số trong (3 , 4 , 7 , 9 ): #Nếu số biến nằm trong bộ (3, 4, 7, 9)...
    # Hoạt động " phá vỡ» cung cấp
    # thoát khỏi vòng lặp bất cứ lúc nào
    phá vỡ
    khác :
    # « Tiếp tục"cuộn"
    # vòng. Điều này không bắt buộc ở đây, vì sau thao tác này
    # trong mọi trường hợp, chương trình sẽ quay lại xử lý vòng lặp
    Tiếp tục
    khác :
    # « khác» Không cần thiết phải chỉ ra. Điều kiện được đáp ứng
    # nếu vòng lặp không bị gián đoạn bởi " phá vỡ».
    vượt qua # Không có gì làm

    nếu như danh sách phạm vi == 2 :
    in "Mục thứ hai (danh sách dựa trên 0) là 2"
    yêu tinh danh sách phạm vi == 3 :
    in "Mục thứ hai (danh sách dựa trên 0) là 3"
    khác :
    in"Không biết"

    trong khi danh sách phạm vi == 1 :
    vượt qua

    Chức năng

    Để khai báo một hàm, sử dụng từ khóa " chắc chắn» . Các đối số của hàm được đặt trong dấu ngoặc đơn sau tên hàm. Bạn có thể chỉ định các đối số tùy chọn, đặt cho chúng một giá trị mặc định. Các hàm có thể trả về các bộ dữ liệu, trong trường hợp đó bạn cần viết các giá trị trả về được phân tách bằng dấu phẩy. Từ khóa " lambda" được sử dụng để khai báo các hàm cơ bản.


    # arg2 và arg3 là các đối số tùy chọn, lấy giá trị được khai báo theo mặc định,
    # trừ khi bạn cung cấp cho chúng một giá trị khác khi gọi hàm.
    chắc chắn myfunction(arg1, arg2 = 100 , arg3 = "test" ):
    trở lại arg3, arg2, arg1
    #Hàm được gọi với giá trị của đối số đầu tiên - "Đối số 1", đối số thứ hai - theo mặc định và đối số thứ ba - "Đối số được đặt tên".
    >>>ret1, ret2, ret3 = myfunction("Đối số 1", arg3 = "Đối số được đặt tên")
    # ret1, ret2 và ret3 lần lượt lấy các giá trị "Đối số được đặt tên", 100, "Đối số 1"
    >>> in ret1, ret2, ret3
    Đối số được đặt tên 100 Đối số 1

    # Mục sau đây tương đương chắc chắn f(x): trở lại x+1
    hàmvar = lambda x:x+1
    >>> in hàmvar(1)
    2

    Các lớp học

    Ngôn ngữ Python bị giới hạn ở tính đa kế thừa trong các lớp. Các biến nội bộ và phương pháp nội bộ các lớp bắt đầu bằng hai dấu gạch dưới "__" (ví dụ "__myprivatevar"). Chúng ta cũng có thể gán giá trị cho biến lớp từ bên ngoài. Ví dụ:


    lớp học Của tôi lớp học:
    chung = 10
    chắc chắn __init__(tự):
    tự .myvariable = 3
    chắc chắn myfunction(self, arg1, arg2):
    trở lại tự .myvariable

    # Ở đây chúng ta đã khai báo lớp My lớp học. Hàm __init__ được gọi tự động khi các lớp được khởi tạo.
    >>> classinstance = Của tôi lớp học() # Chúng ta đã khởi tạo lớp và biến myvariable có giá trị 3 như đã nêu trong phương thức khởi tạo
    >>> #Phương thức myfunction của lớp My lớp học trả về giá trị của biến myvariable
    3
    # Biến chung được khai báo ở tất cả các lớp
    >>> classinstance2 = Của tôi lớp học()
    >>> classinstance.common
    10
    >>> classinstance2.common
    10
    # Vậy nếu chúng ta thay đổi giá trị của nó trong lớp My lớp học sẽ thay đổi
    # và các giá trị của nó trong các đối tượng được khởi tạo bởi lớp My lớp học
    >>> Myclass.common = 30
    >>> classinstance.common
    30
    >>> classinstance2.common
    30
    # Và ở đây chúng ta không thay đổi biến lớp. Thay vì điều này
    # chúng ta khai báo nó trong một đối tượng và gán cho nó một giá trị mới
    >>> classinstance.common = 10
    >>> classinstance.common
    10
    >>> classinstance2.common
    30
    >>> Myclass.common = 50
    # Bây giờ việc thay đổi biến lớp sẽ không ảnh hưởng
    # đối tượng biến của lớp này
    >>> classinstance.common
    10
    >>> classinstance2.common
    50

    # Lớp tiếp theo là hậu duệ của lớp My lớp học
    # bằng cách kế thừa các thuộc tính và phương thức của nó, ai có thể tạo lớp đó
    # kế thừa từ nhiều lớp, trong trường hợp này là mục
    # như thế này: lớp học Lớp khác(Myclass1, Myclass2, MyclassN)
    lớp học Lớp khác (Myclass):
    chắc chắn __init__(tự, arg1):
    tự .myvariable = 3
    in arg1

    >>> classinstance = Otherclass("xin chào")
    Xin chào
    >>> classinstance.myfunction(1 , 2 )
    3
    # Lớp này không có bài kiểm tra thuộc tính, nhưng chúng ta có thể
    # khai báo một biến như vậy cho một đối tượng. Hơn thế nữa
    # biến này sẽ chỉ là thành viên lớp học ví dụ.
    >>> classinstance.test = 10
    >>> classinstance.test
    10

    Ngoại lệ

    Các ngoại lệ trong Python có cấu trúc thử-ngoại trừ [ngoại trừ tên ion]:


    chắc chắn một số chức năng():
    thử :
    # Chia cho 0 gây ra lỗi
    10 / 0
    ngoại trừ ZeroDivisionError:
    # Nhưng chương trình không "Thực hiện thao tác bất hợp pháp"
    # Và xử lý khối ngoại lệ tương ứng với lỗi “ZeroDivisionError”
    in"Ồ, không hợp lệ."

    >>>fn ngoại trừ()
    Rất tiếc, không hợp lệ.

    Nhập khẩu

    Các thư viện bên ngoài có thể được kết nối bằng thủ tục “ nhập khẩu", tên thư viện đang được kết nối ở đâu. Bạn cũng có thể sử dụng lệnh " từ nhập khẩu" để bạn có thể sử dụng một chức năng từ thư viện


    nhập khẩu ngẫu nhiên #Nhập thư viện “ngẫu nhiên”
    từ thời gian nhập khẩu cái đồng hồ #Và đồng thời chức năng “đồng hồ” từ thư viện “thời gian”

    Randomint = ngẫu nhiên .randint(1 , 100 )
    >>> in ngẫu nhiên
    64

    Làm việc với hệ thống tập tin

    Python có nhiều thư viện tích hợp. Trong ví dụ này chúng ta sẽ cố gắng lưu vào tập tin nhị phân cấu trúc danh sách, đọc nó và lưu trữ dòng trong tập tin văn bản. Để chuyển đổi cấu trúc dữ liệu chúng ta sẽ sử dụng thư viện chuẩn “pickle”


    nhập khẩu dưa chua
    mylist = ["Cái này", "là" , 4 , 13327 ]
    # Mở file C:\binary.dat để ghi. ký hiệu "r"
    # ngăn chặn việc thay thế các ký tự đặc biệt (chẳng hạn như \n, \t, \b, v.v.).
    myfile = tập tin (r"C:\binary.dat" , "w")
    dưa chua .dump(mylist, myfile)
    myfile.close()

    Myfile = tập tin (r"C:\text.txt" , "w")
    myfile.write("Đây là một chuỗi mẫu")
    myfile.close()

    Myfile = tệp (r"C:\text.txt")
    >>> in myfile.read()
    "Đây là một chuỗi mẫu"
    myfile.close()

    # Mở file để đọc
    myfile = tệp (r"C:\binary.dat")
    danh sách đã tải = dưa chua .load(myfile)
    myfile.close()
    >>> in danh sách đã tải
    ["Cái này" , "là" , 4 , 13327 ]

    Đặc thù

    • Điều kiện có thể được kết hợp. 1 < a < 3 выполняется тогда, когда а больше 1, но меньше 3.
    • Sử dụng thao tác " del" ĐẾN xóa các biến hoặc phần tử mảng.
    • Python mang đến những cơ hội tuyệt vời cho làm việc với danh sách. Bạn có thể sử dụng các toán tử khai báo cấu trúc danh sách. Nhà điều hành cho phép bạn chỉ định các thành phần danh sách theo một trình tự cụ thể và nếu như- cho phép bạn chọn các phần tử theo điều kiện.
    >>> lst1 =
    >>> lst2 =
    >>> in
    >>> in
    # Toán tử "bất kỳ" trả về true nếu mặc dù
    # nếu một trong các điều kiện trong đó được thỏa mãn.
    >>> bất kỳ(i % 3 tôi vào )
    ĐÚNG VẬY
    # Thủ tục sau đây đếm số
    # phần tử phù hợp trong danh sách
    >>> tổng (1 tôi ở nếu như tôi == 3)
    3
    >>> del lst1
    >>> in lst1
    >>> del lst1
    • Biến toàn cụcđược khai báo bên ngoài các hàm và có thể được đọc mà không cần khai báo. Nhưng nếu bạn cần thay đổi giá trị của biến toàn cục từ một hàm thì bạn cần khai báo nó ở đầu hàm từ khóa « toàn cầu" nếu bạn không làm điều này thì Python sẽ khai báo một biến mà chỉ hàm đó mới có thể truy cập được.
    số = 5

    chắc chắn myfunc():
    # Đầu ra 5
    in con số

    chắc chắn otherfunc():
    # Điều này tạo ra một ngoại lệ vì biến toàn cục
    # không được gọi từ một hàm. Python trong trường hợp này tạo ra
    # biến có cùng tên bên trong hàm này và có thể truy cập được
    # chỉ dành cho người vận hành hàm này.
    in con số
    số = 3

    chắc chắn yetanotherfunc():
    toàn cầu con số
    # Và chỉ từ hàm này giá trị của biến mới được thay đổi.
    số = 3

    Lời kết

    Tất nhiên, bài viết này không mô tả hết các tính năng của Python. Tôi hy vọng bài viết này sẽ giúp ích cho bạn nếu bạn muốn tiếp tục học ngôn ngữ lập trình này.

    Lợi ích của Python

    • Tốc độ thực thi của các chương trình viết bằng Python rất cao. Điều này là do các thư viện Python chính
      được viết bằng C++ và mất ít thời gian hơn để hoàn thành nhiệm vụ so với các ngôn ngữ cấp cao khác.
    • Vì điều này, bạn có thể viết các mô-đun Python của riêng mình bằng C hoặc C++
    • Trong thư viện Python tiêu chuẩn, bạn có thể tìm thấy các công cụ để làm việc với bằng email, giao thức
      Internet, FTP, HTTP, cơ sở dữ liệu, v.v.
    • Các tập lệnh được viết bằng Python chạy trên hầu hết các hệ điều hành hiện đại. Tính di động này đảm bảo Ứng dụng Python trong nhiều lĩnh vực khác nhau.
    • Python phù hợp với mọi giải pháp lập trình chương trình văn phòng, ứng dụng web, ứng dụng GUI, v.v.
    • Hàng nghìn người đam mê từ khắp nơi trên thế giới đã làm việc để phát triển Python. Hỗ trợ công nghệ hiện đại trong thư viện chuẩn chúng ta có thể nợ một thực tế là Python đã mở cửa cho tất cả mọi người.

    thẻ:

    • Python
    • lập trình
    • bài học
    Thêm thẻ

    Kể từ khi bắt đầu dạy Python vào năm 2011, tôi đã tìm thấy một số tài nguyên mà tôi sử dụng thường xuyên. Khi tôi mới bắt đầu học ngôn ngữ này, tôi đã rất ngạc nhiên trước sự chào đón của cộng đồng Python. Bằng chứng của điều này là số lượng lớn vật liệu chất lượng cao miễn phí. Dưới đây tôi sẽ đưa ra ví dụ về những tài nguyên sẽ không tồn tại nếu không có sự hỗ trợ của cộng đồng.

    1. Phát minh trò chơi máy tính của riêng bạn bằng Python

    Có thể bạn đã có cuốn sách Python yêu thích của mình nhưng tôi khuyến khích bạn đọc cuốn sách này. Bạn có thể mua nó, đọc trực tuyến hoặc tải xuống miễn phí dưới dạng PDF. Tôi thích cấu trúc các chương giống nhau: đầu tiên vấn đề được đặt ra, sau đó là các ví dụ về giải pháp cho các vấn đề với giải thích chi tiết. Cùng một tác giả đã viết thêm 3 cuốn sách tuyệt vời.

    2. Điêu khắc

    Tôi đã làm việc ở những trường học mà vì lý do này hay lý do khác (thường là lý do bảo mật) Python không có sẵn. Skulpt chạy các tập lệnh Python trong trình duyệt và bao gồm một số ví dụ. Cái đầu tiên sử dụng mô-đun Turtle để xuất hình dạng hình học. Tôi thường dùng nó để kiểm tra kiến ​​thức của học sinh.

    3. Đoán số

    8. Ngẫu nhiên

    Python có một số hàm tích hợp hữu ích, chẳng hạn như in và nhập liệu. Mặt khác, mô-đun ngẫu nhiên cần phải được nhập trước khi sử dụng. Nó cho phép sinh viên thêm một chút khó đoán vào dự án của họ.

    Nhập xu ngẫu nhiên = ['ngửa','đuôi'] lật = ngẫu nhiên.choice(xu) in(lật)

    9. Chống trọng lực

    Tôi hiếm khi sử dụng mô-đun chống trọng lực. Nhưng khi tôi phải làm điều này, tôi hỏi học sinh điều gì sẽ xảy ra khi họ nhập nó. Thông thường, tôi nhận được nhiều câu trả lời khác nhau, đôi khi họ thậm chí còn gợi ý rằng tác dụng thực sự của tình trạng không trọng lượng sẽ bắt đầu - họ nghĩ rằng Python rất mạnh :) Bạn có thể tự mình thử và cung cấp nó cho học sinh của mình.

    Nhập khẩu phản lực hấp dẫn

    10. Phá hoại

    Thử thách lớn nhất đối với tôi với tư cách là một giáo viên là tìm ra lỗi cú pháp trong chương trình của học sinh. May mắn thay, trước khi kiệt sức hoàn toàn, tôi đã nghĩ ra

    Python là ngôn ngữ lập trình cấp cao, được sử dụng rộng rãi, được đặt theo tên của chương trình truyền hình hài nổi tiếng của Anh " Rạp xiếc bay của Monty Python" Ngôn ngữ Python có cấu trúc đơn giản nhưng cực kỳ linh hoạt và mạnh mẽ. Xem xét rằng Mã Python Dễ đọc và không quá khắt khe về cú pháp, nó được nhiều người coi là ngôn ngữ lập trình cơ bản tốt nhất.

    Python - mô tả ngôn ngữ được đưa ra trong Foundation mô tả Python:

    Python là ngôn ngữ lập trình hướng đối tượng, tương tác, thông dịch. Nó bao gồm các mô-đun, ngoại lệ, kiểu gõ động, kiểu dữ liệu động cấp cao và các lớp. Python kết hợp hiệu suất tuyệt vời với cú pháp rõ ràng. Nó cung cấp giao diện cho nhiều cuộc gọi hệ thống và thư viện, cũng như các hệ thống cửa sổ khác nhau và có thể mở rộng bằng C và C++. Python được sử dụng làm ngôn ngữ mở rộng cho các ứng dụng cần giao diện phần mềm. Cuối cùng, Python là ngôn ngữ đa nền tảng: nó chạy trên nhiều phiên bản Unix, Mac và máy tính chạy MS-DOS, Windows, Windows NT và OS/2.

    Bạn nên học ngôn ngữ lập trình nào đầu tiên?

    Bạn có thể bắt đầu học ngôn ngữ lập trình Python. Để minh họa Python khác với các ngôn ngữ cơ bản khác như thế nào, hãy nghĩ lại thời bạn còn là một thiếu niên.

    Học lập trình với sử dụng Python tương tự như việc lái chiếc xe tải nhỏ của bố mẹ bạn. Khi bạn đã lái nó đi vòng quanh bãi đậu xe vài lần, bạn sẽ bắt đầu hiểu cách điều khiển xe.

    Đang cố gắng học lập trình bằng C ( hoặc thậm chí là người lắp ráp) nó giống như việc học lái xe bằng cách lắp ráp chiếc xe tải nhỏ của bố mẹ bạn. Bạn sẽ bị mắc kẹt trong gara hàng năm trời để lắp ráp các bộ phận lại với nhau, và đến khi bạn hiểu đầy đủ về cách thức hoạt động của chiếc xe cũng như có thể khắc phục sự cố và dự đoán các vấn đề trong tương lai, bạn sẽ kiệt sức trước khi kịp hiểu được những vấn đề đó. bánh xe.

    Lợi ích của Python

    Python là ngôn ngữ phổ quát dành cho người mới bắt đầu. Bạn có thể tự động hóa quy trình công việc, tạo trang web cũng như tạo các ứng dụng và trò chơi trên máy tính để bàn bằng Python. Nhân tiện, nhu cầu về nhà phát triển Python ( PostgreSQL, OOP, Bình, Django) đã phát triển đáng kể trong vài năm qua tại các công ty như Instagram, Reddit, Tumblr, YouTube và Pinterest.

    Ngôn ngữ mục đích chung cấp cao

    Python là ngôn ngữ lập trình cấp cao. Sử dụng nó, bạn có thể tạo hầu hết mọi loại phần mềm. Tính linh hoạt này giúp bạn luôn hứng thú khi phát triển các chương trình và giải pháp nhắm đến sở thích của mình thay vì mắc kẹt trong đống ngôn ngữ lo lắng về cú pháp của nó.

    Ngôn ngữ thông dịch

    Ngôn ngữ lập trình Python dành cho người mới bắt đầu được thông dịch, có nghĩa là bạn không cần biết cách biên dịch mã. Vì không có bước biên dịch nên năng suất tăng lên và thời gian chỉnh sửa, kiểm tra và gỡ lỗi giảm đi rất nhiều. Chỉ cần tải xuống IDE ( IDE), hãy viết mã của bạn và nhấp vào “Chạy” ( Chạy).

    Khả năng đọc mã là chìa khóa

    Cú pháp đơn giản, dễ học của Python nhấn mạnh vào khả năng đọc và thiết lập một phong cách lập trình tốt. Với Python, bạn có thể diễn đạt ý tưởng của mình với ít dòng mã hơn. Ngôn ngữ này cũng buộc bạn phải suy nghĩ về logic và thuật toán của chương trình. Bởi vì điều này, nó thường được sử dụng làm ngôn ngữ kịch bản hoặc tích hợp ( ngôn ngữ keo) để liên kết các thành phần hiện có với nhau và viết khối lượng lớn mã dễ đọc và chạy được trong khoảng thời gian ngắn.

    Chỉ là vui thôi

    Bạn không thể đặt tên một ngôn ngữ lập trình theo tên Monty Python mà không có khiếu hài hước. Hơn nữa, thử nghiệm đã được thực hiện để so sánh thời gian cần thiết để viết một tập lệnh đơn giản trong nhiều ngôn ngữ khác nhau (Python, Java, C, J, CƠ BẢN):

    ...Python cần ít thời gian hơn, ít dòng mã hơn và ít khái niệm hơn để đạt được mục tiêu của bạn... Và trên hết, lập trình Python rất thú vị! Niềm vui và thành công thường xuyên sẽ tạo dựng sự tự tin và hứng thú cho học sinh, những người sẽ được chuẩn bị tốt hơn để tiếp tục học Python.

    Bản dịch bài viết “Tại sao nên học Python? "đã được chuẩn bị bởi nhóm dự án thân thiện.

    Tốt xấu