簡體   English   中英

Python中的包裝函數

[英]Wrapper Function in Python

#***This code uses wrapper function to print the phone number in a
standard format with country code (if not supplied in the input)***

def ori_func(a):
    mm=[]
    def wraap(*args):
        for k in args:
            for i in k:
                #print(i)
                if len(str(i))==10:
                    mm.append("+91"+str(i))
                elif str(i)[0]=="0" and len(str(i))==11:
                    mm.append("+91"+str(i)[1:])
            #elif len(str(i))==12 and i[0]=="+":
            #    mm.append(i)
                elif len(str(i)) == 12:
                    mm.append("+"+str(i))
                #print (mm)
        return a(mm)
    return wraap

@ori_func
def srt_phone(mm):
    #sorted(int(mm))
    for j in sorted(mm):
        cc=str(j)[:3]
        mmn1=str(j)[3:8]
        mmn2=str(j)[8:]
        print (cc+" "+mmn1+" "+mmn2)

m=[1234567891, 912345678923, +919876543219,"07418529637"]
srt_phone(m)

據我所知,此代碼工作正常。 但是我需要您瀏覽我的代碼,並讓我知道我對Wrapper函數的了解水平是正確的

  1. 當我將列表傳遞給包裝函數時,是否需要像我一樣在包裝函數中真正使用2個“ For”循環? 還有其他辦法嗎?
  2. 當我們要求將電話號碼作為INT格式輸入時,如何處理以0開頭的輸入?

謝謝

  1. 是。 還有其他方法,但是這種方法很干凈。
  2. 您不能,我建議不要將電話號碼視為數字,因為它們不是實數。 實數不能以+或0開頭。

您的代碼對我來說看起來不錯; 我做了一些不同的事情,但這只是個人喜好。 我確實建議您考慮在內部函數上使用@functools.wraps(a)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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