[英]How to pass multiple params to function in python?
我在python中實現8bit加法器。 這是加法器函數定義:
def add8(a0,a1,a2,a3,a4,a5,a6,a7,b0,b1,b2,b3,b4,b5,b6,b7,c0):
所有函數參數均為布爾值。 我實現了將int轉換為二進制的函數:
def intTObin8(num):
bits = [False]*8
i = 7
while num >= 1:
if num % 2 == 1:
bits[i] = True
else:
bits[i] = False
i = i - 1
num /= 2
print bits
return [bits[x] for x in range(0,8)]
我希望此函數返回8位。 並按如下方式使用這兩個功能:
add8(intTObin8(1),intTObin8(1),0)
所以問題是:如何使用一個函數傳遞8個參數?
一種方法是:
add8(*(intTObin8(1) + intTObin8(1) + [0]))
它連接列表,然后將其作為參數傳遞給add8
。
如果您多次這樣做,則可以將其放在另一個函數中:
def add8_from_bin8(a,b,c0):
add8(*(a + b + [c0]))
add8_from_bin8(intTObin8(1), intTObin8(1), 0)
有兩件事:
您在add8中沒有采用16個參數。 如果要執行兩個列表,每個列表包含8個元素。
另外,在intToBin中,您應該使用0和1而不是False和True; 您還應該檢查數字是否可以用8位表示(如果我用1000調用該函數,會發生什么情況?),並且應該在PEP8之后命名函數: http ://www.python.org/dev/peps / PEP-0008 /
ps您知道您可以簡單地將int(num, 2)
轉換為基數2嗎?
話雖如此,有時您可以使用元組拆包來簡化代碼:
def f(a, b, c):
bla bla
l = [arg1, arg2, arg3]
f(l[0], l[1], l[2]) #well it's awful
f(*l) #nice
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.