Python 프로그래밍 소개(023) – Python의 사용자 정의 기능

Python 프로그래밍 소개(023) – Python의 사용자 정의 기능

Python에서는 함수가 널리 사용됩니다. 예를 들면: input(), print(), str(), range(), len() 등. 이들은 Python의 내장 함수라고 하며 직접 사용할 수 있습니다. Python은 사용자 정의 함수를 지원합니다. 즉, 일반적이고 재사용 가능한 코드를 함수로 정의하여 한 번 작성하여 여러 번 사용할 수 있다는 의미입니다.

1. 사용자 정의 함수 만들기

사용자 정의 함수는 def 키워드를 사용하여 구현되며 구문 형식은 다음과 같습니다.

def function_name([parameterlist]):
    ["connments"]
    [function_body]

설명하다:

(1) function_name : 함수 이름.

(2) 매개변수 목록: 함수에 전달되는 매개변수를 지정하는 선택적 매개변수로, 매개변수가 여러 개일 경우 쉼표를 사용하여 각 매개변수를 구분합니다. 매개변수가 지정되지 않으면 함수에 매개변수가 없습니다.

(3) connments: 함수에 지정된 설명을 나타내는 선택적 매개변수입니다.

(4) function_body: 함수 본문을 지정하는 데 사용되는 선택적 매개변수입니다.

예: 문자열에서 숫자를 제거하려면 다음 함수를 정의하십시오.

def get_digit(instr):
    num = ""
    for item in instr:
        if item.isdigit():
            num += item
    return num

2. 사용자 정의 함수 호출

함수를 호출하는 것은 함수를 실행하는 것이기도 하며, 함수를 호출하는 구문 형식은 다음과 같습니다.

function_name([parameterlist])

설명하다:

(1) function_name : 호출할 함수의 이름을 나타낸다.

(2) 매개변수 목록: 선택적 매개변수로, 각 매개변수의 값을 지정하는 데 사용됩니다.

예를 들어:

def get_digit(instr):
    num = ""
    for item in instr:
        if item.isdigit():
            num += item
    return num
print(get_digit("abc12张三88,2^..33")) # 调用函数

程序的运算结果为:
============================= RESTART: C:\Python\Python38\First.py =============================
1288233

3. 기능 매개변수 전송

함수를 호출할 때 호출하는 함수와 호출되는 함수 사이에는 데이터 전송 관계가 있습니다. 함수 매개변수는 함수에 데이터를 전달하는 것이며, 함수는 수신된 데이터를 사용하여 특정 작업을 수행합니다.

1. 형식 매개변수와 실제 매개변수

함수를 사용할 때 함수명 뒤 괄호 안의 매개변수를 [형식매개변수], 줄여서 [형식매개변수]라고 합니다.

함수를 호출할 때, 함수 이름 뒤 괄호 안의 매개변수를 [실제 매개변수]라고 하며, 이는 함수 호출자가 함수에 제공하는 매개변수이며, 실제 매개변수를 [실제 매개변수]라고도 합니다.

실제 매개변수의 종류에 따라 실제 매개변수의 값을 형식 매개변수에 전달하는 상황과 실제 매개변수의 참조를 형식 매개변수에 전달하는 상황으로 나눌 수 있습니다. 안에:

(1) 실제 매개변수가 불변 객체인 경우 값 전달이 수행됩니다.

(2) 실제 매개변수가 가변 객체인 경우에는 참조로 전달됩니다.

값으로 전달하는 것과 참조로 전달하는 것의 차이점은 값 전달 후 형식 매개변수의 값이 변경되는 반면 실제 매개변수의 값은 변경되지 않고 유지된다는 것입니다. 참조로 전달한 후에는 형식 매개변수의 값이 변경되고 실제 매개변수의 값도 변경됩니다.

예를 들어:

(1) 가치 이전

코드는 아래와 같이 표시됩니다.

def add(x,y):
    x = x * 2
    y = y ** 2
    return x + y
a = 2
b = 3
print(add(a,b))
print("a=", a)  # a的值不变
print("b=", b)  # b的值不变

