БГ
Size: a a a
БГ
l
БГ
py3
def test(*args):
return print(arg for arg in args)
test(1,2,3)
<generator object test.<locals>.<genexpr> at 0x7ff1374a3fc0>
l
БГ
БГ
l
БГ
l
БГ
БГ
l
l
python3
def test(gen, a):
print(gen, a)
test(i for i in range(5), 3)
File "source_file.py", line 4
test(i for i in range(5), 3)
^
SyntaxError: Generator expression must be parenthesized if not sole argument
l
БГ
py3
import ast
code = """
from random import randint
def roll(*dice):
return sum(randint(0, die) for die in dice)
print(roll(6))
print(roll(6, 6))
print(roll(6, 6, 6))"""
print(ast.dump(ast.parse(code)))
Module(body=[ImportFrom(module='random', names=[alias(name='randint', asname=None)], level=0), FunctionDef(name='roll', args=arguments(args=[], vararg=arg(arg='dice', annotation=None), kwonlyargs=[], kw_defaults=[], kwarg=None, defaults=[]), body=[Return(value=Call(func=Name(id='sum', ctx=Load()), args=[GeneratorExp(elt=Call(func=Name(id='randint', ctx=Load()), args=[Num(n=0), Name(id='die', ctx=Load())], keywords=[]), generators=[comprehension(target=Name(id='die', ctx=Store()), iter=Name(id='dice', ctx=Load()), ifs=[])])], keywords=[]))], decorator_list=[], returns=None), Expr(value=Call(func=Name(id='print', ctx=Load()), args=[Call(func=Name(id='roll', ctx=Load()), args=[Num(n=6)], keywords=[])], keywords=[])), Expr(value=Call(func=Name(id='print', ctx=Load()), args=[Call(func=Name(id='roll', ctx=Load()), args=[Num(n=6), Num(n=6)], keywords=[])], keywords=[])), Expr(value=Call(func=Name(id='print', ctx=Load()), args=[Call(func=Name(id='roll', ctx=Load()), args=[Num(n=6), Num(n=6), Num(n=6)], keywords=[])], keywords=[]))])
l
БГ
py3
import ast
code = """
from random import randint
def roll(*dice):
return sum(randint(0, die) for die in dice)
print(roll(6))
print(roll(6, 6))
print(roll(6, 6, 6))"""
print(ast.dump(ast.parse(code)))
Module(body=[ImportFrom(module='random', names=[alias(name='randint', asname=None)], level=0), FunctionDef(name='roll', args=arguments(args=[], vararg=arg(arg='dice', annotation=None), kwonlyargs=[], kw_defaults=[], kwarg=None, defaults=[]), body=[Return(value=Call(func=Name(id='sum', ctx=Load()), args=[GeneratorExp(elt=Call(func=Name(id='randint', ctx=Load()), args=[Num(n=0), Name(id='die', ctx=Load())], keywords=[]), generators=[comprehension(target=Name(id='die', ctx=Store()), iter=Name(id='dice', ctx=Load()), ifs=[])])], keywords=[]))], decorator_list=[], returns=None), Expr(value=Call(func=Name(id='print', ctx=Load()), args=[Call(func=Name(id='roll', ctx=Load()), args=[Num(n=6)], keywords=[])], keywords=[])), Expr(value=Call(func=Name(id='print', ctx=Load()), args=[Call(func=Name(id='roll', ctx=Load()), args=[Num(n=6), Num(n=6)], keywords=[])], keywords=[])), Expr(value=Call(func=Name(id='print', ctx=Load()), args=[Call(func=Name(id='roll', ctx=Load()), args=[Num(n=6), Num(n=6), Num(n=6)], keywords=[])], keywords=[]))])
l
l