日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

python的三个函数(eval、exec、complie)和python版RMI

發布時間:2023/12/15 综合教程 26 生活家
生活随笔 收集整理的這篇文章主要介紹了 python的三个函数(eval、exec、complie)和python版RMI 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、python的三個函數:

1、eval函數:

之前已經講過了這個函數,該函數也類似于php的eval,例如下邊這個例子

1 eval("os.system('id')")

但是有個問題,在eval中沒辦法執行賦值操作。

2、exec函數:

可以執行賦值操作,其他方便也比較類似于eval函數

1 exec("os.system('id')")

給一個賦值操作的例子:

1 exec("a.__code__=b.__code__")

3、compile函數:

其實這個函數有點類似醫院掛號分診的功能:

舉兩個例子說明吧:

1 exec_code = compile("""for i in range(4):print i""","","exec")
2 exec(exec_code)
3 eval_code = compile("os.system('id')","","eval")
4 eval(eval_code)

二、python的RMI

1、注冊對象:

(1)服務端腳本

 1 #服務器端:
 2 import SimpleXMLRPCServer
 3 
 4 class MyObject:
 5     def sayHello(self):
 6         return "hello xmlprc"
 7 
 8 obj = MyObject()
 9 server = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost", 8088))
10 server.register_instance(obj)
11 
12 print "Listening on port 8088"
13 server.serve_forever()

(2)客戶端腳本

1 import xmlrpclib
2 
3 server = xmlrpclib.ServerProxy("http://localhost:8088")
4 
5 words = server.sayHello()
6 
7 print "result:" + words

(3)備注:我發現的問題——調用對象的沒有return的函數會導致崩潰打印堆棧,不知道為啥。

2、注冊函數:

(1)服務端腳本

1 from SimpleXMLRPCServer import SimpleXMLRPCServer   
2 def respon_string(str):
3     return "get string :%s"%str
4 
5 if __name__ == '__main__':
6     s = SimpleXMLRPCServer(('0.0.0.0', 8080))
7     s.register_function(respon_string,"get_string")
8     s.serve_forever()

(2)客戶端腳本:

1 from xmlrpclib import ServerProxy
2 if __name__ == '__main__':
3     s = ServerProxy("http://192.168.137.9:8080")
4     print s.get_string("hello") 

(3)備注:我發現的問題——調用對象的沒有return的函數會導致崩潰打印堆棧,不知道為啥。

總結

以上是生活随笔為你收集整理的python的三个函数(eval、exec、complie)和python版RMI的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。