3-1-4-2. Defining Functions

As our first function,

we’ll write a function that calculates the volume of a cylinder.

The formula for this is the cylinder’s height,

multiplied by the square of its radius, multiplied by pi.

Here’s what that formula looks like when defined in a function called cylinder volume.

After defining the cylinder volume function,

we can use it like this.

This value is the volume of a cylinder 10 inches tall with a radius of three inches.

Let’s see how this works behind the scenes.

A function definition includes several important parts.

First, let’s look at the function header.

Defining a function always starts with

the def keyword to indicate that the code that follows is a function definition,

and ends with a colon.

Following def is the name of the function.

In this case, cylinder_volume.

This needs to be a one word with no gaps.

That’s why this has an underscore.

The rules for function names are the same as those for variable names.

If you need a reminder on this,

see the text below this video.

After the function name are parentheses that

includes the arguments that the function expects, separated by commas.

These arguments are values that are passed in as inputs

when the function is called and are used in this body.

If you write a function that doesn’t take arguments,

then just leave these parentheses empty.

Here is an example of a function that takes no arguments.

In this case, there is no input data we want to work with in the body of the function,

so no arguments are necessary.

Next, let’s discuss the body of a function.

The body of the function is indented after

the header and is where the function does its work.

Within this body, we can refer to the argument variables and define new variables.

The pi variable that we define here is a local variable.

Meaning; it can only be used within the body of this function.

Attempting to access this variable outside the function isn’t possible.

This is due to what is called variable scope,

We’ll discuss this in detail later in the lesson.

Often, the body of a function will include

this return key word which is used to

give back an output value when the function is called.

The value of the expression that follows return is the output of the function.

In this example, we return the value evaluated from

this formula for the volume of a cylinder.

Rather than returning the value as it is calculated,

an alternative technique would be to calculate the volume earlier in

the function body and then store it in a variable named volume.

In this case, we would return volume like this.

Functions like this can be imagined as little machines that take

inputs or arguments and process them into output or return values.

This is a good image but it’s incomplete.

Some functions like print don’t return anything at all.

Print displays text on the output window but as we see here,

the value it returns is none.

None is when a function will return by

default if it doesn’t explicitly return anything else.

The difference between print and return is often confused.

Print provides output to the console while return provides

the value that you can store and work with and code later.

You’ll get some practice with this in the quizzes that follow.

It’s not necessary that every function has a return statement.

Notice this function, print_greeting,

doesn’t have a return statement,

but it’s still a valid function.

첫 번째 기능으로,

실린더의 부피를 계산하는 함수를 작성할 것입니다.

이에 대한 공식은 실린더의 높이,

반지름의 제곱을 곱하고 파이를 곱합니다.

실린더 체적이라는 함수에서 정의된 공식은 다음과 같습니다.

실린더 체적 함수를 정의한 후,

우리는 이렇게 사용할 수 있습니다.

이 값은 반지름이 3인치이고 높이가 10인치인 원통의 부피입니다.

이것이 무대 뒤에서 어떻게 작동하는지 봅시다.

함수 정의에는 몇 가지 중요한 부분이 포함됩니다.

먼저 함수 헤더를 살펴보겠습니다.

함수 정의는 항상 다음으로 시작합니다.

다음 코드가 함수 정의임을 나타내는 def 키워드,

콜론으로 끝납니다.

def 다음은 함수의 이름입니다.

이 경우 실린더 볼륨.

공백이 없는 한 단어여야 합니다.

이것이 밑줄이 있는 이유입니다.

함수 이름에 대한 규칙은 변수 이름에 대한 규칙과 동일합니다.

이에 대한 알림이 필요하면

이 비디오 아래의 텍스트를 참조하십시오.

함수 이름 뒤에는 다음과 같은 괄호가 있습니다.

함수가 예상하는 인수를 쉼표로 구분하여 포함합니다.

이 인수는 입력으로 전달되는 값입니다.

함수가 호출되고 이 본문에서 사용될 때.

인수를 사용하지 않는 함수를 작성하면

그런 다음 이 괄호를 비워 두십시오.

