Brython-specific built-in modules
Working with Brython
Brython for Firefox OS
Brython implements Python version 3, based on the
Python Language Reference
The implementation takes into account the browsers limitations, in particular
those related to the file system. Writing is impossible, and reading is
limited to the folders accessible with an Ajax request.
Keywords and built-in functions
Brython supports most of the keywords and functions of Python 3 :
- keywords :
and, as, assert, async, await, break, class, continue, def, del, elif, else,
except, False, finally, for, from, global, if, import, in, is, lambda,
None, nonlocal, not, or, pass, raise, return, True, try, while, with, yield
- built-in functions and classes :
abs, all, any, ascii, bin, bool, bytes,
callable, chr, classmethod, delattr, dict, dir, divmod,
enumerate, eval, exec, filter, float, frozenset, getattr,
globals, hasattr, hash, hex, id, input, int, isinstance,
iter, len, list, locals, map, max, memoryview, min,
next, object, open, ord, pow, print, property, range,
repr, reversed, round, set, setattr, slice, sorted, str, `
sum, super, tuple, type, vars, zip, __import__
an event to happen, before going to the next instruction. For this reason,
time.sleep() can't be used : functions in module browser.timer such as
set_interval() must be used instead ; the built-in
blocking methods in module
asyncio are in fact not blocking, that is to
say, the instructions that follow are executed immediately.
- the built-in function
open() takes as argument the url of the file to
open. Since it is read with an Ajax call, it must be in the same domain as
the script. The object returned by
open() has the usual reading and access
read, readlines, seek, tell, close. Only text mode is supported:
the Ajax call is blocking and in this mode the
can't be set
- by default,
print() will output to the web browser console and so are the
sys.stdout can be assigned to an object
write() method, and this allows for the redirection of output to go
to a window or text area, for example.
- to open a print dialog (to a printer), call
defined in module browser).
sys.stdin is not implemented at this time, however there is an
built-in function that will open a blocking input dialog (a prompt).
Brython doesn't manage reference counting like CPython. Therefore, method
__del__() is not called when a class instance is no more referenced.
numbers that are equal to integers (eg 1.0) are converted into integers
The built-in variable
__name__ is set to the value of the attribute
of the script. For instance:
<script type="text/python" id="myscript">
assert __name__ == 'myscript'
If 2 scripts have the same
id, an exception is raised.
For scripts that don't have an explicit
id set :
- if no script has its
id set to
__main__, the first "unnamed" script has
__name__ set to
"__main__". So, if there only one script in the page,
it will be able to run the usual test :
- for the other unnamed scripts,
__name__ is set to a random string starting