-
Notifications
You must be signed in to change notification settings - Fork 4
Functions
A function is a block of code which only runs when it is called.
You can pass data, known as
parameters
, into a function.A function can return data as a result.
In Python a function is defined using the
def
keyword:
def my_function():
print("Hello from a function")
my_function()
Information can be passed into functions as
arguments
.
Arguments
are specified after the function name, inside the parentheses. You can add as many arguments as you want,just separate them with a comma.
The following example has a function with one argument
f_name
. When the function is called,
we pass along a first name, which is used inside the function to print the full name:
def my_function(f_name):
print(f_name + " Refsnes")
my_function("Emil")
my_function("Tobias")
my_function("Linus")
Arguments
are often shortened toargs
in Python documentations.
The terms
parameter
andargument
can be used for the same thing: information that are passed into a function.
From a function's perspective:
A
parameter
is the variable listed inside the parentheses in the function definition.An
argument
is the value that is sent to the function when it is called.
By default, a function must be called with the correct number of arguments. Meaning that if your function expects 2 arguments, you have to call the function with 2 arguments, not more, and not less.
This function expects 2 arguments, and gets 2 arguments:
def my_function(f_name, l_name):
print(f_name + " " + l_name)
my_function("Emil", "Refsnes")
If you try to call the function with 1 or 3 arguments, you will get an error.
You can also send arguments with the
key = value
syntax. This way the order of the arguments does not matter.
def my_function(child3, child2, child1):
print("The youngest child is " + child3)
my_function(child1="Emil", child2="Tobias", child3="Linus")
The phrase
Keyword Arguments
are often shortened tokwargs
in Python documentations.
If you do not know how many arguments that will be passed into your function, add a
*
before the parameter name in the function definition.This way the function will receive a tuple of arguments, and can access the items accordingly.
If the number of arguments is unknown, add a * before the parameter name:
def my_function(*kids):
print("The youngest child is " + kids[2])
my_function("Emil", "Tobias", "Linus")
Arbitrary Arguments are often shortened to
*args
in Python documentations.
If you do not know how many keyword arguments that will be passed into your function, add two asterisk:
**
before the parameter name in the function definition.This way the function will receive a dictionary of arguments, and can access the items accordingly.
If the number of keyword arguments is unknown, add a double ** before the parameter name:
def my_function(**kid):
print("His last name is " + kid["l_name"])
my_function(fname="Tobias", lname="Refsnes")
Arbitrary keyword Arguments are often shortened to
**kwargs
in Python documentations.
def sum_numbers(*args, **kwargs):
print(kwargs)
print(args)
sum_numbers(1, 2, 3, a='a', b='b')
The following example shows how to use a default parameter value.
If we call the function without argument, it uses the default value:
def my_function(country="Norway"):
print("I am from " + country)
my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")
You can send any data types of argument to a function (string, number, list, dictionary etc.), and it will be treated as the same data type inside the function.
E.g. if you send a List as an argument, it will still be a List when it reaches the function:
def my_function(food):
for x in food:
print(x)
fruits = ["apple", "banana", "cherry"]
my_function(fruits)
def run_function_with_two_args(your_function, a, b):
print(your_function(a, b))
def sum_numbers(x, y):
return x + y
run_function_with_two_args(sum_numbers, 11, 11)
def somthing():
def sum_two_number(x, y):
return x + y
return sum_two_number
a = somthing()
print(a(2, 3))
To let a function return a value, use the return
statement:
def my_function(x):
return 5 * x
print(my_function(3))
def calc_sum_sub(num1, num2):
set_sum = num1 + num2
set_sub = num1 - num2
return set_sum, set_sum # return as tuple
result_sum, result_sub = calc_sum_sub(10, 4)
function definitions cannot be empty, but if you for some reason have a function definition with no content, put in the pass statement to avoid getting an error.
def myfunction():
pass
Python also accepts function recursion, which means a defined function can call itself.
Recursion is a common mathematical and programming concept. It means that a function calls itself.
This has the benefit of meaning that you can loop through data to reach a result.
The developer should be very careful with recursion as it can be quite easy to slip into writing a function which never terminates, or one that uses excess amounts of memory or processor power. However, when written correctly recursion can be a very efficient and mathematically-elegant approach to programming.
In this example, tri_recursion() is a function that we have defined to call itself ("recurse").
We use the k variable as the data, which decrements (-1) every time we recurse.
The recursion ends when the condition is not greater than 0 (i.e. when it is 0).
To a new developer it can take some time to work out how exactly this works, best way to find out is by testing and modifying it.
def plus_one(a):
if a < 3:
return plus_one(a + 1)
return a
print(plus_one(10))
max recursion is 996
maximum recursion depth exceeded while calling a Python object.
- Introduction
- Variables
- Data Types
- Numbers
- Casting
- Strings
- Booleans
- Operators
- Lists
- Tuple
- Sets
- Dictionaries
- Conditionals
- Loops
- Functions
- Lambda
- Classes
- Inheritance
- Iterators
- Multi‐Processing
- Multi‐Threading
- I/O Operations
- How can I check all the installed Python versions on Windows?
- Hello, world!
- Python literals
- Arithmetic operators and the hierarchy of priorities
- Variables
- Comments
- The input() function and string operators
Boolean values, conditional execution, loops, lists and list processing, logical and bitwise operations
- Comparison operators and conditional execution
- Loops
- [Logic and bit operations in Python]
- [Lists]
- [Sorting simple lists]
- [List processing]
- [Multidimensional arrays]
- Introduction
- Sorting Algorithms
- Search Algorithms
- Pattern-matching Algorithm
- Graph Algorithms
- Machine Learning Algorithms
- Encryption Algorithms
- Compression Algorithms
- Start a New Django Project
- Migration
- Start Server
- Requirements
- Other Commands
- Project Config
- Create Data Model
- Admin Panel
- Routing
- Views (Function Based)
- Views (Class Based)
- Django Template
- Model Managers and Querysets
- Form
- User model
- Authentification
- Send Email
- Flash messages
- Seed
- Organize Logic
- Django's Business Logic Services and Managers
- TestCase
- ASGI and WSGI
- Celery Framework
- Redis and Django
- Django Local Network Access
- Introduction
- API development
- API architecture
- lifecycle of APIs
- API Designing
- Implementing APIs
- Defining the API specification
- API Testing Tools
- API documentation
- API version
- REST APIs
- REST API URI naming rules
- Automated vs. Manual Testing
- Unit Tests vs. Integration Tests
- Choosing a Test Runner
- Writing Your First Test
- Executing Your First Test
- Testing for Django
- More Advanced Testing Scenarios
- Automating the Execution of Your Tests
- End-to-end
- Scenario
- Python Syntax
- Python OOP
- Python Developer position
- Python backend developer
- Clean Code
- Data Structures
- Algorithms
- Database
- PostgreSQL
- Redis
- Celery
- RabbitMQ
- Unit testing
- Web API
- REST API
- API documentation
- Django
- Django Advance
- Django ORM
- Django Models
- Django Views
- Django Rest Framework
- Django Rest Framework serializers
- Django Rest Framework views
- Django Rest Framework viewsets