Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在模块内设计函数的python方法_Python - Fatal编程技术网

在模块内设计函数的python方法

在模块内设计函数的python方法,python,Python,在设计模块时,更好的做法是让多个函数执行类似的操作,还是让一个函数根据一个参数执行不同的行为 def到_hex(val): pad=位//4 返回“{:X}”.format(val).zfill(pad) def至_箱(val): pad=位 返回“{:b}”.format(val).zfill(pad) ... 或: def to_字符串(val,form='b'): 如果form='X': pad=位//4 elif form==“o”: ... 返回{:{form}}.format(va

在设计模块时,更好的做法是让多个函数执行类似的操作,还是让一个函数根据一个参数执行不同的行为

def到_hex(val):
pad=位//4
返回“{:X}”.format(val).zfill(pad)
def至_箱(val):
pad=位
返回“{:b}”.format(val).zfill(pad)
...
或:

def to_字符串(val,form='b'):
如果form='X':
pad=位//4
elif form==“o”:
...
返回{:{form}}.format(val,form=form).zfill(pad)

这可能是基于观点,但什么是pythonic方法?

两者都可以。然而,在第二种情况下,如果有太多的控制流嵌入到过程代码中,这可能会混淆您对读者的意图。使用第一种方法避免过多的
if-else
逻辑。但是如果您的方法非常相似,那么应该将它们封装在一个类中。这种方法将帮助您避免不必要的重复。例如:

class-HexBin:
定义初始化(self,val,bits):
self.val=val
self.bits=位
def至_十六进制(自身):
pad=self.bits//4
返回“{:X}”.format(self.val).zfill(pad)
def至_箱(自身):
pad=自位
返回“{:b}”.format(self.val).zfill(pad)
您可以这样使用它:

obj=HexBin(10,10) >>打印(对象到十六进制) >>打印(对象到_bin())
这两个版本都是“pythonic”,所以这取决于风格和您的喜好,如果您使用第一个选项,那么在类结构中使用第二个选项可能会更好,而第二个选项可以是独立的,如果这个程序变得庞大,您可以访问多个属性,希望这有帮助:)这是全部代码吗?您在这里接受用户输入吗?
0A
0000001010