簡體   English   中英

Python,函數輸出不符合預期

[英]Python, function output not as expected

我編寫了一個在python中創建目錄的函數。 如果原始名稱已被使用,該函數會將擴展名(例如_1)添加到目錄名稱。 該功能可以正常工作並創建文件夾; 但是返回值有問題。 當我打印出來時,我什么也沒有。 這是我的代碼。 可能不是最干凈的:s。 這與在函數內部調用自身有關,但是我不確定如何修復它。

import os


##function to generate a dir with extension if it already exists
def createDir(directory,ext):
  thePath=directory+ext
  if not os.path.exists(thePath):
    os.makedirs(thePath)
    output=thePath + '/'
    print 'I return ' + output #I got "I return /media/usb0/incomplete_noNameYet_2/ (Because incomplete_noNameYet and incomplete_noNameYet_1 already existed)" This is fine!
    return output
  else:
    if ext =='':
      ext='_1'
    else:
      ext= '_' + str(int(ext[1:len(ext)])+1)
    createDir(directory,ext)

def main():
  print createDir('/media/usb0/incomplete_noNameYet','') #I got none.   

if __name__ == '__main__':
  main() 

您將忽略遞歸調用的返回值; 也在那里添加return

return createDir(directory,ext)

否則,將放棄createDir()的返回值,並且父函數調用將不帶任何明確的return調用而return ,默認為None

問題是在else分支上,您正在調用createDir而不返回該值。 最初對createDir的調用執行后兩個遞歸調用(包括它們的副作用),但隨后放棄返回值並返回None。

暫無
暫無

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

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