I will summarize what I learned about python functions.
A function is a collection of processes. It is used to make the process easier to understand in order to extract similar processes, standardize them, and code them efficiently. By the way, in python, it seems customary to declare function names separated by "_".
The definition method in python is defined as "def function name ():". The processing in the function is described by shifting the indent. Also, if you want to set an argument, describe it in ().
python
#No arguments
def test_function_1():
pass
#With arguments
def test_function_2(arg1, arg2):
pass
It looks like this in java.
java
//No arguments
void testFunction1() {
}
//With arguments
void testFunction2(String arg1, String arg2) {
}
The java call method is the same in python. It can be executed with the function name ().
python
def test_function_1():
print("The function has been executed.")
def test_function_2(arg1):
print("arg1:" + arg1)
#Execute function
test_function_1() #⇒ The function has been executed.
test_function_2("I passed an argument.") # ⇒ arg1:I passed an argument.
print(test_function_1()) #⇒ The function has been executed. None
java
//No arguments
void testFunction1() {
System.out.println("The function has been executed.");
}
void testFunction2(String arg1) {
System.out.println("arg1:" + arg1);
}
//Execute function
testFunction1(); //⇒ The function has been executed.
testFunction2("I passed an argument."); // ⇒ arg1:I passed an argument.
If you do not define a return value, the function will return None. If you want to define a return value, write "return return value" at the end of the function.
python
def test_function_3():
return "Try to return the return value"
#Execute function
print(test_function_1()) #⇒ Try to return the return value
Since it is the same in java, it will be omitted.
You can set default values for python arguments. By setting, the function can be executed without specifying an argument with default values. In that case, the default value will take effect.
python
def test_function_3(arg1, arg2 = "No arguments"):
print("arg1:" + arg1 + " arg2:" + arg2)
#Execute function
test_function_3("Argument 1") # ⇒ arg1:Argument 1 arg2:No arguments
test_function_3("Argument 1", "Argument 2") # ⇒ arg1:Argument 1 arg2:Argument 2
java does not have a feature like the default value.
If you want to receive variadic arguments in python, define the function by prefixing the argument name with "". The received result can be used in the function as a tuple. By convention, variadic arguments are named " args". However, since it is a convention, it works even if it is not named args.
python
def test_function_4(*kahen):
print(kahen)
test_function_4("Variable 1", "Variable 2", "Variable 3") # ⇒ ('Variable 1', 'Variable 2', 'Variable 3')
It can also be used with regular arguments.
python
def test_function_5(arg1, arg2, *kahen):
print("arg1:" + arg1 + " arg2:" + arg2 + " kahen:" + str(kahen))
test_function_5("Invariant 1", "Invariant 2", "Variable 3", "Variable 4") # ⇒ arg1:Invariant 1 arg2:Invariant 2 kahen:('Variable 3', 'Variable 4')
In Java, write "..." after the type like String ...
java
//No arguments
void testFunction4(String... kahen) {
System.out.println(Arrays.toString(kahen));
}
void testFunction5(String arg1, String arg2, String... kahen) {
System.out.println("arg1:" + arg1 + " arg2:" + arg2 + " kahen:" + Arrays.toString(kahen));
}
//Execute function
testFunction4("Variable 1", "Variable 2", "Variable 3"); // ⇒ [Variable 1, Variable 2, Variable 3]
testFunction5("Invariant 1", "Invariant 2", "Variable 3", "Variable 4"); // ⇒ arg1:Invariant 1 arg2:Invariant 2 kahen:[Variable 3, Variable 4]
Decorators are python-specific features that don't exist in Java. A function that takes a function as an argument and sets the function as a return value. It's hard to understand with words alone, so I'll write it.
Python
def deco(argFun):
def retFun(arg):
print("--Start--argument:" + arg)
argFun(arg)
print("--End--")
return retFun
def test_function_6(arg):
print("Decolated argument:" + arg)
deco(test_function_6)("TEST")
# --Start--argument:TEST
#Decolated argument:TEST
# --End--
It defines the decorator function "deco". This function returns the function "retFun". "RetFun" is a function that outputs a log before and after the execution of the function received by "deco". In this way, the decorator is a function that adds (decorates) processing before and after executing the function "test_function_6". Other than this, you can decorate using the "@" modifier.
Python
def deco(argFun):
def retFun(arg):
print("--Start--argument:" + arg)
argFun(arg)
print("--End--")
return retFun
@deco
def test_function_7(arg):
print("Decolated@argument:" + arg)
test_function_7("test")
# --Start--argument:test
# Decolated@argument:test
# --End--
This is the end of the explanation of the function. The idea of decorators is a very new learning experience for me as a Java enthusiast. It's hard to think of a good way to use it, but depending on how you use it, the code may be very confusing, so I'd like to think carefully when using it.
Recommended Posts