Function parameters and arguments#

The purpose of creating a function is typically to take a piece of code that performs a particular task to a separate object. This allows you to use this piece of code multiple times without having to re-create it in program.

Typically, a function must perform some actions with input values and produce an output.

When working with functions it is important to distinguish:

  • parameters - variables that are used when creating a function.

  • arguments - actual values (data) that are passed to function when called.

For a function to receive incoming values, it must be created with parameters (func_check_passwd.py file):

In [1]: def check_passwd(username, password):
   ...:     if len(password) < 8:
   ...:         print('Password is too short')
   ...:         return False
   ...:     elif username in password:
   ...:         print('Password contains username')
   ...:         return False
   ...:     else:
   ...:         print(f'Password for user {username} has passed all checks')
   ...:         return True
   ...:

In this case, function has two parameters: username and password.

Function checks password and returns False if checks fail and True if password passed checks:

In [2]: check_passwd('nata', '12345')
Password is too short
Out[2]: False

In [3]: check_passwd('nata', '12345lsdkjflskfdjsnata')
Password contains username
Out[3]: False

In [4]: check_passwd('nata', '12345lsdkjflskfdjs')
Password for user nata has passed all checks
Out[4]: True

When defining a function in this way it is necessary to pass both arguments. If only one argument is passed, there is an error:

In [5]: check_passwd('nata')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-e07773bb4cc8> in <module>
----> 1 check_passwd('nata')

TypeError: check_passwd() missing 1 required positional argument: 'password'

Similarly, an error will occur if three or more arguments are passed.