程序的运算结果为:
============ RESTART: C:\Python\Python38\First.py ============
13
a= 2
b= 3

(2) 참조로 전달

코드는 아래와 같이 표시됩니다.

def list_add(mylist):
    for i in range(len(mylist)):
        mylist[i] = mylist[i] + 3 # 列表中的每个元素的值增加3
    print(mylist)
list1 = [12, 23, 4, 76, 100]
list_add(list1)
print(list1)  # 列表list1的元素发生变化

程序的运算结果为:
============ RESTART: C:\Python\Python38\First.py ============
[15, 26, 7, 79, 103]
[15, 26, 7, 79, 103]

2. 위치 매개변수

위치 매개변수는 필수 매개변수라고도 하며 올바른 순서로 함수에 전달되어야 합니다. 즉, 함수를 호출할 때 지정하는 매개변수의 수와 위치는 함수를 정의할 때와 동일해야 합니다.

함수를 호출할 때 지정된 실제 매개변수는 형식 매개변수와 일치해야 합니다. 그렇지 않으면 필요한 위치 매개변수가 누락되었음을 나타내는 TypeError 예외가 발생합니다.

함수를 호출할 때 지정된 실제 매개변수 위치는 형식 매개변수 위치와 일치해야 합니다. 그렇지 않으면 다음 두 가지 결과가 발생할 수 있습니다.

(1) 예외 발생: 지정된 실제 매개변수와 형식 매개변수의 위치가 일치하지 않고 데이터 유형이 일치하지 않는 경우 예외가 발생합니다.

(2) 예외는 발생하지 않습니다. 얻은 결과가 기대와 일치하지 않습니다. 지정된 실제 매개변수와 형식 매개변수의 위치가 일치하지 않고 데이터 유형이 일관적인 경우 예외가 발생하지 않지만 얻은 결과는 예상과 일치하지 않습니다.

예를 들어:

(1) 실제 형식 매개변수가 일치하지 않습니다.

def pow1(x,y):
    return x ** y
a = 2
b = 10
print(pow1(a))  # 实参与形参个数不同

程序的运算结果为:
============ RESTART: C:\Python\Python38\First.py ============
Traceback (most recent call last):
  File "C:\Python\Python38\First.py", line 5, in <module>
    print(pow1(a))  # 实参与形参个数不同
TypeError: pow1() missing 1 required positional argument: 'y'

(2) 실제 매개변수와 형식 매개변수의 위치가 일치하지 않습니다.

def pow1(x,y):
    return x ** y  # 返回x的y次幂
a = 2
b = 10
print(pow1(a,b))   # 2^10 = 1024
print(pow1(b,a))   # 10^2 = 100

程序的运算结果为:
============ RESTART: C:\Python\Python38\First.py ============
1024
100

4. 함수의 반환값

함수 본문 내의 return 문을 사용하여 함수의 반환 값을 지정할 수 있습니다. 함수의 반환값은 어떤 형태든 가능하며, 함수 내 어디에 return 문이 나타나든 return 문이 실행되기만 하면 함수의 실행이 종료됩니다. return 문의 구문 형식은 다음과 같습니다.

return [value]

설명하다:

(1) 값: 선택적 매개변수입니다. 함수에서 반환할 값을 지정하는 데 사용됩니다. 하나의 값 또는 여러 값을 반환할 수 있습니다. 여러 값이 반환되는 경우 반환 값의 유형은 튜플입니다.

(2) 함수에 return문이 없거나, return문의 매개변수가 생략된 경우 None(null 값)을 반환합니다.

예를 들어:

(1) 반환 값이 비어 있습니다.

def circle_r(r):
    print("圆的周长:", 3.14 * r * 2)
    print("圆的面积:", 3.14 * r ** 2)
circle_r(5)

程序的运算结果为:
============ RESTART: C:\Python\Python38\First.py ============
圆的周长: 31.400000000000002
圆的面积: 78.5

(2) 값을 반환

def f(n):
    fac = 1
    for i in range(1,n+1):
        fac *= i
    return fac
x = f(5)
print("返回值的类型:", type(x))
print("返回值:", x)

