Tương lai của trăn

Ở đây, chúng tôi sẽ tạo nút dịch vụ ("add_two_ints_server") sẽ nhận hai số nguyên và trả về tổng

Thay đổi thư mục thành gói begin_tutorials mà bạn đã tạo trong hướng dẫn trước đó, tạo một gói

$ roscd beginner_tutorials

Vui lòng đảm bảo rằng bạn đã làm theo hướng dẫn trong hướng dẫn trước để tạo dịch vụ cần thiết trong hướng dẫn này, tạo AddTwoInts. srv (đảm bảo chọn đúng phiên bản công cụ xây dựng mà bạn đang sử dụng ở đầu trang wiki trong liên kết)

Mật mã

Tạo tập lệnh/add_two_ints_server. py trong gói begin_tutorials và dán đoạn mã sau vào bên trong gói

Đừng quên làm cho nút có thể thực thi được

  • chmod +x scripts/add_two_ints_server.py

Thêm phần sau vào CMakeLists của bạn. txt. Điều này đảm bảo tập lệnh python được cài đặt đúng cách và sử dụng đúng trình thông dịch python

catkin_install_python(PROGRAMS scripts/add_two_ints_server.py
  DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

Mã giải thích

Bây giờ, hãy chia nhỏ mã

Có rất ít để viết một dịch vụ bằng cách sử dụng rospy. Chúng tôi khai báo nút của mình bằng cách sử dụng init_node() và sau đó khai báo dịch vụ của chúng tôi

  12     s = rospy.Service('add_two_ints', AddTwoInts, handle_add_two_ints)

Điều này khai báo một dịch vụ mới có tên add_two_ints với loại dịch vụ AddTwoInts. Tất cả các yêu cầu được chuyển đến hàm handle_add_two_ints. handle_add_two_ints được gọi với các phiên bản của AddTwoIntsRequest và trả về các phiên bản của AddTwoIntsResponse

Cũng giống như ví dụ về người đăng ký, rospy. spin() ngăn mã của bạn thoát cho đến khi dịch vụ bị tắt

Viết nút máy khách

Mật mã

Tạo tập lệnh/add_two_ints_client. py trong gói begin_tutorials và dán đoạn mã sau vào bên trong gói

Đừng quên làm cho nút có thể thực thi được

$ chmod +x scripts/add_two_ints_client.py

Sau đó, chỉnh sửa cuộc gọi catkin_install_python() trong CMakeLists của bạn. txt để nó trông giống như sau

catkin_install_python(PROGRAMS scripts/add_two_ints_server.py scripts/add_two_ints_client.py
  DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

Mã giải thích

Bây giờ, hãy chia nhỏ mã

Mã khách hàng gọi dịch vụ cũng đơn giản. Đối với khách hàng, bạn không cần phải gọi init_node(). Đầu tiên chúng tôi gọi

  10     rospy.wait_for_service('add_two_ints')

Đây là một phương pháp tiện lợi chặn cho đến khi dịch vụ có tên add_two_ints khả dụng

Tiếp theo, chúng tôi tạo một tay cầm để gọi dịch vụ

  12         add_two_ints = rospy.ServiceProxy('add_two_ints', AddTwoInts)

Chúng ta có thể sử dụng handle này giống như một hàm bình thường và gọi nó là

________số 8

Bởi vì chúng tôi đã khai báo loại dịch vụ là AddTwoInts, nên nó thực hiện công việc tạo đối tượng AddTwoIntsRequest cho bạn (thay vào đó, bạn có thể tự chuyển qua đối tượng của riêng mình). Giá trị trả về là một đối tượng AddTwoIntsResponse. Nếu cuộc gọi không thành công, một màu hồng. ServiceException có thể bị ném, vì vậy bạn nên thiết lập khối thử/ngoại trừ thích hợp

Xây dựng các nút của bạn

Chúng tôi sử dụng CMake làm hệ thống xây dựng của mình và vâng, bạn phải sử dụng nó ngay cả đối với các nút Python. Điều này là để đảm bảo rằng mã Python được tạo tự động cho các tin nhắn và dịch vụ được tạo

Chúng tôi cũng sử dụng Makefile để thuận tiện. roscreate-pkg đã tự động tạo một Makefile nên bạn không cần phải chỉnh sửa nó

Bạn đã đăng ký. Chúng tôi sẽ đặt hàng trước các mặt hàng của bạn trong vòng 24 giờ kể từ khi chúng có sẵn. Khi sách mới được phát hành, chúng tôi sẽ tính phí theo phương thức thanh toán mặc định của bạn với mức giá thấp nhất có sẵn trong thời gian đặt hàng trước

Hướng dẫn thủ công này tồn tại để cung cấp cho cả nhà phát triển Python mới làm quen và chuyên gia một cuốn sổ tay thực hành tốt nhất để cài đặt, cấu hình và sử dụng Python hàng ngày

Hướng dẫn này được đưa ra ý kiến ​​theo cách gần như, nhưng không hoàn toàn, hoàn toàn không giống với tài liệu chính thức của Python. Bạn sẽ không tìm thấy danh sách mọi khung web Python có sẵn tại đây. Thay vào đó, bạn sẽ tìm thấy một danh sách ngắn gọn đẹp mắt về các tùy chọn được đề xuất cao

Ghi chú

Việc sử dụng Python 3 được khuyến nghị cao hơn Python 2. Cân nhắc nâng cấp các ứng dụng và cơ sở hạ tầng của bạn nếu bạn thấy mình vẫn đang sử dụng Python 2 trong phiên bản sản xuất hiện nay. Nếu bạn đang sử dụng Python 3, xin chúc mừng — bạn thực sự là một người có gu thẩm mỹ tuyệt vời. —Kenneth Reitz

Bắt đầu nào. Nhưng trước tiên, hãy đảm bảo rằng bạn biết chiếc khăn của mình ở đâu

Bắt đầu với Python¶

Bạn mới sử dụng Python?

  • Chọn một Trình thông dịch Python (3 so với 2)
    • Trạng thái của Python (3 & 2)
    • khuyến nghị
    • Vì thế…. 3?
    • Triển khai

  • Cài đặt Python đúng cách trên hệ thống của bạn

  • Cài đặt Python đúng cách
  • Cài đặt Python 3 trên Mac OS X
  • Cài đặt Python 3 trên Windows
  • Cài đặt Python 3 trên Linux
  • Cài đặt Python 2 trên Mac OS X
  • Cài đặt Python 2 trên Windows
  • Cài đặt Python 2 trên Linux

  • Sử dụng Virtualenv với Pipenv

  • Pipenv & Môi trường ảo
    • Đảm bảo bạn có Python & pip
    • Cài đặt Pipenv
    • Cài đặt các gói cho dự án của bạn
    • Sử dụng các gói đã cài đặt
    • Bước tiếp theo
  • Mức độ thấp hơn. virtualenv
    • Sử dụng cơ bản
    • Ghi chú khác
    • virtualenvwrapper
    • virtualenv-burrito
    • direnv

Môi trường phát triển Python¶

Phần này của hướng dẫn tập trung vào môi trường phát triển Python và các công cụ thực hành tốt nhất hiện có để viết mã Python

  • Môi trường phát triển của bạn
    • soạn thảo văn bản
    • IDE
    • Công cụ phiên dịch
    • Các công cụ khác
  • Pipenv & Môi trường ảo
    • Đảm bảo bạn có Python & pip
    • Cài đặt Pipenv
    • Cài đặt các gói cho dự án của bạn
    • Sử dụng các gói đã cài đặt
    • Bước tiếp theo
  • Mức độ thấp hơn. virtualenv
    • Sử dụng cơ bản
    • Ghi chú khác
    • virtualenvwrapper
    • virtualenv-burrito
    • direnv
  • Cấu hình thêm của pip và Virtualenv
    • Yêu cầu một môi trường ảo đang hoạt động cho pip
    • Gói bộ nhớ đệm để sử dụng trong tương lai

Viết mã Python tuyệt vời¶

Phần này của hướng dẫn tập trung vào các phương pháp hay nhất để viết mã Python

  • Cấu trúc dự án của bạn
    • Cấu trúc của Kho lưu trữ
    • Cấu trúc mã là chìa khóa
    • mô-đun
    • gói
    • Lập trình hướng đối tượng
    • người trang trí
    • Trình quản lý bối cảnh
    • gõ động
    • Các loại có thể thay đổi và không thay đổi
    • Phụ thuộc nhà cung cấp
    • người chạy
    • Đọc thêm
  • Kiểu mã
    • Khái niệm chung
    • thành ngữ
    • Thiền của Python
    • PEP 8
    • quy ước
  • Đọc mật mã tuyệt vời
  • Tài liệu
    • Tài liệu dự án
    • Công bố dự án
    • Tư vấn tài liệu mã
    • Các công cụ khác
  • Kiểm tra mã của bạn
    • Những thứ cơ bản
    • Công cụ
  • ghi nhật ký
    • … hay In?
    • Đăng nhập vào một thư viện
    • Đăng nhập vào một ứng dụng
  • Gotcha thông thường
    • Đối số mặc định có thể thay đổi
    • Đóng ràng buộc muộn
    • Mã byte (. pyc) Tệp ở mọi nơi
  • Chọn giấy phép

Hướng dẫn kịch bản cho các ứng dụng Python¶

Phần này của hướng dẫn tập trung vào lời khuyên về công cụ và mô-đun dựa trên các tình huống khác nhau

  • Ứng dụng mạng
    • HTTP
    • Hệ thống phân phối
  • Ứng dụng web và Framework
    • Định nghĩa bài văn
    • khung
    • máy chủ web
    • Máy chủ WSGI
    • Các phương pháp hay nhất về máy chủ
    • lưu trữ
    • tạo khuôn mẫu
  • Quét HTML
    • Rút trích nội dung trang web
    • lxml và Yêu cầu
  • Ứng dụng dòng lệnh
    • Nhấp chuột
    • tài liệu
    • Đặt
    • vách đá
    • Xi măng
    • Trăn lửa
  • Ứng dụng GUI
    • lạc đà
    • Ca cao
    • GTk
    • PyGObject hay còn gọi là (PyGi)
    • kivy
    • PyObjC
    • PySide
    • PyQt
    • Pyjs Desktop (trước đây là Pyjama Desktop)
    • Qt
    • PySimpleGUI
    • toga
    • TK
    • wxPython
  • cơ sở dữ liệu
    • DB-API
    • Thuật giả kim SQL
    • Hồ sơ
    • PugQuery
    • Django ORM
    • đi tiểu
    • ngựaORM
    • đối tượng SQL
  • mạng
    • xoắn
    • PyZMQ
    • sự kiện
  • Quản trị hệ thống
    • Vải vóc
    • Muối ăn
    • psutil
    • ansible
    • đầu bếp
    • con rối
    • Bản vẽ thiết kế
    • Xây dựng ra
    • Shinken
  • Hội nhập liên tục
    • Tại sao?
    • Jenkins
    • Buildbot
    • chất độc
    • Travis-CI
  • Tốc độ, vận tốc
    • Định nghĩa bài văn
    • Phần mở rộng C
    • đồng thời
  • Ứng dụng khoa học
    • Định nghĩa bài văn
    • Công cụ
    • thư viện
    • Tài nguyên
  • Thao tác hình ảnh
    • Thư viện hình ảnh Python
    • Thị giác máy tính mã nguồn mở
  • Tuần tự hóa dữ liệu
    • Tuần tự hóa dữ liệu là gì?
    • phẳng so với. Dữ liệu lồng nhau
    • Nối tiếp văn bản
    • nhị phân
    • nguyên mẫu
  • phân tích cú pháp XML
    • gỡ rối
    • xmltodict
    • lược đồ xml
  • JSON
    • Phân tích cú pháp JSON
  • mật mã
    • mật mã
    • ràng buộc GPGME
  • Học máy
    • ngăn xếp khoa học
    • scikit-học
  • Giao diện với thư viện C/C++
    • C Giao diện chức năng nước ngoài
    • ctypes
    • SWIG
    • Tăng. con trăn

Vận chuyển Great Python Code¶

Phần này của hướng dẫn tập trung vào việc chia sẻ và triển khai mã Python của bạn

  • Xuất bản mã của bạn
    • Tạo Repo dự án trên GitHub
    • Khi dự án của bạn phát triển
  • Đóng gói mã của bạn
    • Lựa chọn thay thế cho bao bì
    • Dành cho nhà phát triển Python
    • Đối với bản phân phối Linux
  • Đóng băng mã của bạn
    • Các lựa chọn thay thế cho đóng băng
    • So sánh các công cụ cấp đông
    • các cửa sổ
    • hệ điều hành X
    • Linux

Ghi chú bổ sung¶

Phần này của hướng dẫn, chủ yếu là văn xuôi, bắt đầu với một số thông tin cơ bản về Python, sau đó tập trung vào các bước tiếp theo

  • Giới thiệu
    • về sự hướng dẫn này
  • Cộng đồng
    • BDFL
    • Quỹ phần mềm Python
    • PEP
    • Hội nghị Python
    • Nhóm người dùng Python
    • Cộng đồng trực tuyến
    • Bảng công việc Python
  • Học Python
    • Người bắt đầu
    • Trung gian
    • Nâng cao
    • Dành cho kỹ sư và nhà khoa học
    • chủ đề khác
    • Người giới thiệu
  • Tài liệu
    • Tài liệu chính thức
    • Đọc tài liệu
    • pydoc
  • Tin tức
    • Tuần của PyCoder
    • Trăn thật
    • Hành tinh Python
    • /r/trăn
    • Nói về Python Podcast
    • Python Byte Podcast
    • Python hàng tuần
    • Tin tức Python
    • Nhập Python hàng tuần
    • Bản tin Python tuyệt vời

Ghi chú

Các nốt được xác định trong tất cả các thang âm diatonic và chromatic đã bị loại trừ có chủ ý khỏi danh sách các nốt bổ sung này. Ngoài ra, lưu ý này