[英]How to compose a nested function g=fn(…(f3(f2(f1()))…) from a list of functions [f1, f2, f3,…fn]
[英]Calling function f from within f
我正在做一個小程序,將二進制數字轉換為十六進制。 為此,我首先將給定的數據分為4位塊,如您所見。
def binary_to_hex(n):
if len(n)%4 != 0:
n = "0"+n
return binary_to_hex(n)
return n
現在,該示例可以順利運行,返回四個位的塊。
但是,當我省略if
子句中的第一個return
語句時,只會添加一個0
。 如果n
不能被4整除,那就是。
我猜想它與可變范圍有關。 在這種情況下, 類似的問題似乎並不適用。 您能否解釋一下發生的情況以及在不使用第一個return語句的情況下將如何進行。
另外,這種函數會在滿足給定要求之前自行調用的名稱是什么?
這是我們正在討論的代碼:
def binary_to_hex(n):
if len(n)%4 != 0:
n = "0"+n
binary_to_hex(n) # no `return'
return n
在這里, binary_to_hex(n)
調用該函數並忽略result 。 由於該調用沒有可觀察到的副作用(即,它沒有執行呼叫者可以觀察到的任何操作),因此實際上是無操作的,並且代碼等效於:
def binary_to_hex(n):
if len(n)%4 != 0:
n = "0"+n
return n
這說明了您所看到的行為。
[H]現在不用第一個return語句就可以解決[[]
嘗試使用循環或字符串重復運算符( *
)。
正如評論中已經提到的那樣,調用自身的函數稱為遞歸。
如果要不遞歸地實現此功能,請將if
替換為while
:
def add_leading_zeros_to_make_length_of_string_a_multiple_of_four(n):
while len(n)%4 != 0:
n = "0"+n
return n
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.