程序的运算结果为:
============ RESTART: C:\Python\Python38\First.py ============
返回值的类型: <class 'int'>
返回值: 120

(3) 여러 값을 반환

def circle_r(r):
    c = 3.14 * r * 2
    s = 3.14 * r ** 2
    return c,s
result = circle_r(5)
print("返回值的类型:", type(result))
print("返回值:", result)
print("圆的周长:", result[0])
print("圆的面积:", result[1])

程序的运算结果为:
============ RESTART: C:\Python\Python38\First.py ============
返回值的类型: <class 'tuple'>
返回值: (31.400000000000002, 78.5)
圆的周长: 31.400000000000002
圆的面积: 78.5

여러 값을 반환하는 함수는 호출 시 여러 변수를 사용하여 반환 값을 받을 수 있으며, 코드는 다음과 같습니다.

def circle_r(r):
    c = 3.14 * r * 2
    s = 3.14 * r ** 2
    return c,s
zc,mj = circle_r(5)
print("圆的周长:", zc)
print("圆的面积:", mj)

程序的运算结果为:
============ RESTART: C:\Python\Python38\First.py ============
圆的周长: 31.400000000000002
圆的面积: 78.5

5. 함수에서 지역 변수 사용

지역 변수는 함수 내에서 정의되고 사용되는 변수를 말하며 함수 내에서만 유효합니다.

함수 내부의 변수는 함수가 실행될 때만 생성되며, 함수 실행 전후에는 모든 지역 변수가 존재하지 않습니다.

지역 변수는 함수 내부에서만 유효하며 함수 외부에는 아무런 영향을 미치지 않습니다. 같은 이름의 변수가 함수 내부와 외부에 정의되어 있으면 서로 다른 변수 값을 나타냅니다.

예를 들어:

def add(x,y):
    count = x + y
    return count
count = 1
a = 1
b = 10
print("{} + {} = {}".format(a,b,add(a,b)))
print("count = ",count)

程序的运算结果为:
============ RESTART: C:\Python\Python38\First.py ============
1 + 10 = 11
count =  1

6. 함수에서 전역 변수 사용

함수 외부에서 변수의 초기값을 설정한 후 함수 내에서 접근하여 수정해야 하는 경우가 있는데, 이를 위해서는 전역 변수를 정의해야 합니다.

함수 내부와 외부에서 모두 접근할 수 있는 변수를 전역변수(Global Variable)라고 합니다.

(1) 함수 외부에서 변수를 정의하면 함수 외부뿐만 아니라 함수 내부에서도 변수에 접근할 수 있습니다.

참고: 함수 본문 외부에 정의된 전역 변수는 액세스만 가능하고 수정할 수 없습니다!

예를 들어:

str1 = "Hello Python!"
def p():
    print(str1)  # str1 为全局变量
p()  # 调用函数

程序的运算结果为:
============ RESTART: C:\Python\Python38\First.py ============
Hello Python!

함수에서 전역 변수의 값을 수정하면 예외가 발생합니다.

num = 20
def p():
    num = num + 5  # 在函数中不能修改全局变量的值
    print(num)
p()  # 调用函数

程序的运算结果为:
============ RESTART: C:\Python\Python38\First.py ============
Traceback (most recent call last):
  File "C:\Python\Python38\First.py", line 5, in <module>
    p()  # 调用函数
  File "C:\Python\Python38\First.py", line 3, in p
    num = num + 5  # 在函数中不能修改全局变量的值
UnboundLocalError: local variable 'num' referenced before assignment

(2) 함수 내에서 global 키워드를 사용하여 변수를 전역 변수로 정의하면 함수 외부에서도 해당 변수에 접근할 수 있고, 함수 내에서도 변수를 수정할 수 있습니다.

예를 들어:

num = 20
def p():
    global num     # 定义 num 为全局变量
    num = num + 5  # 在函数中修改全局变量的值
    print(num)
p()  # 调用函数
print(num)         # 全局变量num的值发生改变

程序的运算结果为:
============ RESTART: C:\Python\Python38\First.py ============
25
25

추천

출처blog.csdn.net/weixin_44377973/article/details/132327454