Hướng dẫn python detect variable change - python phát hiện thay đổi biến

Tôi muốn biết làm thế nào để kiểm tra hiệu quả nếu một biến có thay đổi giá trị và nếu có, để trả về giá trị này. Hiện tại tôi có một cái gì đó như thế này:

while[True]:
    if paramCHK == x:
        // do this
    elif paramCHK == y:
        // do that
        // and that
        // and that

Vấn đề với việc triển khai ở trên là khi tôi ở trong mệnh đề Elif và tham số thay đổi thành X, điều này không được phát hiện vì thời gian thực hiện của mệnh đề là quá dài.

Những gì tôi có trong đầu là tạo một luồng và theo dõi tham số liên tục theo kiểu song song và khi phát hiện ra sự thay đổi, hãy báo cáo nó với chức năng chính:

myThread[]:
    if paramCHK.changed[]:
        notify_main[] 

main[]:
   when notification:
       getParamValue[]
       // do something depending the value

Làm thế nào bạn sẽ giải quyết điều này trong Python? Cảm ơn trước

Hỏi ngày 8 tháng 7 năm 2019 lúc 17:07Jul 8, 2019 at 17:07

2

pastx=x
while True:
    if x != pastx:
        pastx=x
        alert[]    
    pastx=x

Bit mã này có thể đi khi bắt đầu vòng lặp trong khi của bạn và sẽ phát hiện xem x có thay đổi trong vòng lặp cuối cùng không và sẽ chạy hàm alert [] nếu nó có

Đã trả lời ngày 8 tháng 7 năm 2019 lúc 17:40Jul 8, 2019 at 17:40

3NiGMa3NiGMa3NiGMa

5451 Huy hiệu vàng8 Huy hiệu bạc24 Huy hiệu đồng1 gold badge8 silver badges24 bronze badges

Pycharm cung cấp nhiều phương tiện khác nhau để hỗ trợ kiểm tra và kiểm tra các loại đối tượng trong tập lệnh của bạn. Pycharm hỗ trợ các gợi ý loại trong các chú thích chức năng và nhận xét loại bằng mô -đun typing và định dạng được xác định bởi PEP 484.

Thêm gợi ý loại

Mặc dù PyCharm hỗ trợ tất cả các phương pháp để thêm các loại được hỗ trợ trong PEP 484, nhưng sử dụng gợi ý loại thông qua các hành động có ý định là cách thuận tiện nhất. Tùy thuộc vào thông dịch viên bạn sử dụng, loại được thêm vào dưới dạng chú thích [Python 3] hoặc như một nhận xét [Python 2].

Để thêm gợi ý loại, hãy làm theo các bước sau:

  1. Chọn một phần tử mã.

  2. Nhấn Alt+Enter.

  3. Chọn Thêm Gõ Gợi ý cho ....Add type hint for ....

  4. Nhấn Enter để hoàn thành hành động hoặc chỉnh sửa loại nếu thích hợp.

Thí dụ

Hành động ý định

Mã kết quả cho nhận xét [Python 2]

Mã kết quả cho chú thích [Python 3]

Biến

Chức năng

Thuộc tính lớp

Bạn cũng có thể sử dụng Stub Python để chỉ định các loại biến, hàm và trường lớp.

Đối với các gợi ý loại dựa trên nhận xét, Pycharm cho thấy một hành động có ý định cho phép bạn chuyển đổi gợi ý loại dựa trên nhận xét sang chú thích thay đổi. Ý định này có tên chuyển đổi thành chú thích biến và hoạt động như sau:Convert to variable annotation, and works as follows:

Trước

Sau

Từ gõ danh sách nhập, tùy chọn xs = [] # type: list [Tùy chọn [str]]

Từ gõ danh sách nhập, tùy chọn xs: list [tùy chọn [str]] = []

Loại xác nhận gợi ý

Bất cứ khi nào bạn áp dụng gợi ý loại, Pycharm kiểm tra xem loại được sử dụng chính xác theo PEP được hỗ trợ. Nếu có lỗi sử dụng, cảnh báo tương ứng được hiển thị và hành động được đề xuất được đề xuất. Dưới đây là các ví dụ xác nhận.

Lỗi xác nhận

Hành động đề xuất

Sao chép của Tuyên bố loại.

Loại bỏ một trong hai khai báo loại.

Số lượng đối số trong khai báo loại khác với số lượng đối số hàm.

Điều chỉnh số lượng của các đối số.

Nhập nhận xét với việc giải nén không phù hợp với các mục tiêu tương ứng.

Kiểm tra định dạng đích và sửa đổi các loại bình luận phù hợp.

Cú pháp không chính xác của các tham số Callable.

Sử dụng định dạng được đề xuất và thêm các dấu ngoặc cần thiết để bọc các tham số Callable.

Loại bất ngờ trong biểu thức gán.

Căn chỉnh các loại để phù hợp với mô hình dự kiến.

Gán một giá trị cho một biến Final.

Bạn không thể thay đổi một biến được chú thích là Final. Xem xét thay đổi loại của biến.

Kế thừa một lớp được chú thích là Final.

Bạn không thể kế thừa một lớp có chú thích Final. Xem xét việc tạo ra một lớp khác.

Ghi đè một phương pháp được trang trí với

myThread[]:
    if paramCHK.changed[]:
        notify_main[] 

main[]:
   when notification:
       getParamValue[]
       // do something depending the value
0.

Bạn không thể ghi đè một phương pháp được trang trí với

myThread[]:
    if paramCHK.changed[]:
        notify_main[] 

main[]:
   when notification:
       getParamValue[]
       // do something depending the value
0. Xem xét xác định một phương pháp khác.

Loại không chính xác của đối số chức năng.

Chuyển một từ điển đến hàm

myThread[]:
    if paramCHK.changed[]:
        notify_main[] 

main[]:
   when notification:
       getParamValue[]
       // do something depending the value
2 thay vì một danh sách.

Gán một loại giá trị sai cho khóa trong loại

myThread[]:
    if paramCHK.changed[]:
        notify_main[] 

main[]:
   when notification:
       getParamValue[]
       // do something depending the value
3.

Cung cấp giá trị của

myThread[]:
    if paramCHK.changed[]:
        notify_main[] 

main[]:
   when notification:
       getParamValue[]
       // do something depending the value
4 là
myThread[]:
    if paramCHK.changed[]:
        notify_main[] 

main[]:
   when notification:
       getParamValue[]
       // do something depending the value
5:

myThread[]:
    if paramCHK.changed[]:
        notify_main[] 

main[]:
   when notification:
       getParamValue[]
       // do something depending the value
6

Sử dụng các khóa sai trong loại

myThread[]:
    if paramCHK.changed[]:
        notify_main[] 

main[]:
   when notification:
       getParamValue[]
       // do something depending the value
3:

Gán các khóa theo quy định trong định nghĩa loại:

myThread[]:
    if paramCHK.changed[]:
        notify_main[] 

main[]:
   when notification:
       getParamValue[]
       // do something depending the value
6

Sử dụng không chính xác của một chức năng trang trí. Pycharm xác nhận các loại chức năng được trang trí dựa trên các loại trang trí của họ:

Sửa đổi trình trang trí hoặc tuyên bố sử dụng trả về chức năng theo yêu cầu.

Bạn có thể thêm một nhận xét

myThread[]:
    if paramCHK.changed[]:
        notify_main[] 

main[]:
   when notification:
       getParamValue[]
       // do something depending the value
9 để đàn áp một loại cảnh báo xác thực hoặc một tuyên bố nhập khẩu bị thiếu.

STUBS PYTHON

Bạn có thể sử dụng các tệp sơ khai Python để chỉ định loại gợi ý bằng cú pháp Python 3. Những gợi ý đó sẽ có sẵn trong các tệp Python của bạn bất kể phiên bản Python nào được sử dụng trong trình thông dịch.

Trong các ví dụ sau đây, các gợi ý về

pastx=x
while True:
    if x != pastx:
        pastx=x
        alert[]    
    pastx=x
0 từ tệp sơ khai [stubs.pyi] có sẵn trong tệp Python [stubs.py]:stubs.pyi] become available in the Python file [stubs.py]:

Nếu bạn đang sử dụng một gói mà phát hiện thấy tương tự cuống, thông báo sau sẽ xuất hiện:

Bạn có thể cài đặt gói sơ khai, bỏ qua thông báo này và tiếp tục làm việc với gói hiện đã được cài đặt hoặc tắt loại kiểm tra này trong cài đặt/tùy chọn dự án.Settings/Preferences.

Sử dụng đánh máy

Được đánh máy là một tập hợp các tệp có chú thích loại cho thư viện Python tiêu chuẩn và các gói khác nhau. Các sơ khai được đánh máy cung cấp các định nghĩa cho các lớp, chức năng và mô -đun Python được xác định với các gợi ý loại. Pycharm sử dụng thông tin này để hoàn thành mã tốt hơn, kiểm tra và các tính năng Insight mã khác.

Pycharm đang chuyển sang đánh máy, kho lưu trữ phổ biến cho các cuống Python. Các cuống được đánh máy gói với pycharm được hiển thị trong chế độ xem dự án dưới các thư viện bên ngoài nút | | Tiểu loại. Lưu ý rằng Pycharm hiện chỉ sử dụng một vài cuống được bó [đó là

pastx=x
while True:
    if x != pastx:
        pastx=x
        alert[]    
    pastx=x
1,
pastx=x
while True:
    if x != pastx:
        pastx=x
        alert[]    
    pastx=x
2 và một số khác].External Libraries | | Typeshed Stubs. Note that PyCharm currently uses only a few of the bundled stubs [that is
pastx=x
while True:
    if x != pastx:
        pastx=x
        alert[]    
    pastx=x
1,
pastx=x
while True:
    if x != pastx:
        pastx=x
        alert[]    
    pastx=x
2, and several others].

Để ghi đè kho lưu trữ kiểu chữ được đóng gói bằng phiên bản của riêng bạn, hãy làm theo các bước sau:

  1. Sao chép một số hoặc tất cả các cuống vào một thư mục trong dự án của bạn.

  2. Đánh dấu một thư mục là một nguồn gốc bằng cách chọn Thư mục Mark là | Nguồn gốc từ menu ngữ cảnh của thư mục.Mark Directory as | Sources Root from the context menu of the directory.

Kho lưu trữ bộ xương Python //github.com/jetbrains/python-seletons hiện không bị phản đối.

Sửa đổi lần cuối: 19 tháng 9 năm 2022

Bài Viết Liên Quan

Chủ Đề