1. 程式人生 > >python基礎---protobuf的使用(還未完成)

python基礎---protobuf的使用(還未完成)

python基礎–protobuf的使用(一)
在上一篇部落格中,我們瞭解瞭如何安裝protobuf,以及寫了2個例子,來了解如何利用protobuf規則進行資料的序列化和範序列化

這篇部落格我們就繼續寫幾個例子,來了解下protobuf規則,然後在結合前端進行簡單互動

repeated規則

message Foo {
  repeated int32 nums = 1;
}

Repeated Message Fields
重複訊息類似於重複標量欄位,但相應的Python物件不具有AppEnter()函式。相反,它有一個Ad()函式,它建立一個新的訊息物件,將其附加到列表中,並返回給呼叫者填寫。它還有一個擴充套件()函式,它附加了一個完整的訊息列表,但是複製了列表中的每個訊息。這樣做使得訊息總是由父訊息所擁有,以避免迴圈引用和當可變資料結構擁有多個所有者時可能發生的其他混淆。

message Foo {
  repeated Bar bars = 1;
}
message Bar {
 int32 i = 1;
 int32 j = 2;
}

我們來看一個完整的例子
python_proto.proto

syntax = "proto3";
package proto_;

message Foo {
  //普通屬性
  string foo_name = 1;
  //巢狀message
  message Bar {
     string bar = 1;
  }

  //列表
  repeated int32 nums = 2;

  //列表1
  repeated BarMsg bars = 3
; } //列表1 message BarMsg { int32 i = 1; int32 j = 2; }

然後通過protoc ./python_proto.proto --python_out=./
編譯
python_proto.py


from proto_ import python_proto_pb2

#第一種方式新增BarMsg : Repeated Message
foo = python_proto_pb2.Foo(
    bars = [
        python_proto_pb2.BarMsg(i=7777111,j=92323232)
    ]
)
#普通屬性
foo.foo_name = "safly" #列表nums :Repeated Fields foo.nums.append(15) foo.nums.extend([32, 47]) foo.nums[0] = 123 foo.nums.insert(0,34343) bar = python_proto_pb2.Foo.Bar bar.bar_name = "bar_anme" #列表1Repeated Message Fields bar_msg = foo.bars.add() bar_msg.i = 123 #也可以按著如下的方式新增 foo.bars.add(i=999999,j=42342444) #列表2另外的方式 bar_msg_extend = python_proto_pb2.BarMsg() bar_msg_extend.i = 234 bar_msg_extend.j = 456 foo.bars.extend([bar_msg_extend]) serializeToString = foo.SerializeToString() foo.ParseFromString(serializeToString) print(foo.foo_name) print(foo.Bar.bar_name) for i in foo.nums: print(i) for i in foo.bars: print(i.i) #修改 foo.bars[1].i = 97979 for i in foo.bars: print(i.i)

輸出如下:

/Users/zhiliao/miniconda3/bin/python /Users/zhiliao/zhiliao/untitled1/proto_/python_proto.py
safly
bar_anme
34343
123
32
47
7777111
123
999999
234
7777111
97979
999999
234

Process finished with exit code 0

相關推薦

python基礎---protobuf的使用(完成)

python基礎–protobuf的使用(一) 在上一篇部落格中,我們瞭解瞭如何安裝protobuf,以及寫了2個例子,來了解如何利用protobuf規則進行資料的序列化和範序列化 這篇部落格我們就繼續寫幾個例子,來了解下protobuf規則,然後在結

