diff --git a/python/builtins.py b/python/builtins.py index 4abb8187..19193a58 100644 --- a/python/builtins.py +++ b/python/builtins.py @@ -96,13 +96,20 @@ def sorted(iterable, reverse=False, key=None): return a ##### str ##### -def __f(self, *args): +def __f(self, *args, **kwargs): if '{}' in self: for i in range(len(args)): self = self.replace('{}', str(args[i]), 1) else: - for i in range(len(args)): - self = self.replace('{'+str(i)+'}', str(args[i])) + # Positional arguments will be followed by keyword arguments + # 1. Replace the positional arguments + for i,a in enumerate(args): + self = self.replace('{'+str(i)+'}', str(a)) + + # 2. Replace the keyword arguments + for k,v in kwargs.items(): + self = self.replace('{'+k+'}', str(v)) + return self str.format = __f