[Tutor] Why are expressions not allowed as parameters in function definition statements?
Steven D'Aprano
steve at pearwood.info
Sat Jun 18 22:10:28 EDT 2016
On Sat, Jun 18, 2016 at 02:04:46PM -0500, boB Stepp wrote:
> I have (Finally!) gotten a bit of time to look at Peter's answer to my
> Model-View-Controller question from May 29th, particularly his
> CircleImageView class to which he added a "#FIXME" comment. I thought
> it would be helpful to abbreviate his distance function in the
> interpreter while I played around with pencil and graph paper. I got:
>
> Python 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:54:25) [MSC v.1900
> 64 bit (AMD64)] on win32
> Type "help", "copyright", "credits" or "license" for more information.
> py3: def d(row, col/2, radius=5):
> File "<stdin>", line 1
> def d(row, col/2, radius=5):
> ^
> SyntaxError: invalid syntax
>
> And this surprised me.
I'm surprised that you're surprised. I don't even know what you expect a
parameter col/2 would even mean.
> It seems that only identifiers are allowed as
> parameters in a function definition statement, and I cannot help but
> wonder why?
Because they are parameters, which by definition are variable names,
i.e. identifiers. What else could they be?
def foo(x, 1+2, y):
# how do I refer to the second parameter here?
foo(1000, 2000, 3000) # what happens to the second argument here?
Can you explain what you expected
def d(row, col/2)
to mean? I have literally no idea.
> It seems that in most other places in Python's syntax it
> will allow one to insert almost any kind of object or expression.
You can't use arbitrary expressions on the left hand side of
assignment:
1 + 2 = "some value"
x/2 = y
Function parameters are a form of assignment.
--
Steve
More information about the Tutor
mailing list