Do not mutate default arguments
authorPhilipp Hagemeister <phihag@phihag.de>
Fri, 29 Nov 2013 14:25:09 +0000 (15:25 +0100)
committerPhilipp Hagemeister <phihag@phihag.de>
Fri, 29 Nov 2013 14:25:11 +0000 (15:25 +0100)
In this case, it looks rather harmless (since the conditions for --restrict-filenames should not change while a process is running), but just to be sure.
This also simplifies the interface for callers, who can just pass in the idiomatic None for "I don't care, whatever is the default".

youtube_dl/YoutubeDL.py

index 711b5d79eb70aa9dbae685a6c7cf0400273055a1..b822930cbe358226c70b514287509d391adc116c 100644 (file)
@@ -146,7 +146,7 @@ class YoutubeDL(object):
     _num_downloads = None
     _screen_file = None
 
-    def __init__(self, params={}):
+    def __init__(self, params=None):
         """Create a FileDownloader object with the given options."""
         self._ies = []
         self._ies_instances = {}
@@ -155,7 +155,7 @@ class YoutubeDL(object):
         self._download_retcode = 0
         self._num_downloads = 0
         self._screen_file = [sys.stdout, sys.stderr][params.get('logtostderr', False)]
-        self.params = params
+        self.params = {} if params is None else params
 
         if (sys.version_info >= (3,) and sys.platform != 'win32' and
                 sys.getfilesystemencoding() in ['ascii', 'ANSI_X3.4-1968']