다음은 인수를 사용하지 않는 함수의 예입니다.

이 경우 함수 본문에 작업하려는 입력 데이터가 없습니다.

따라서 인수가 필요하지 않습니다.

다음으로 함수의 본문에 대해 논의해 보겠습니다.

함수의 본문은 다음 뒤에 들여쓰기됩니다.

헤더는 함수가 작동하는 곳입니다.

이 본문 내에서 인수 변수를 참조하고 새 변수를 정의할 수 있습니다.

여기서 정의하는 pi 변수는 지역 변수입니다.

의미; 이 함수의 본문 내에서만 사용할 수 있습니다.

함수 외부에서 이 변수에 액세스하려는 시도는 불가능합니다.

이것은 가변 범위라고 하는 것 때문입니다.

Python에서 액세스할 수 있는 변수를 결정합니다.

이에 대해서는 나중에 강의에서 자세히 다루겠습니다.

종종 함수 본문에는 다음이 포함됩니다.

이 반환 키워드는

함수가 호출될 때 출력 값을 반환합니다.

return 뒤에 오는 표현식의 값은 함수의 출력입니다.

이 예에서는 다음에서 평가된 값을 반환합니다.

실린더의 부피에 대한 이 공식.

계산된 값을 반환하는 대신

대체 기술은 초기에 부피를 계산하는 것입니다.

함수 본문을 만든 다음 volume이라는 변수에 저장합니다.

이 경우, 우리는 이와 같은 볼륨을 반환할 것입니다.

이와 같은 기능은 다음을 수행하는 작은 기계로 상상할 수 있습니다.

입력 또는 인수를 처리하여 출력 또는 반환 값으로 처리합니다.

이것은 좋은 이미지이지만 불완전합니다.

인쇄와 같은 일부 기능은 아무 것도 반환하지 않습니다.

인쇄는 출력 창에 텍스트를 표시하지만 여기에서 볼 수 있듯이,

반환하는 값은 없음입니다.

None은 함수가 다음에 의해 반환될 때입니다.

명시적으로 다른 것을 반환하지 않는 경우 기본값입니다.

인쇄와 반환의 차이점은 종종 혼동됩니다.

인쇄는 콘솔에 출력을 제공하는 반면 반환은 제공합니다.

저장하고 작업하고 나중에 코딩할 수 있는 값입니다.

이어지는 퀴즈에서 이에 대한 연습을 할 수 있습니다.

모든 함수에 return 문이 있을 필요는 없습니다.

이 함수, print_greeting에 주목하십시오.

return 문이 없습니다.

그러나 여전히 유효한 기능입니다.

Let’s revisit the cylinder volume function,

but with one modification.

This function includes a default argument.

then the variable radius will default to five when used in the function body.

Calling the function like this would be the same thing as calling it like this,

because radius is set to five if not specified as another value.

Default arguments allow functions to use default values when those arguments are omitted.

This is helpful because it can make your code more concise in

scenarios where there is a common value you can use for a variable,

although you still want it to be customizable.

In this example, the default radius is five but we can still change this.

This time when we call the function,

we are overriding the default value of five and calculating

the cylinder volume for a cylinder with a radius of seven instead.

Also notice here, we’re passing values to our arguments by position.

It’s possible to pass values in two ways,

by position and by name.

Each of these function is evaluated in the same way.

This one is simply taking the arguments by

position while this function is accepting arguments by name.

There are some nuances for when you can perform

the passing of values in each of these ways.

You’ll see more applications of this in the following quiz section.

실린더 볼륨 함수를 다시 살펴보겠습니다.

그러나 한 번의 수정으로.

이 함수는 기본 인수를 포함합니다.

반경이 지정되지 않은 경우

그러면 변수 반경은 함수 본문에서 사용될 때 기본적으로 5가 됩니다.

이와 같이 함수를 호출하는 것은 다음과 같이 호출하는 것과 같습니다.

다른 값으로 지정하지 않으면 반지름이 5로 설정되기 때문입니다.

기본 인수를 사용하면 해당 인수가 생략된 경우 함수에서 기본값을 사용할 수 있습니다.

