@ -389,7 +389,7 @@ to_exclusive = <range>.stop
< pre > < code class = "python language-python hljs" > < span class = "hljs-meta" > > > > < / span > type(< span class = "hljs-string" > 'a'< / span > ), < span class = "hljs-string" > 'a'< / span > .__class__, str
< pre > < code class = "python language-python hljs" > < span class = "hljs-meta" > > > > < / span > type(< span class = "hljs-string" > 'a'< / span > ), < span class = "hljs-string" > 'a'< / span > .__class__, str
(< < span class = "hljs-class" > < span class = "hljs-title" > class< / span > '< span class = "hljs-title" > str< / span > '> , < < span class = "hljs-title" > class< / span > '< span class = "hljs-title" > str< / span > '> , < < span class = "hljs-title" > class< / span > '< span class = "hljs-title" > str< / span > '> )
(< < span class = "hljs-class" > < span class = "hljs-title" > class< / span > '< span class = "hljs-title" > str< / span > '> , < < span class = "hljs-title" > class< / span > '< span class = "hljs-title" > str< / span > '> , < < span class = "hljs-title" > class< / span > '< span class = "hljs-title" > str< / span > '> )
< / span > < / code > < / pre >
< / span > < / code > < / pre >
< div > < h4 id = "sometypesdono thavebuiltinnamessotheymustbeimported" > Some types do no t have built-in names, so they must be imported:< / h4 > < pre > < code class = "python language-python hljs" > < span class = "hljs-keyword" > from< / span > types < span class = "hljs-keyword" > import< / span > FunctionType, MethodType, LambdaType, GeneratorType
< div > < h4 id = "sometypesdonthavebuiltinnamessotheymustbeimported" > Some types don' t have built-in names, so they must be imported:< / h4 > < pre > < code class = "python language-python hljs" > < span class = "hljs-keyword" > from< / span > types < span class = "hljs-keyword" > import< / span > FunctionType, MethodType, LambdaType, GeneratorType
< / code > < / pre > < / div >
< / code > < / pre > < / div >
< div > < h3 id = "abstractbaseclasses" > Abstract Base Classes< / h3 > < p > < strong > Each abstract base class specifies a set of virtual subclasses. These classes are then recognized by isinstance() and issubclass() as subclasses of the ABC, although they are really not.< / strong > < / p > < pre > < code class = "python language-python hljs" > < span class = "hljs-meta" > > > > < / span > < span class = "hljs-keyword" > from< / span > collections.abc < span class = "hljs-keyword" > import< / span > Sequence, Collection, Iterable
< div > < h3 id = "abstractbaseclasses" > Abstract Base Classes< / h3 > < p > < strong > Each abstract base class specifies a set of virtual subclasses. These classes are then recognized by isinstance() and issubclass() as subclasses of the ABC, although they are really not.< / strong > < / p > < pre > < code class = "python language-python hljs" > < span class = "hljs-meta" > > > > < / span > < span class = "hljs-keyword" > from< / span > collections.abc < span class = "hljs-keyword" > import< / span > Sequence, Collection, Iterable
@ -559,7 +559,7 @@ to_exclusive = <range>.stop
| 567.89 | '5.7e+02' | '567.89' | '5.68e+02' | '56789.00%' |
| 567.89 | '5.7e+02' | '567.89' | '5.68e+02' | '56789.00%' |
+---------------+-----------------+-----------------+-----------------+-----------------+
+---------------+-----------------+-----------------+-----------------+-----------------+
< / code > < / pre >
< / code > < / pre >
< div > < h3 id = "ints" > Ints< / h3 > < pre > < code class = "python language-python hljs" > {< span class = "hljs-number" > 90< / span > :c} < span class = "hljs-comment" > # 'Z'< / span >
< div > < h3 id = "integer s" > Integer s< / h3 > < pre > < code class = "python language-python hljs" > {< span class = "hljs-number" > 90< / span > :c} < span class = "hljs-comment" > # 'Z'< / span >
{< span class = "hljs-number" > 90< / span > :b} < span class = "hljs-comment" > # '1011010'< / span >
{< span class = "hljs-number" > 90< / span > :b} < span class = "hljs-comment" > # '1011010'< / span >
{< span class = "hljs-number" > 90< / span > :X} < span class = "hljs-comment" > # '5A'< / span >
{< span class = "hljs-number" > 90< / span > :X} < span class = "hljs-comment" > # '5A'< / span >
< / code > < / pre > < / div >
< / code > < / pre > < / div >
@ -846,7 +846,7 @@ creature = Creature(Point(<span class="hljs-number">0</span>, <span class="hljs
< li > < strong > Partial is also useful in cases when function needs to be passed as an argument, because it enables us to set its arguments beforehand.< / strong > < / li >
< li > < strong > Partial is also useful in cases when function needs to be passed as an argument, because it enables us to set its arguments beforehand.< / strong > < / li >
< li > < strong > A few examples being: < code class = "python hljs" > < span class = "hljs-string" > 'defaultdict(< function> )'< / span > < / code > , < code class = "python hljs" > < span class = "hljs-string" > 'iter(< function> , to_exclusive)'< / span > < / code > and dataclass's < code class = "python hljs" > < span class = "hljs-string" > 'field(default_factory=< function> )'< / span > < / code > .< / strong > < / li >
< li > < strong > A few examples being: < code class = "python hljs" > < span class = "hljs-string" > 'defaultdict(< function> )'< / span > < / code > , < code class = "python hljs" > < span class = "hljs-string" > 'iter(< function> , to_exclusive)'< / span > < / code > and dataclass's < code class = "python hljs" > < span class = "hljs-string" > 'field(default_factory=< function> )'< / span > < / code > .< / strong > < / li >
< / ul >
< / ul >
< div > < h3 id = "nonlocal" > Nonl ocal< / h3 > < p > < strong > If variable is being assigned to anywhere in the scope, it is regarded as a local variable, unless it is declared as a 'global' or a 'nonlocal'.< / strong > < / p > < pre > < code class = "python language-python hljs" > < span class = "hljs-function" > < span class = "hljs-keyword" > def< / span > < span class = "hljs-title" > get_counter< / span > < span class = "hljs-params" > ()< / span > :< / span >
< div > < h3 id = "nonlocal" > Non-L ocal< / h3 > < p > < strong > If variable is being assigned to anywhere in the scope, it is regarded as a local variable, unless it is declared as a 'global' or a 'nonlocal'.< / strong > < / p > < pre > < code class = "python language-python hljs" > < span class = "hljs-function" > < span class = "hljs-keyword" > def< / span > < span class = "hljs-title" > get_counter< / span > < span class = "hljs-params" > ()< / span > :< / span >
i = < span class = "hljs-number" > 0< / span >
i = < span class = "hljs-number" > 0< / span >
< span class = "hljs-function" > < span class = "hljs-keyword" > def< / span > < span class = "hljs-title" > out< / span > < span class = "hljs-params" > ()< / span > :< / span >
< span class = "hljs-function" > < span class = "hljs-keyword" > def< / span > < span class = "hljs-title" > out< / span > < span class = "hljs-params" > ()< / span > :< / span >
< span class = "hljs-keyword" > nonlocal< / span > i
< span class = "hljs-keyword" > nonlocal< / span > i
@ -1394,7 +1394,7 @@ script_name = sys.argv[<span class="hljs-number">0</span>]
arguments = sys.argv[< span class = "hljs-number" > 1< / span > :]
arguments = sys.argv[< span class = "hljs-number" > 1< / span > :]
< / code > < / pre > < / div >
< / code > < / pre > < / div >
< div > < h3 id = "argparse" > Argparse < / h3 > < pre > < code class = "python language-python hljs" > < span class = "hljs-keyword" > from< / span > argparse < span class = "hljs-keyword" > import< / span > ArgumentParser, FileType
< div > < h3 id = "argument parser " > Argument Parser < / h3 > < pre > < code class = "python language-python hljs" > < span class = "hljs-keyword" > from< / span > argparse < span class = "hljs-keyword" > import< / span > ArgumentParser, FileType
p = ArgumentParser(description=< str> )
p = ArgumentParser(description=< str> )
p.add_argument(< span class = "hljs-string" > '-< short_name> '< / span > , < span class = "hljs-string" > '--< name> '< / span > , action=< span class = "hljs-string" > 'store_true'< / span > ) < span class = "hljs-comment" > # Flag< / span >
p.add_argument(< span class = "hljs-string" > '-< short_name> '< / span > , < span class = "hljs-string" > '--< name> '< / span > , action=< span class = "hljs-string" > 'store_true'< / span > ) < span class = "hljs-comment" > # Flag< / span >
p.add_argument(< span class = "hljs-string" > '-< short_name> '< / span > , < span class = "hljs-string" > '--< name> '< / span > , type=< type> ) < span class = "hljs-comment" > # Option< / span >
p.add_argument(< span class = "hljs-string" > '-< short_name> '< / span > , < span class = "hljs-string" > '--< name> '< / span > , type=< type> ) < span class = "hljs-comment" > # Option< / span >
@ -1876,13 +1876,12 @@ last_el = op.methodcaller(<span class="hljs-string">'pop'</span>)(<l
< div > < h3 id = "attributes-1" > Attributes< / h3 > < pre > < code class = "python language-python hljs" > < list> = dir(< object> ) < span class = "hljs-comment" > # Names of object's attributes (incl. methods).< / span >
< div > < h3 id = "attributes-1" > Attributes< / h3 > < pre > < code class = "python language-python hljs" > < list> = dir(< object> ) < span class = "hljs-comment" > # Names of object's attributes (incl. methods).< / span >
< dict> = vars(< object> ) < span class = "hljs-comment" > # Dict of object's fields. Also < obj> .__dict__.< / span >
< dict> = vars(< object> ) < span class = "hljs-comment" > # Dict of object's fields. Also < obj> .__dict__.< / span >
< / code > < / pre > < / div >
< pre > < code class = "python language-python hljs" > < bool> = hasattr(< object> , < span class = "hljs-string" > '< attr_name> '< / span > )
< bool> = hasattr(< object> , < span class = "hljs-string" > '< attr_name> '< / span > )
value = getattr(< object> , < span class = "hljs-string" > '< attr_name> '< / span > )
value = getattr(< object> , < span class = "hljs-string" > '< attr_name> '< / span > )
setattr(< object> , < span class = "hljs-string" > '< attr_name> '< / span > , value)
setattr(< object> , < span class = "hljs-string" > '< attr_name> '< / span > , value)
delattr(< object> , < span class = "hljs-string" > '< attr_name> '< / span > )
delattr(< object> , < span class = "hljs-string" > '< attr_name> '< / span > )
< / code > < / pre >
< / code > < / pre > < / div >
< div > < h3 id = "parameters-1" > Parameters< / h3 > < pre > < code class = "python language-python hljs" > < span class = "hljs-keyword" > from< / span > inspect < span class = "hljs-keyword" > import< / span > signature
< div > < h3 id = "parameters-1" > Parameters< / h3 > < pre > < code class = "python language-python hljs" > < span class = "hljs-keyword" > from< / span > inspect < span class = "hljs-keyword" > import< / span > signature
< sig> = signature(< function> )
< sig> = signature(< function> )
no_of_params = len(< sig> .parameters)
no_of_params = len(< sig> .parameters)
@ -1980,10 +1979,10 @@ D = enum.Enum(<span class="hljs-string">'D'</span>, <span class="hljs-string">'n
< span class = "hljs-keyword" > async< / span > < span class = "hljs-function" > < span class = "hljs-keyword" > def< / span > < span class = "hljs-title" > main_coroutine< / span > < span class = "hljs-params" > (screen)< / span > :< / span >
< span class = "hljs-keyword" > async< / span > < span class = "hljs-function" > < span class = "hljs-keyword" > def< / span > < span class = "hljs-title" > main_coroutine< / span > < span class = "hljs-params" > (screen)< / span > :< / span >
state = {< span class = "hljs-string" > '*'< / span > : P(< span class = "hljs-number" > 0< / span > , < span class = "hljs-number" > 0< / span > ), **{id_: P(< span class = "hljs-number" > 30< / span > , < span class = "hljs-number" > 10< / span > ) < span class = "hljs-keyword" > for< / span > id_ < span class = "hljs-keyword" > in< / span > range(< span class = "hljs-number" > 10< / span > )}}
state = {< span class = "hljs-string" > '*'< / span > : P(< span class = "hljs-number" > 0< / span > , < span class = "hljs-number" > 0< / span > ), **{id_: P(< span class = "hljs-number" > 30< / span > , < span class = "hljs-number" > 10< / span > ) < span class = "hljs-keyword" > for< / span > id_ < span class = "hljs-keyword" > in< / span > range(< span class = "hljs-number" > 10< / span > )}}
moves = asyncio.Queue()
moves = asyncio.Queue()
coros = (*( random_controller(id_, moves) < span class = "hljs-keyword" > for< / span > id_ < span class = "hljs-keyword" > in< / span > range(< span class = "hljs-number" > 10< / span > )) ,
coros = [*[ random_controller(id_, moves) < span class = "hljs-keyword" > for< / span > id_ < span class = "hljs-keyword" > in< / span > range(< span class = "hljs-number" > 10< / span > )] ,
human_controller(screen, moves),
human_controller(screen, moves),
model(moves, state, *screen.getmaxyx()),
model(moves, state, *screen.getmaxyx()),
view(state, screen))
view(state, screen)]
< span class = "hljs-keyword" > await< / span > asyncio.wait(coros, return_when=asyncio.FIRST_COMPLETED)
< span class = "hljs-keyword" > await< / span > asyncio.wait(coros, return_when=asyncio.FIRST_COMPLETED)
< span class = "hljs-keyword" > async< / span > < span class = "hljs-function" > < span class = "hljs-keyword" > def< / span > < span class = "hljs-title" > random_controller< / span > < span class = "hljs-params" > (id_, moves)< / span > :< / span >
< span class = "hljs-keyword" > async< / span > < span class = "hljs-function" > < span class = "hljs-keyword" > def< / span > < span class = "hljs-title" > random_controller< / span > < span class = "hljs-params" > (id_, moves)< / span > :< / span >
@ -2493,7 +2492,7 @@ rect = pg.Rect(<span class="hljs-number">240</span>, <span class="hljs-number">2
< / code > < / pre > < / div > < / div >
< / code > < / pre > < / div > < / div >
< div > < h3 id = "rect" > Rect< / h3 > < p > < strong > Object for storing rectangular coordinates.< / strong > < / p > < pre > < code class = "python language-python hljs" > < Rect> = pg.Rect(x, y, width, height)
< div > < h3 id = "rectangle " > Rectangle < / h3 > < p > < strong > Object for storing rectangular coordinates.< / strong > < / p > < pre > < code class = "python language-python hljs" > < Rect> = pg.Rect(x, y, width, height)
< int> = < Rect> .x/y/centerx/centery/…
< int> = < Rect> .x/y/centerx/centery/…
< tup.> = < Rect> .topleft/center/…
< tup.> = < Rect> .topleft/center/…
< Rect> = < Rect> .move((x, y))
< Rect> = < Rect> .move((x, y))
@ -2535,7 +2534,7 @@ pg.draw.ellipse(<Surf>, color, <Rect>)
< Sound> .play() < span class = "hljs-comment" > # Starts playing the sound.< / span >
< Sound> .play() < span class = "hljs-comment" > # Starts playing the sound.< / span >
< / code > < / pre > < / div >
< / code > < / pre > < / div >
< div > < h3 id = "supermariobrosexample" > Super Mario Bros. Example< / h3 > < pre > < code class = "python language-python hljs" > < span class = "hljs-keyword" > import< / span > collections, dataclasses, enum, io, math , pygame, urllib.request, itertools < span class = "hljs-keyword" > as< / span > it
< div > < h3 id = "basicmariobrothersexample" > Basic Mario Brothers Example< / h3 > < pre > < code class = "python language-python hljs" > < span class = "hljs-keyword" > import< / span > collections, dataclasses, enum, io, pygame, urllib.request, itertools < span class = "hljs-keyword" > as< / span > it
< span class = "hljs-keyword" > from< / span > random < span class = "hljs-keyword" > import< / span > randint
< span class = "hljs-keyword" > from< / span > random < span class = "hljs-keyword" > import< / span > randint
P = collections.namedtuple(< span class = "hljs-string" > 'P'< / span > , < span class = "hljs-string" > 'x y'< / span > ) < span class = "hljs-comment" > # Position< / span >
P = collections.namedtuple(< span class = "hljs-string" > 'P'< / span > , < span class = "hljs-string" > 'x y'< / span > ) < span class = "hljs-comment" > # Position< / span >