Function Parameter Default Expression Executed Only Once

Q

Is it true that the function parameter default expression is only executed once in Python?

✍: FYIcenter.com

A

Yes, the function parameter default expression is only executed once in Python when the "def" statement is interpreted.

For example, in the following Python code, when the "def profile()" statement is enterpretted, the default value for "age" parameter will be set to 18+3 once and stay with that value:

>>> legalAge = 18
>>> def profile(name,age=legalAge+3):
...     print("Name: "+name)
...     print("Age: "+str(age))
...
>>> profile("Joe")
Name: Joe
Age: 21
>>> legalAge = 20
>>> profile("Jay")
Name: Jay
Age: 21

In the following example, the default expression assigned a new "list" object to parameter "x" once. When the function is called multiple times, the same "list" object is referenced again and again.

>>> def growingList(x=[1]):
...     x.append(x[len(x)-1]*2)
...     return x
...
>>> growingList()
[1, 2]
>>> growingList()
[1, 2, 4]
>>> growingList()
[1, 2, 4, 8]
>>> growingList()
[1, 2, 4, 8, 16]
>>> growingList()
[1, 2, 4, 8, 16, 32]
>>> growingList()
[1, 2, 4, 8, 16, 32, 64]

 

Defining Functions in Python

⇒⇒Python Tutorials

2017-09-12, 110👍, 0💬