이것은 코드를 더 간결하게 만들 수 있기 때문에 유용합니다.

변수에 사용할 수 있는 공통 값이 있는 시나리오,

여전히 사용자 정의할 수 있기를 원하지만.

이 예에서 기본 반경은 5이지만 여전히 변경할 수 있습니다.

이번에는 함수를 호출할 때,

우리는 기본값 5를 재정의하고 계산합니다.

대신 반지름이 7인 실린더의 실린더 체적입니다.

또한 여기에서 위치별로 값을 인수에 전달하고 있습니다.

두 가지 방법으로 값을 전달할 수 있습니다.

직위와 이름으로.

이러한 각 기능은 동일한 방식으로 평가됩니다.

이것은 단순히 다음과 같이 인수를 취하는 것입니다.

이 함수가 이름으로 인수를 받아들이는 동안 위치.

언제 수행할 수 있는지에 대한 몇 가지 뉘앙스가 있습니다.

이러한 각각의 방식으로 가치를 전달합니다.

다음 퀴즈 섹션에서 이에 대한 더 많은 응용 프로그램을 볼 수 있습니다.

Defining Functions

Example of a function definition:

def cylinder_volume(height, radius):
pi = 3.14159
return height * pi * radius ** 2


After defining the cylinder_volume function, we can call the function like this.

cylinder_volume(10, 3)


This is called a function call statement.

A function definition includes several important parts.

1. The function header always starts with the def keyword, which indicates that this is a function definition.
2. Then comes the function name (here, cylinder_volume), which follows the same naming conventions as variables. You can revisit the naming conventions below.
3. Immediately after the name are parentheses that may include arguments separated by commas (here, height and radius). Arguments, or parameters, are values that are passed in as inputs when the function is called, and are used in the function body. If a function doesn’t take arguments, these parentheses are left empty.
4. The header always end with a colon :.

Function Body

The rest of the function is contained in the body, which is where the function does its work.

1. The body of a function is the code indented after the header line. Here, it’s the two lines that define pi and return the volume.
2. Within this body, we can refer to the argument variables and define new variables, which can only be used within these indented lines.
3. The body will often include a return statement, which is used to send back an output value from the function to the statement that called the function. A return statement consists of the return keyword followed by an expression that is evaluated to get the output value for the function. If there is no return statement, the function simply returns None.

Below, you’ll find a code editor where you can experiment with this.

Naming Conventions for Functions

Function names follow the same naming conventions as variables.

1. Only use ordinary letters, numbers and underscores in your function names. They can’t have spaces, and need to start with a letter or underscore.
2. You can’t use Python’s reserved words or keywords for function names, as discussed earlier with variable names. Here again is that table of Python’s reserved words.
3. Try to use descriptive names that can help readers understand what the function does.

https://docs.python.org/3/reference/lexical_analysis.html#keywords

Print vs. Return in Functions

Here are two valid functions. One returns a value and one simply prints a value, without returning anything. Test run this code and experiment to understand the difference.

# this prints something, but does not return anything
def show_plus_ten(num):
print(num + 10)

# this returns something
return(num + 10)

print('Calling show_plus_ten...')
return_value_1 = show_plus_ten(5)
print('Done calling')
print('This function returned: {}'.format(return_value_1))

print('Done calling')
print('This function returned: {}'.format(return_value_2))

Default Arguments

We can add default arguments in a function to have default values for parameters that are unspecified in a function call.

def cylinder_volume(height, radius=5):
pi = 3.14159
return height * pi * radius ** 2


In the example above, radius is set to 5 if that parameter is omitted in a function call. If we call cylinder_volume(10), the function will use 10 as the height and 5 as the radius. However, if we call cylinder_volume(10, 7) the 7 will simply overwrite the default value of 5.

Also notice here we are passing values to our arguments by position. It is possible to pass values in two ways – by position and by name. Each of these function calls are evaluated the same way.

cylinder_volume(10, 7)  # pass in arguments by position
cylinder_volume(height=10, radius=7)  # pass in arguments by name