簡體   English   中英

如何傳遞多個參數在python中起作用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM