Do not use mutables as default values!
This blog article explains why (just an example, many other articles discuss this ad nauseam): http://pythonconquerstheuniverse.wordpress.com/2012/02/15/mutable-default-arguments/
This commit is contained in:
parent
fff3ed9b77
commit
8997c760a2
7
electrum
7
electrum
|
@ -103,16 +103,15 @@ def print_help_cb(self, opt, value, parser):
|
||||||
print_help(parser)
|
print_help(parser)
|
||||||
|
|
||||||
|
|
||||||
def run_command(cmd, password=None, args=[]):
|
def run_command(cmd, password=None, args=None):
|
||||||
import socket
|
if args is None:
|
||||||
|
args = [] # Do not use mutables as default values!
|
||||||
if cmd.requires_network and not options.offline:
|
if cmd.requires_network and not options.offline:
|
||||||
network = NetworkProxy(config)
|
network = NetworkProxy(config)
|
||||||
if not network.start(start_daemon= (True if cmd.name!='daemon' else False)):
|
if not network.start(start_daemon= (True if cmd.name!='daemon' else False)):
|
||||||
print "Daemon not running"
|
print "Daemon not running"
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if wallet:
|
if wallet:
|
||||||
wallet.start_threads(network)
|
wallet.start_threads(network)
|
||||||
wallet.update()
|
wallet.update()
|
||||||
|
|
|
@ -241,7 +241,9 @@ class Blockchain(threading.Thread):
|
||||||
return h
|
return h
|
||||||
|
|
||||||
|
|
||||||
def get_target(self, index, chain=[]):
|
def get_target(self, index, chain=None):
|
||||||
|
if chain is None:
|
||||||
|
chain = [] # Do not use mutables as default values!
|
||||||
|
|
||||||
max_target = 0x00000000FFFF0000000000000000000000000000000000000000000000000000
|
max_target = 0x00000000FFFF0000000000000000000000000000000000000000000000000000
|
||||||
if index == 0: return 0x1d00ffff, max_target
|
if index == 0: return 0x1d00ffff, max_target
|
||||||
|
|
|
@ -34,7 +34,9 @@ class NetworkProxy(threading.Thread):
|
||||||
# connects to daemon
|
# connects to daemon
|
||||||
# sends requests, runs callbacks
|
# sends requests, runs callbacks
|
||||||
|
|
||||||
def __init__(self, config = {}):
|
def __init__(self, config=None):
|
||||||
|
if config is None:
|
||||||
|
config = {} # Do not use mutables as default arguments!
|
||||||
threading.Thread.__init__(self)
|
threading.Thread.__init__(self)
|
||||||
self.daemon = True
|
self.daemon = True
|
||||||
self.config = SimpleConfig(config) if type(config) == type({}) else config
|
self.config = SimpleConfig(config) if type(config) == type({}) else config
|
||||||
|
|
|
@ -72,7 +72,9 @@ from simple_config import SimpleConfig
|
||||||
|
|
||||||
class Network(threading.Thread):
|
class Network(threading.Thread):
|
||||||
|
|
||||||
def __init__(self, config = {}):
|
def __init__(self, config=None):
|
||||||
|
if config is None:
|
||||||
|
config = {} # Do not use mutables as default values!
|
||||||
threading.Thread.__init__(self)
|
threading.Thread.__init__(self)
|
||||||
self.daemon = True
|
self.daemon = True
|
||||||
self.config = SimpleConfig(config) if type(config) == type({}) else config
|
self.config = SimpleConfig(config) if type(config) == type({}) else config
|
||||||
|
|
Loading…
Reference in New Issue