無論是類的
創(chuàng)新互聯網站建設公司一直秉承“誠信做人,踏實做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務為基礎,以質量求生存,以技術求發(fā)展,成交一個客戶多一個朋友!專注中小微企業(yè)官網定制,網站建設、網站設計,塑造企業(yè)網絡形象打造互聯網企業(yè)效應。
構造函數
還是類的方法函數,都與普通函數一樣可以使用列表傳入多個
實參
。
class
MyClass:
....def
__init
__(self:a,b,c):
........pass
對于MyClass,我們一般使用下列方式
實例化
:
x=MyClass(1,2,3)
如果我們實例化使用的參數在列表l中,可以這樣做:
l=[1,2,3]
x=MyClass(*l)
可以在perfom里面把傳遞進來的參數member 循環(huán)到一個列表里面,然后再傳遞給another_perform
def perform (self, *member):
parmas={}
for para in memeber:
params.add(para)
another_perform("commad", list= parmas )
Python中的 list 或者 dict 都可以轉成JSON字符串來發(fā)送,接收后再轉回來。
首先
import?json
然后,把 list 或 dict 轉成 JSON
json_string?=?json.dumps(list_or_dict)
如果你用的是Python3,這里的 json_string 會是 str 類型(即Python2的unicode類型),可能需要編碼一下:
if type(json_string) == six.text_type:
json_string = json_string.encode('UTF-8')
用socket發(fā)送過去,例如
s.sendto(json_string,?address)
對方用socket接收,例如
json_string,?addr?=?s.recvfrom(2048)
把JSON轉成 list 或 dict
list_or_dict?=?json.loads(json_string)
下面是個完整的例子:
client.py
#!/usr/bin/env?python
#?-*-?coding:?UTF-8?-*-
import?socket
import?json
import?six
address?=?('127.0.0.1',?31500)
s?=?socket.socket(socket.AF_INET,?socket.SOCK_DGRAM)
mylist?=?[1,?2,?3,?4,?5,?6,?7,?8,?9,?10]
json_string?=?json.dumps(mylist)
if?type(json_string)?==?six.text_type:
json_string?=?json_string.encode('UTF-8')
s.sendto(json_string,?address)
s.close()
server.py
#!/usr/bin/env?python
#?-*-?coding:?UTF-8?-*-
import?socket
import?json
address?=?('127.0.0.1',?31500)
s?=?socket.socket(socket.AF_INET,?socket.SOCK_DGRAM)
s.bind(address)
json_string,?addr?=?s.recvfrom(2048)
mylist?=?json.loads(json_string)
print(mylist)
s.close()
請先運行server.py,再運行client.py
#函數傳遞參數
def func_args( ?*vartuple ):
args = []
#任何傳入的參數都加入列表
for var in vartuple:
args.append(var)
return args
a = func_args("123","abc","ABC","000")
print(a)
代碼及運行結果如圖:
從你的問題來看是一個新手,建議直接放棄2.x版本學習3.x版本。對現在的你來說用到的2與3版本之間的差異可能也就是print(如圖中所示與你代碼的差異),影響很小。
代碼解釋:
你的代碼中用A,B = inputlist,inputlist進行賦值,實際A與B都是指向了同一個內存對象,所以對其中任意一個做出修改,即修改了內存中的這個對象,造成A與B同時修改。解決方法,引入copy模塊中的deepcopy()函數,保證A與B指向長的一樣但在內存中是兩個對象,這樣對其中一個修改時完全不影響到另一個。
l?=?range(5)
def?func(m):
...?????m[3]?=?999
...?????
print?l
[0,?1,?2,?3,?4]
func(l)
print?l
[0,?1,?2,?999,?4]
直接修改列表就可以了