Python 2.7 如何消除python init函数中的以下代码重复
我是编程新手。我在一个类中创建了以下函数。我注意到我在重复我的代码。我正在寻找消除这种重复的最佳解决方案 我在班上有以下功能:Python 2.7 如何消除python init函数中的以下代码重复,python-2.7,Python 2.7,我是编程新手。我在一个类中创建了以下函数。我注意到我在重复我的代码。我正在寻找消除这种重复的最佳解决方案 我在班上有以下功能: def init(自): 如果不存在os.path.exists(self.src_标志): 如果os.path.exists(self.src): removeFolder(self.src) 打印“文件{0}不存在”。格式(self.src_标志) 打开(self.src_标志'a')。关闭() 如果操作系统路径不存在(self.dst_标志): 如果os.path
def init(自):
如果不存在os.path.exists(self.src_标志):
如果os.path.exists(self.src):
removeFolder(self.src)
打印“文件{0}不存在”。格式(self.src_标志)
打开(self.src_标志'a')。关闭()
如果操作系统路径不存在(self.dst_标志):
如果os.path.exists(self.dst):
removeFolder(self.dst)
打印“文件{0}不存在”。格式(self.dst_标志)
打开(self.dst_标志'a')。关闭()
然后我通过调用这个函数
Folder.init()
不确定这是否是最好的方法,但我正在考虑将函数更改为以下内容:
def init(自身、标志、路径):
如果操作系统路径不存在(标志):
如果os.path.存在(路径):
移除文件夹(路径)
打印“文件{0}不存在”。格式(标志)
打开(标记“a”)。关闭()
但是我必须运行函数两次,以便为src和dst执行它
Folder.init('C:\src\flag.txt','C:\src')
Folder.init('C:\dst\flag.txt','C:\dst')
有人能告诉我我的解决方案是否可行,或者有更好的方法吗?您可以使用数组作为参数,并在函数中循环这个[src,dst]数组。因此,您可以在方法中构建路径,只需交换路径中的src/dst部分 只有当src和dest始终一起初始化时,这才有意义。您可以去掉2个类似的方法调用或4个参数,以防在一个方法调用中使用füll路径
如果不是这样,我喜欢您的解决方案和两个调用。当您执行完全相同的代码块时,显然应该使用循环。唯一的问题是如何获得论据,你可以通过几种方式选择最适合你的论据:
Folder.init(['C:\src\flag.txt','C:\dst\flag.txt',['C:\src','C:\dst'])
标志
s和路径
s的列表:
def init(self, pairs):
for flag, path in pairs:
# your block with flag and path
你可以这样称呼它:
Folder.init([('C:\src\flag.txt','C:\src'),('C:\dst\flag.txt','C:\dst')))
def init(self, *args):
for i in range(0, len(args)-1, 2):
flag = args[i]
path = args[i+1]
# your block with flag and path
或者,再次使用zip
:
for flag, path in zip(args[::2], args[1::2]):
# your block with flag and path
您可以这样称呼它:Folder.init('C:\src\flag.txt','C:\src','C:\dst\flag.txt','C:\dst')
path
是文件flag
的目录,您可以使用该模块,只需通过以下函数传递标志并获取path
:
def init(self, *flags):
for flag in flags:
path = os.path.dirname(flag)
# your block with flag and path
您可以这样称呼它:Folder.init('C:\src\flag.txt','C:\dst\flag.txt')
def init(self, *flags):
for flag in flags:
path = os.path.dirname(flag)
# your block with flag and path