## Introduction to Programming using Python 1st Edition

There are two kinds of arguments: positional arguments and keyword arguments. Using positional arguments requires that the arguments be passed in the same order as their respective parameters in the function header. For example, the following function prints a message n times: def nPrintln(message, n):       for i in range(n):           print(message) You can use nPrintln('a', 3) to print a three times. The nPrintln('a', 3) statement passes a to message, passes 3 to n, and prints a three times. However, the statement nPrintln(3, 'a') has a different meaning. It passes 3 to message and a to n. When we call a function like this, it is said to use positional arguments. The arguments must match the parameters in order, number, and compatible type, as defined in the function header. You can also call a function using keyword arguments, passing each argument in the form name value. For example, nPrintln(n = 5, message = "good") passes 5 to n and "good" to the message. The arguments can appear in any order using keyword arguments. It is possible to mix positional arguments with keyword arguments, but the positional arguments cannot appear after any keyword arguments. Suppose a function header is: def f(p1, p2, p3): You can invoke it by using f(30, p2 = 4, p3 = 10) However, it would be wrong to invoke it by using f(30, p2 = 4, 10) because the positional argument 10 appears after the keyword argument p2 = 4.