![]() |
Uncanny line of code in Torchat source file - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Uncanny line of code in Torchat source file (/thread-15123.html) |
Uncanny line of code in Torchat source file - pkm - Jan-05-2019 I have been sifting through Torchat's sourcecode, which is available on github: https://github.com/prof7bit/TorChat I don‘t understand one line of code within the config.py file, in the get(section, option) method, that is. def get(section, option): if not config.has_section(section): config.add_section(section) if not config.has_option(section, option): value = config_defaults[section, option] set(section, option, value) value = config.get(section, option) if type(value) == str: try: value = value.decode("UTF-8") value = value.rstrip(" \"'").lstrip(" \"'") except: print "*** config file torchat.ini is not UTF-8 ***" print "*** this will most likely break things ***" elif type(value) == int: value = str(value) elif type(value) == float: value = str(value) return value # this should now be a unicode stringvalue = config_defaults[section, option] assigns a valu to the value variable, and evidently, this value is taken from the config_defaults dictionary: config_defaults = { ("tor", "tor_server") : "127.0.0.1", ("tor", "tor_server_socks_port") : 9050, ("tor", "tor_server_control_port") : 9051, ("tor_portable", "tor_server") : "127.0.0.1", ("tor_portable", "tor_server_socks_port") : 11109, ("tor_portable", "tor_server_control_port") : 11119, ... ("profile", "text") : "", }It is not normally possible to get a value from a python dictionary like this: config_defaults[section, option], is it? I haven't been able to figure out what the line of code in question does or how it is supposed to work. Can anyone gve me a hint? RE: Uncanny line of code in Torchat source file - buran - Jan-05-2019 config_defaults is a dict that has tuples as keys.And in this line value = config_defaults[section, option] section, option part is implicit tuple, so it's a valid code, effectively the same as value = config_defaults[(section, option)] .from the docs: Quote:output tuples are always enclosed in parentheses, so that nested tuples are interpreted correctly; they may be input with or without surrounding parentheses, although often parentheses are necessary anyway (if the tuple is part of a larger expression). >>> foo = 'spam', 'eggs' >>> foo ('spam', 'eggs') >>> type(foo) <class 'tuple'> >>>also, another example: some_dict = {(1, 2):'one', (3, 4):'two'} print(some_dict[1, 2]) RE: Uncanny line of code in Torchat source file - pkm - Jan-05-2019 Now I understand. thank you! |