搜尋:線性搜尋、二分搜尋、雜湊搜尋(雜湊完成

題目: 請編寫一個程式,輸入包含n個整數的數列A以及包含q個不重複整數數列T,請輸出A和T的交集元素的個數 一、線性搜尋 #include "pch.h" #include <stdio.h> int search(int A[], int n, int key) { i

Algorithm 算法基礎知識(完成

-c ack complex pan back 算法基礎 知識 記錄 上下 基礎概念不講,記錄課上關鍵部分 時間復雜度(Time Complexity) 算法所需要花的時間   比較時間復雜度(主要看問題的規模)   時間頻度(算法執行次數)T(n)和T(n1),如果兩個時

python基礎--protobuf的使用(一)

protobuf2/3語法介紹 Protobuf(Google Protocol Buffers)是google開發的的一套用於資料儲存,網路通訊時用於協議編解碼的工具庫.它和XML和Json資料差不多,把資料已某種形式儲存起來.Protobuf相對

原來python開發後端伺服器可以這麼簡單(完成

原來python開發後端伺服器還可以這麼簡單(未完待續) ​ 作為一個android開發者,工作和生活中想寫一個伺服器作為測試,可是都很麻煩。這兩天跟著書寫了python+Django的管理系統,另外提供web介面可以給前端使用。本次專案使用pycha

Python基礎day-11[內置函數(完),遞歸,匿名函數]

oat 讀寫 磁盤 自動 信息 map() instance 冒號 匿名 內置函數: abs() : 返回數字的絕對值。參數可以是整數或浮點數,如果參數是復數,則返回復數的模。 print(abs(0.2)) print(abs(1)) print(abs(-4)) pr

Python基礎day-13[模塊:re完]

import -s 數字 沒有 ret int bcs 意義 sdl re:   本質上就是一種小型語言。   操作的對象是字符串。 re.findall():返回的是一個列表。匹配出所有符合條件的元素。 re.search():返回的是一個對象。只匹配出找到的第一個元素,

Python基礎day-13[模塊:re,subprocess完]

str exe nbsp ati req 滿足 return tin for re(續):   re默認是貪婪模式。   貪婪模式:在滿足匹配時,匹配盡可能長的字符串。 import re s = ‘askldlaksdabccccccccasdabcccalsdacbc

Python基礎day-16[面向對象編程(完)]

__weak 特征 並且 事物 精準 san 必須 country rom 面向對象:   相對於面向過程編程來講,面向對象的擴展性比較強。但是同時帶來的問題是可控性差,面向對象編程不像面向過程那樣可以很精準的預測結果。面向對象程序一旦開始就由對象之間進行交互解決問題。  

python作業03-文件操作&函數(完成

turn remove col spa 地址 輸出 n的階乘 test dict 一、文件處理相關 1、編碼問題   (1)請說明python2 與python3中的默認編碼是什麽?答:Python2是ascii python3是utf-8 (2

Python基礎:內置異常(完待續)

async def cee outer keyboard 補充 調用 enter err 本文根據Python 3.6.5的官文Built-in Exceptions編寫,不會很詳細,僅對Python的內置異常進行簡單(重難點)介紹——很多異常都可以從名稱判斷出其意義,羅列

完成】Scala 基礎

-s 調用 end 使用 sum 延遲計算 ++ com 1.2 0. 說明 1. 基本概念   1.0 Scala是什麽   Scala 是一門多範式的編程語言,設計初衷是要集成面向對象編程和函數式編程的各種特性。   1.1 變量 &

南方下雪,你是否知道中國哪10個城市最冷?python給你答案!

  閱讀文字大概需要 7 分鐘。 01 抓取目標 這次我們的目標是爬取全國最冷的 10 座城市。 首先開啟目標網站 - 中國天氣網。 學習Python中有不明白推薦加入交流群            

萌新向Python資料分析及資料探勘 第一章 Python基礎 (上)排版

因word和部落格編輯器格式不能完全對接,正在重新排版,2019年1月1日發出第一章完整版     本文將參考《Python程式設計 從入門到實踐》的講述順序和例子,加上自己的理解,讓大家快速瞭解Python的基礎用法,並將拓展內容的連結新增在相關內容之後,方便大家閱讀。

萌新向Python數據分析及數據挖掘 第一章 Python基礎 (上)排版

以及 true 轉義 解析 混淆 sin 首字母 多少 文檔 因word和博客編輯器格式不能完全對接,正在重新排版,2019年1月1日發出第一章完整版 本文將參考《Python編程 從入門到實踐》的講述順序和例子,加上自己的理解,讓大家快速了解Python的基礎用法

leetcode python  100. 相同的樹 88. 合併兩個有序陣列(完成)

# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # se

Python下載與安裝And Anaconda安裝(完成)

  因為"參考中的(5)" : 我選擇Anaconda,認識Anaconda 【anaconda (一個開源的Python發行版本)】 Anaconda2安裝: 安裝: Windows 安裝 Anaconda3

<Python基礎學習三>例項1:“溫度轉換”問題分析(完待續)

摘要: 本篇部落格僅作為筆記,如有侵權,請聯絡,立即刪除(網上找部落格學習,然後手記筆記,因紙質筆記不便儲存,所以儲存到網路筆記)。   兩種刻畫溫度的不同體系:攝氏度(C)、華氏度(F)。   問題分析:直接將溫度值進行轉換。   --劃分邊界(IPO):     (1)輸入(I):帶華氏度或攝氏度

python基礎之socket編程

ron 模塊 執行 優化 控制 端口號 文件 斷開連接 page 一 客戶端/服務器架構 即C/S架構,包括1.硬件C/S架構(打印機)2.軟件C/S架構(web服務)最常用的軟件服務器是 Web 服務器。一臺機器裏放一些網頁或 Web 應用程序,然後啟動 服務。這樣的服務

python基礎:循環語句和判斷語句

python 語句 循環 判斷 小生博客:http://xsboke.blog.51cto.com 小生 Q Q:1770058260 -------謝謝您的參考,如有疑問,歡迎交流一、 python語句塊和縮進縮進是Py