- The overall introduction is here
- Introduction to Python
Function is a bundle of expression and operations.
A function in Python makes up 3 parts:
|---------------|---------------------------------------------------------------------------------|
| Parameters | A function can receive any number of parameters |
| Function Body | The main structure of function. All the parameters will be process in the body. |
| Return value | the funciton body can process the data and then generate a return result. |
1. Grammar of Function
pythondef my_function(): # do sth # return sth
We use key worddef to define a function. (def is the abbreviation of define)
the name of function is arbitrary. (in the instance, the name of function is my_function)
the function body should be wrap in the indentation.
you can return a variable or not , using return ... (e.g. return "hello")
Now see a concrete exemple:
pythondef add(a, b): return a + b # The name of the function is add, meaning addition operation # The function body contains a return statement # the a + b will calculate the addition of a and b # and then the result of a + b will be returnHow to use function defined by ourselves?
pythona = add(1, 5) print(a) # 1 and 5 will be pass to the function add as arguments and then be added # the function return the addition of 1 and 5 # variable a receive the return value of add(1, 5), then a is 6 now # print() is also a build-in function, which can output the value of a on the screen
2. Details
Understanding the nature of function requires you to know following points:
2.1 When variables are passed to a function as arguments, the interpreter does2things:
- copy the references of the variables
- pass the copies of the variables to the function
As you can see, in the instance
a = 1 b = 2 add(a, b)
- a is a reference pointing to a space in the memory storing 1 , and b points to the other storing 2 as well.
- Then the interpreter copy the reference a and b and create their copies . We just call them a1 and b1 . Then a1 and b1 are passed to the function.
2.2 When the function return a variable(such as return a + b), the interpreter only return the reference of the variable.
In the instance above, the value of a + b will be stored in a temporary variable and then the function will return the reference of the variable.
original:
a ----> 1
b ----> 2copy:
a, a1 ----> 1
b, b1 ----> 2pass:
add(a1, b1)operate:
a1 + b1 ----> 3return:
c, a1 + b1 ----> 3
return c3. Scope of value
3.1 local and global variable
A scope of variable is the action scope of the variable. A variable defined in a for loop , while loop , if...else statement or function is a local variable , which CANNOT be accessed outside the block. In the following examples, you can see the limitation of a local variable.
pythonfor i in range(0, 5): print(i) print(i) # error, i is a local variable belonging to the for loop ============================================================================ if(1==1): a = "hello" print(a) print(a) # error, i is a local variable belonging to the if...else block ============================================================================ def add(a, b): c = a + b return c print(c) # error, c is a local variable belonging to the function add ============================================================================ def add(a, b): c = a + b return c def get(): print(c) # error, c is a local variable belonging to the function addThe concept on the opposite side of local variable isglobal variable . If a variable is not defined in any loop , if...else block or function , the variable will become a global variable , which can be accessed in the loop , if...else block.
pythona = 1 for i in range(0,5): print(a) #yes a = a + 1 #yes if(1==1): print(a) # yes a = a + 1 # yesHowever , in a function, the condition is a little bit different. So we must introduce the concept of the scope of variable.
3.2 Scope of variable
A function will create a scope of variable. A variable in a scope can read the value of global variable but CANNOT change it.
pythonvar = 1 def add(a, b): print(var) # yes var = a + b # errorIf you want to change the value of a global variable, use keyword global
pythonvar = 1 def add(a, b): global var # now you can use the var print(var) # yes var = a + b # yes add(1, 2) print(var) # output 3Note that if the parameters of a function has the same name of a global variable, the interpreter will give priority to using local variable.
pythona = 1 def add(a, b): return a + b # the a here is the argument add(2 ,4) # return 6Note that a loop or if...else statement won't create a scope of variable