繁体   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