목차
8. 함수
 기본 매개변수는 불변 객체를 가리켜야 합니다!
8.2.5 명명된 키워드 매개변수
8.2.5 등가 함수 호출
8.2.6 빈 함수(pass)
8.2.7 실제 매개변수 오류 방지
8.2.8 전역문(전역변수)
8.3 반환 값
8.3.1 여러 값 반환 ​​
8.3.2 실제 매개변수를 선택사항으로 만드세요
8.3.3 사전 반환
8.3.4 반환 함수
8.3.6 Closure
8.3.7 익명 함수 람다
8.4 목록 전달
8.4.1 함수 내 리스트 수정
8.4.2 함수 수정은 금지됩니다
8.5 실제 매개변수 전달(가변 매개변수)
8.5.1 위치 인수와 가변 인수 결합
8.5.2 가변 인수 및 키워드 인수 사용
8.5 .3 매개변수 조합 사용
8.5.4 재귀 매개변수
8.6.1 고차 함수
8.6.2 내장 함수
8.7 모듈에 함수 저장
8.7.3 특정 모듈 가져오기
8.7.4 as를 사용하여 함수의 별칭을 지정하세요
8.7.5 as를 사용하여 모듈의 별칭을 지정하세요
8.7.6 *를 사용하여 모듈의 모든 함수를 가져오세요
8.8 함수 작성 가이드
백엔드 개발 파이썬 튜토리얼 Python 기본 소개--함수

Python 기본 소개--함수

Jul 21, 2017 pm 04:45 PM
python 베이스 요약

8. 함수

  1. 함수는 특정 작업을 완료하는 데 사용되는 명명된 코드 블록입니다. def 함수 정의, 함수 이름을 나타냅니다. 함수를 정의할 때 매개변수의 이름과 위치를 결정하면 함수의 인터페이스 정의가 완성됩니다. 함수를 호출하는 사람은 올바른 매개변수를 전달하는 방법함수가 반환할 값만 알면 충분합니다. 함수 내부의 복잡한 논리는 캡슐화되어 있으므로 호출자는 이해할 필요가 없습니다.

    함수로 정의된 특정 작업을 수행하려면 함수를 호출하세요. 프로그램에서 동일한 작업을 여러 번 수행하는 경우 작업을 반복적으로 완료하기 위해 코드를 작성할 필요가 없으며 작업을 수행하는 함수를 호출하고 Python이 코드를 실행하도록 하면 됩니다.
  2. 고차 함수는 영어로 Higher-order function이라고 합니다
  3. 8.1 실제 매개변수와 형식 매개변수
 형식 매개변수: 함수가 작업을 완료하기 위해 필요한 정보입니다.

  실제 매개변수: 함수 호출 시 함수에 전달되는 정보입니다.

8.2 매개변수 전달

 함수 정의에는 여러 형식 매개변수가 포함될 수 있으므로 함수 호출에도 여러 실제 매개변수가 포함될 수 있습니다. 실제 매개변수를 함수에 전달하는 방법에는 여러 가지가 있습니다. 실제 매개변수의 순서가 형식 매개변수의 순서와 동일해야 하는 위치 매개변수를 사용할 수도 있습니다. 변수 이름과 값으로 구성됩니다. 목록과 사전도 사용할 수 있습니다.

8.2.1 위치 매개변수

1. 함수를 호출할 때 Python은 함수 호출의 각 실제 매개변수를 함수 정의의 형식 매개변수에 연결해야 합니다. 단순 연관은 실제 매개변수의 순서를 기반으로 합니다. 이 연관성을 위치 인수라고 합니다.

2. 함수에서는 필요에 따라 위치 인수를 얼마든지 사용할 수 있으며, Python은 함수 호출의 실제 매개변수를 함수 정의의 해당 형식 매개변수에 순차적으로 연결합니다.

3. 위치 인수를 사용하여 함수를 호출할 때 인수 순서가 올바르지 않으면 출력이 올바르지 않습니다.

8.2.2 키워드 인수 및 키워드 인수

  키워드 인수는 함수에 전달되는 (이름-값) 쌍입니다. 인수에서 이름과 값을 직접 연관시키므로 인수를 함수에 전달할 때 혼동이 없습니다. 키워드 인수를 사용하면 함수 호출에서 인수 순서에 대해 걱정할 필요가 없으며 함수 호출에서 각 값의 목적을 명확하게 나타냅니다.

describe_pet(animal_type='hamster', pet_name='harry') 원하는 수의 키워드 매개변수를 전달할 수 있습니다.

>> > person('Bob', 35, city='Beijing')이름: Bob 나이: 35 other: {'city': 'Beijing'} 함수를 작성할 때 각 형식 매개변수에 기본값을 지정할 수 있습니다. 호출 함수의 형식 매개변수에 대해 실제 매개변수가 제공되면 Python은 지정된 실제 매개변수 값을 사용합니다. 그렇지 않으면 형식 매개변수의 기본값이 사용됩니다. 따라서 형식 매개변수에 기본값을 할당한 후 함수 호출 시 해당 실제 매개변수를 생략할 수 있다. 기본값을 사용하면 함수 호출이 단순화되고 함수의 일반적인 용도가 명확하게 표시됩니다. 가장 큰 장점은 함수 호출의 어려움을 줄일 수 있다는 점입니다.
>>> , 성별='M', job='엔지니어')

이름: 아담 나이: 45 기타: {'성별': 'M', 'job': '엔지니어'}

8.2.3 기본값 value

 기본 매개변수는 불변 객체를 가리켜야 합니다!

def add_end(L=None): L이 None인 경우:리스트 또는 튜플 매개변수를 정의하는 것과 비교하여, 가변 매개변수를 정의하면 매개변수 앞에 * 기호만 추가됩니다. 함수 내에서 매개변수 번호는 튜플을 수신하므로 함수 코드는 완전히 변경되지 않습니다. 그러나 이 함수를 호출할 때 0개의 매개변수를 포함하여 원하는 수의 매개변수가 전달될 수 있습니다.
L = []

L.append('END')

return L

8.2. 4 변수 매개변수

def calc(*숫자): sum = 0
숫자 n의 경우:

sum = sum + n * n

return sum

>>> calc (1, 2) 514
> 또는 튜플의 요소가 가변 매개변수가 되어 전달됩니다:

>>> , 3]

>>> 계산(*숫자)

  *nums는 nums 목록의 모든 요소를 ​​변수 매개변수로 전달하는 것을 의미합니다.

8.2.5 명명된 키워드 매개변수

 키워드 매개변수의 경우 함수 호출자는 무제한의 키워드 매개변수를 전달할 수 있습니다. 전달된 내용은 함수 내부에서 kw 검사를 통과해야 합니다.

 키워드 매개변수의 이름을 제한하려면 명명된 키워드 매개변수를 사용할 수 있습니다. 예를 들어 도시와 직업만 키워드 매개변수로 받습니다. 이렇게 정의된 함수는 다음과 같습니다.

def person(이름, 나이, *, 도시, 직업):

print(이름, 나이, 도시, 직업)

및 키워드 매개변수 **kw와 달리 명명된 키워드 매개변수에는 특수 구분 기호 *가 필요하며 * 뒤에 오는 매개변수는 명명된 키워드 매개변수로 간주됩니다.

 함수 정의에 변수 매개변수가 이미 있는 경우 뒤에 오는 명명된 키워드 매개변수에는 특별한 구분 기호가 필요하지 않습니다. *:

def person(name, age, *args, city, job):

 print(name, age, args, city, job)

  명명된 키워드 매개변수는 매개변수 이름에 전달되어야 하며 이는 위치 매개변수와 다릅니다. 매개변수 이름이 전달되지 않으면 호출에서 오류를 보고합니다.

>>> person('Jack', 24, 'Beijing', 'Engineer')

Traceback(가장 최근 호출) last):

파일 "", 1행,

TypeError: person()은 2개의 위치 인수를 사용하지만 4개가 주어졌습니다

 매개변수 이름 부족으로 인해 city 및 job 호출 시 Python 설명 구현자는 이 4개의 매개변수를 위치 매개변수로 처리하지만 person() 함수는 2개의 위치 매개변수만 허용합니다.

 이름이 지정된 키워드 매개변수는 기본값(기본값)을 가질 수 있으므로 호출이 단순화됩니다.

def person(name, age, *, city='Beijing', job):

print(name, age, city, job)

명명된 키워드 매개변수 city에는 기본값이 있으므로 호출 시 도시 매개변수를 전달할 수 없습니다.

>>> ', 24 , job='Engineer')

Jack 24 Beijing Engineer

  명명된 키워드 매개변수를 정의할 때 변수 매개변수가 없으면 구분 기호 *를 쓰는 것을 잊지 마세요. 그렇지 않으면 정의가 위치에 따라 정의됩니다. 매개변수.

8.2.5 등가 함수 호출

  출력 결과는 동일하지만 호출 방법이 다릅니다.

 참고: 함수 호출이 원하는 출력을 생성하는 한 어떤 호출 방법을 사용하는지는 중요하지 않습니다. 가장 이해하기 쉬운 호출 방법을 사용하세요.

8.2.6 빈 함수(pass)

아무것도 하지 않는 빈 함수를 정의하려면 pass 문을 사용할 수 있습니다.

def nop():

pass

pass 문은 아무 작업도 수행하지 않습니다. Pass는 자리 표시자로 사용될 수 있습니다. 예를 들어 함수 코드를 작성하는 방법을 아직 파악하지 못한 경우 코드가 실행될 수 있도록 먼저 pass를 넣을 수 있습니다.

8.2.7 실제 매개변수 오류 방지

  실제 매개변수가 제공되지 않고 실제 매개변수 순서가 잘못되었으며 실제 매개변수 형식(따옴표 등)에 주의가 기울이지 않습니다.

8.2.8 전역문(전역변수)

  함수에서 전역변수에 저장된 값을 수정하려면 해당 변수에 전역문을 사용해야 합니다.

8.3 반환 값

함수는 항상 출력을 직접 표시하지는 않지만 일부 데이터를 처리하고 값 또는 값 집합을 반환할 수 있습니다. 함수가 반환하는 값을 반환값이라고 합니다. 함수의 반환 값은 return 문을 사용하여 반환됩니다.

  함수 내에서 return 문을 사용하여 함수를 호출한 코드 줄에 값을 반환할 수 있습니다. 반환 값을 사용하면 프로그램의 무거운 작업 대부분을 함수로 이동하여 기본 프로그램을 단순화할 수 있습니다.

8.3.1 여러 값 반환 ​​

import math 문은 수학 패키지를 가져오는 것을 의미하며 후속 코드에서 수학 패키지의 sin, cos 및 기타 함수를 참조할 수 있습니다. 여러 값을 반환할 수 있습니다.

사실 이것은 단지 환상일 뿐이며 Python 함수는 여전히 단일 값을 반환합니다.

>>>

>>> move(100, 100, 60, math.pi / 6)>>> print(r)

(151.96152422706632, 70.0)

 반환값은 튜플입니다! 그러나 구문상 튜플을 반환할 때 괄호는 생략할 수 있으며, 여러 변수가 동시에 튜플을 받아 위치에 따라 해당 값을 할당할 수 있으므로, 파이썬의 함수는 여러 값을 반환합니다. 실제로는 튜플을 반환하지만 작성하는 것이 더 편리합니다.

8.3.2 실제 매개변수를 선택사항으로 만드세요

if 문을 사용하여 이 실제 매개변수가 필요한지 여부를 결정하세요.

8.3.3 사전 반환

 이 함수는 목록 및 사전과 같은 보다 복잡한 데이터 구조를 포함하여 모든 유형의 값을 반환할 수 있습니다.

8.3.4 반환 함수

고차 함수는 함수를 매개변수로 받는 것 외에도 함수를 결과 값으로 반환할 수도 있습니다. 즉시 합산할 필요가 없으면 합산 결과를 반환할 수 없지만 합산 함수를 반환합니다:

deflazy_sum(*args):

def sum():

ax = 0

for n in args:

AX = AX + N

Return ax

Return Sum

lazy_sum()을 호출할 때 반환은 평화의 결과가 아니라 조화 함수의 합입니다.

>>> f =lazy_sum(1, 3, 5, 7, 9)

>> f

합계는 함수 f가 호출될 때 실제로 계산됩니다.

>>> Lazy_sum()을 호출하면 동일한 매개변수가 전달되더라도 각 호출은 새 함수를 반환합니다.

>>> f1 =lazy_sum(1, 3, 5, 7, 9)8.3.5 while

> ;>> f2 =lazy_sum (1, 3, 5, 7, 9)

> 서로 영향을 미치지 마십시오.

def get_formatted_name(first_name, last_name): """Return 깔끔한 이름""" formatted_name = get_formatted_name(f_name, l_name ) print("nHello, " + formatted_name + "!")
 full_name = first_name + ' ' + last_name ​​

​ full_name.title()을 반환

True일 때 반환:                                                                                        > : break

l_name = input("성: ")

if l_name == 'q':

8.3.6 Closure

클로저를 반환할 때 명심해야 할 한 가지는 다음과 같습니다. 반환 함수는 루프 변수를 참조해서는 안 됩니다. 그렇지 않으면 나중에 변수를 변경하게 됩니다. 루프 변수를 참조해야 하는 경우 다른 함수를 만들고 함수의 매개 변수를 사용하여 루프 변수의 현재 값을 바인딩하는 방법이 있습니다. 이후에 루프 변수가 어떻게 변경되더라도 함수 매개 변수에 바인딩된 값은 그대로 유지됩니다. 변경되지 않습니다. 단점은 코드가 길다는 것입니다. 람다 함수를 사용하면 코드를 줄일 수 있습니다.

8.3.7 익명 함수 람다

함수를 전달할 때 명시적으로 함수를 정의할 필요가 없는 경우에는 익명 함수를 직접 전달하는 것이 더 편리합니다.

 Python에서는 익명 함수에 대한 지원이 제한되어 있습니다. 여전히 map() 함수를 예로 들면, f(x)=x2를 계산할 때 f(x) 함수를 정의하는 것 외에도 익명 함수를 직접 전달할 수도 있습니다.

def count():

def f(j):

def g():

return j*j

fs = []

for i in range(1 , 4):

      fs.append(f(i)) # f(i)는 즉시 실행되므로 i의 현재 값이 f()

return fs

>>> f1, f2 , f3 = count()

>>>f1()

1

>>>f3()

9

> >> 목록(맵(람다 x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]))

[1, 4, 9, 16, 25, 36 , 49, 64, 81]

​ 익명 함수 람다 x: x * x가 실제로는

def f(x):

return x *라는 것을 비교해 보면 알 수 있습니다. x

키워드 람다(lambda)는 익명 함수를 나타내고, 콜론 앞의 x는 함수 매개변수를 나타냅니다. 익명 함수에는 하나의 표현식만 가질 수 있다는 제한이 있습니다. 반환 값은 표현식의 결과입니다.

익명 함수를 사용하면 함수에 이름이 없으므로 함수 이름 충돌을 걱정할 필요가 없다는 장점이 있습니다. 또한 익명 함수는 함수 개체이기도 합니다. 익명 함수를 변수에 할당한 다음 해당 변수를 사용하여 함수를 호출할 수도 있습니다.

>>> * x

>>>f

<0x101c6ef28의 함수

>>>

8.4 목록 전달

  이름의 이름: 함수에 목록을 전달하는 것이 유용한 경우가 많습니다. 이 목록에는 이름, 숫자 또는 더 복잡한 개체(예: 사전)가 포함될 수 있습니다. 목록이 함수에 전달되면 함수는 해당 내용에 직접 액세스할 수 있습니다. 목록 처리의 효율성을 높이려면 아래 기능을 사용하세요.

8.4.1 함수 내 리스트 수정

  1. 리스트를 함수에 전달한 후 함수에서 수정할 수 있습니다. 함수 내에서 이 목록에 대한 모든 수정 사항은 영구적이므로 많은 양의 데이터를 효율적으로 처리할 수 있습니다.

 2. 추가 팝업 추가 또는 삭제

  3. 함수는 작업을 완료하고, 함수는 서로 호출할 수 있습니다. 유지 관리 및 수정을 용이하게 하기 위해 기능을 최적화합니다.

8.4.2 함수 수정은 금지됩니다

 이 문제를 해결하려면 이런 방식으로 원본 대신 목록의 복사본을 함수에 전달할 수 있습니다. 전혀 원본.

 function_name(list_name[:]), [:]은 복사와 동일합니다.

8.5 실제 매개변수 전달(가변 매개변수)

때로는 함수가 허용해야 하는 실제 매개변수의 수를 미리 알 수 없습니다. 다행히 Python에서는 함수가 호출 문에서 실제 매개변수를 원하는 만큼 수집할 수 있습니다. .

  def make_pizza(*toppings):

  매개변수 이름 *toppings의 별표는 Python에게 toppings라는 이름의 빈 튜플을 생성하고 수신된 모든 값을 이 튜플에 캡슐화하도록 지시합니다. 함수 본문의 print 문은 Python이 하나의 값으로 함수 호출을 처리할 수 있을 뿐만 아니라 세 개의 값으로 함수를 호출할 수 있음을 보여주는 출력을 생성합니다. 비슷한 방식으로 다른 호출을 처리합니다. 함수가 단일 값만 수신하는 경우에도 Python은 인수를 튜플로 캡슐화합니다.

8.5.1 위치 인수와 가변 인수 결합

 함수가 다양한 유형의 인수를 허용하도록 하려면 함수 정의의 마지막에 임의 개수의 인수를 허용하는 형식 매개변수를 넣어야 합니다. Python은 먼저 위치 인수와 키워드 인수를 일치시킨 다음 나머지 인수를 마지막 형식 매개변수로 수집합니다.

8.5.2 가변 인수 및 키워드 인수 사용

 def build_profile(first, last, **user_info):

 build_profile() 함수의 정의에는 이름과 성이 필요하며 사용자는 원하는 만큼 제공할 수 있습니다. 이름-값 쌍이 필요합니다. 형식 매개변수 **user_info에 있는 두 개의 별표는 Python에게 user_info라는 빈 사전을 생성하고 이 사전에 수신된 모든 이름-값 쌍을 캡슐화하도록 지시합니다. 이 함수에서 user_info의 이름-값 쌍은 다른 사전처럼 액세스할 수 있습니다.

키의 경우 user_info.items()의 값:   

  profile[key] = value

user_profile = build_profile('albert', 'einstein', location='princeton', field='physics')

8.5 .3 매개변수 조합 사용

 1. Python에서 함수를 정의할 때 필수 매개변수, 기본 매개변수, 변수 매개변수, 키워드 매개변수, 명명된 키워드 매개변수를 조합하여 사용할 수 있습니다. 하지만 매개변수 정의 순서는 필수 매개변수, 기본 매개변수, 변수 매개변수, 명명된 키워드 매개변수, 키워드 매개변수 순이어야 합니다.

  2. Python의 함수는 간단한 호출을 구현할 수 있을 뿐만 아니라 매우 복잡한 매개변수를 전달할 수도 있는 매우 유연한 매개변수 형식을 가지고 있습니다.

 3. 기본 매개변수는 불변 객체를 사용해야 합니다. 가변 객체인 경우 프로그램 실행 시 논리 오류가 발생합니다!

 4. 변수 매개변수와 키워드 매개변수를 정의하는 구문에 주의하세요.

 5.*args는 변수 매개변수이고 args는 튜플을 받습니다.

 6.**kw는 키워드 매개변수이고 kw receive는 딕셔너리

 7. 그리고 함수 호출 시 변수 매개변수와 키워드 매개변수를 전달하는 방법에 대한 구문:

 변수 매개변수는 직접 전달할 수 있습니다: func(1, 2, 3) 또는 먼저 목록이나 튜플을 조합할 수 있습니다 , 그리고 *args를 통해 전달: func(*(1, 2, 3));

 키워드 매개변수는 직접 전달될 수 있습니다: func(a=1, b=2), 또는 먼저 dict를 조합할 수 있습니다 그런 다음 ** kw를 전달합니다: func(**{'a': 1, 'b': 2}).

 *args와 **kw를 사용하는 것은 Python의 관용어입니다. 물론 다른 매개변수 이름을 사용할 수도 있지만 관용구를 사용하는 것이 가장 좋습니다.

8.5.4 재귀 매개변수

함수 내에서 다른 함수를 호출할 수 있습니다. 함수가 내부 에서 자신을 호출하면 해당 함수는 재귀적입니다. 재귀 함수의 장점은 간단한 정의와 명확한 논리입니다. 이론적으로 모든 재귀 함수는 루프로 작성할 수 있지만 루프의 논리는 재귀만큼 명확하지 않습니다.

def 사실(n):

if n==1:

return 1

return n *fact(n - 1)

 재귀 함수를 사용할 때는 스택 오버플로를 방지하도록 주의해야 합니다. 컴퓨터에서 함수 호출은 스택의 데이터 구조를 통해 구현됩니다. 함수 호출이 입력될 때마다 스택 프레임이 스택에 추가됩니다. 스택 크기는 무한하지 않기 때문에 재귀 호출이 너무 많으면 스택 오버플로가 발생합니다.

하노이 타워의 움직임은 재귀 함수를 사용하여 매우 간단하게 구현할 수 있습니다.

8.6 고차 함수

8.6.1 고차 함수

변수가 함수를 가리킬 수 있고 함수의 매개변수가 변수를 받을 수 있으므로 함수가 다른 함수를 매개변수로 받을 수 있는 것을 이런 종류의 함수라고 합니다. 고차 함수.

def add(x, y, f):

return f(x) + f(y)

8.6.2 내장 함수

1. 절대값 찾기 value 함수 abs()에는 매개변수가 하나만 있습니다.

  2. 객체 유형을 확인하려면 type() 함수를 사용하세요:

>>> type(123)

>>> ; type( 'str')

>>> type(None)

  3. 제곱근을 계산합니다. math.sqrt() 함수를 호출합니다.

 4.lower()는 소문자 문자열을 반환합니다.

 5.__len__ 메소드는 길이를 반환합니다. Python에서 객체의 길이를 가져오기 위해 len() 함수를 호출하면 실제로 len() 함수 내에서 자동으로 객체의 __len__() 메서드를 호출하므로 다음 코드는 동일합니다.

>>> len('ABC')

3

>>'ABC'.__len__()

3

 6. 최대 기능 ()는 원하는 수의 매개변수를 받을 수 있으며 가장 큰 매개변수를 반환합니다.

 7. 객체의 모든 속성과 메소드를 얻으려면 문자열이 포함된 목록을 반환하는 dir() 함수를 사용할 수 있습니다. 예를 들어 str 객체의 모든 속성과 메소드를 얻으려면:

 8. Python 내장 hex() 함수는 정수를 16진수 문자열로 변환합니다.

 9. 클래스 상속 관계에서는 type()을 사용하는 것이 매우 불편합니다. 클래스 유형을 결정하려면 isinstance() 함수를 사용할 수 있습니다. 매개변수 유형이 확인되며 정수 및 부동 소수점 유형 매개변수만 허용됩니다. 내장 함수 isinstance()를 사용하여 데이터 유형 검사를 구현할 수 있습니다. 내장 isinstance 함수를 사용하여 변수가 문자열인지 확인합니다.

 10. getattr(), setattr() 및 hasattr()을 사용하면 객체의 상태를 직접 조작할 수 있습니다.

>>> hasattr(obj, 'x') # 'x' 속성이 있나요?

True

>>> obj.x

9

>>> hasattr(obj, 'y') # 'y' 속성이 있나요?

False

>>> setattr(obj, 'y', 19) # 'y' 속성을 설정합니다

>>> hasattr(obj, 'y') # 속성이 'y'입니다. ?

True

>>> getattr(obj, 'y') # 'y' 속성 가져오기

19

>>> obj.y # 'y' 속성 가져오기

19

일련의 내장 함수를 통해 Python 객체를 분석하고 내부 데이터를 얻을 수 있습니다. 객체 정보를 모르는 경우에만 객체 정보를 얻을 수 있다는 점에 유의해야 합니다.

 11.Python에는 map() 및 Reduce() 기능이 내장되어 있습니다. map은 전달된 함수를 시퀀스의 각 요소에 차례로 적용하고 결과를 새 Iterator로 반환합니다.

>>> def f(x):

... Return x * x

...

>>> , 3, 4, 5, 6, 7, 8, 9])

>>> 목록(r)

[1, 4, 9, 16, 25, 36, 49, 64, 81]

 리듀스 사용법. Reduce는 시퀀스 [x1, x2, x3, ...]에 함수를 적용합니다. 이 함수는 두 개의 매개변수를 받아야 하며 결과를 계속해서 시퀀스의 다음 요소로 누적 계산을 수행합니다.

 12.Python의 내장 filter() 함수는 시퀀스를 필터링하는 데 사용됩니다. filter()는 또한 함수와 시퀀스 를 받습니다. map()과 달리 filter()는 전달된 함수를 각 요소에 차례로 적용한 다음 반환 값이 True인지 False인지에 따라 요소를 유지할지 또는 삭제할지 결정합니다. 핵심은 "필터" 기능을 올바르게 구현하는 것입니다. filter() 함수는 지연 시퀀스인 Iterator를 반환하므로 filter()가 계산 결과를 완료하도록 강제하려면 list() 함수를 사용하여 모든 결과를 얻고 목록을 반환해야 합니다.

>>> from functools import Reduce

>> def fn(x, y):

... x * 10 + y

...

>>> 축소(fn, [1, 3, 5, 7, 9])

13579

def is_odd(n):

반환 n % 2 == 1

list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))

# 결과: [1, 5, 9, 15]

  13. Python에 내장된 sorted() 함수를 사용하면 목록을 정렬할 수 있습니다.

>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True)

> .sorted() 함수는 절대값 정렬과 같은 사용자 정의 정렬을 구현하는 핵심 함수이기도 합니다. 역방향 정렬을 수행하려면 키 기능을 변경할 필요가 없습니다. 세 번째 매개변수 reverse=True를 전달할 수 있습니다.

['Zoo', ' Credit', 'bob', 'about']

8.6.3 Decorator 코드가 실행되는 동안 동적으로 기능을 추가하는 방식을 "Decorator"라고 합니다. 기본적으로 데코레이터는 함수를 반환하는 고차 함수입니다. Decorator: 기능 자체를 변경하지 않고 새로운 기능을 추가합니다.

  15. Python의 내장 열거 함수는 목록을 인덱스-요소 쌍으로 변환할 수 있으므로 인덱스와 요소 자체가 동시에 반복될 수 있습니다. for 루프의 시간.

 16. round() 함수는 소수점 이하 자릿수를 반환할 수 있습니다.

함수 객체에는 __name__ 속성이 있으며, 함수 이름을 얻을 수 있습니다:

>>> def now():

... print('2015-3-25' )

...>>> f()

2015-3-25

>>>지금 '

>> 그렇지 않은 경우 isinstance(value, int) :

                                           ._score = 값

  @property는 클래스 정의에 널리 사용되어 호출자가 매개변수에 대해 필요한 확인을 보장하면서 짧은 코드를 작성할 수 있도록 하여 프로그램이 실행될 때 오류가 발생할 가능성을 줄입니다.

 @unique 데코레이터는 중복된 값이 없는지 확인하는 데 도움이 될 수 있습니다.

8.7 모듈에 함수 저장

유지 관리 가능한 코드를 작성하려면 많은 함수를 여러 파일로 그룹화하여 각 파일에 상대적으로 적은 코드가 포함되도록 할 수 있습니다. Python에서는 .py 파일을 모듈(Module)이라고 합니다.

 함수의 장점 중 하나는 기본 프로그램에서 코드 블록을 분리할 수 있다는 것입니다. 함수에 설명적인 이름을 지정하면 기본 프로그램을 훨씬 더 쉽게 이해할 수 있습니다. 한 단계 더 나아가 모듈이라는 별도의 파일에 기능을 저장한 다음 모듈을 기본 프로그램으로 가져올 수 있습니다. import 문을 사용하면 모듈의 코드를 현재 실행 중인 프로그램 파일에서 사용할 수 있습니다.

 함수를 별도의 파일에 저장하면 프로그램 코드의 세부 사항을 숨기고 프로그램의 상위 수준 논리에 집중할 수 있습니다. 또한 이를 통해 다양한 프로그램에서 기능을 재사용할 수 있습니다. 기능을 별도의 파일에 저장하면 전체 프로그램이 아닌 다른 프로그래머와 해당 파일을 공유할 수 있습니다. 함수를 가져오는 방법을 알면 다른 프로그래머가 작성한 함수 라이브러리를 사용할 수도 있습니다.

 모듈 이름 충돌을 피하기 위해 Python에서는 패키지라고 하는 디렉터리별로 모듈을 구성하는 방법을 도입했습니다. 패키지가 도입된 후 최상위 패키지 이름이 다른 패키지 이름과 충돌하지 않는 한 모든 모듈은 다른 모듈과 충돌하지 않습니다. 이제 abc.py의 모듈 이름은 mycompany.abc가 되고, 마찬가지로 xyz.py의 모듈 이름은 mycompany.xyz가 됩니다.

각 패키지 디렉터리 아래에는 __init__.py 파일이 있어야 합니다. 그렇지 않으면 Python은 이 디렉터리를 패키지가 아닌 일반 디렉터리로 처리합니다. __init__.py는 빈 파일이거나 Python 코드를 포함할 수 있습니다. __init__.py 자체가 모듈이고 해당 모듈 이름이 mycompany이기 때문입니다.

8.7.1 전체 모듈 가져오기

  함수를 가져오기 가능하게 만들려면 먼저 모듈을 만들어야 합니다. 모듈은 프로그램으로 가져올 코드가 포함된 .py 확장자를 가진 파일입니다.

if __name__=='__main__':

Test()

모듈을 사용하는 첫 번째 단계는 명령줄에서 hello 모듈 파일을 실행할 때 모듈을 가져오는 것입니다. Python 인터프리터 특수 변수 __name__은 __main__으로 설정되며, hello 모듈을 다른 곳에서 가져오면 if 판단이 실패합니다. 따라서 이 if 테스트를 통해 모듈은 명령줄을 통해 실행할 때 일부 추가 코드를 실행할 수 있습니다. 요점은 테스트를 실행하는 것입니다.

8.7.2 범위

 모듈에서는 많은 함수와 변수를 정의할 수 있지만 일부 함수와 변수는 다른 사람이 사용하고 싶고 일부 함수와 변수는 모듈 내부에서만 사용하고 싶습니다. Python에서는 _ 접두사를 통해 이를 수행합니다. 일반 함수 및 변수 이름은 공개되어 abc, x123, PI 등과 같이 직접 참조될 수 있습니다. __xxx__와 같은 변수는 특수 변수이며 직접 참조될 수 있지만 위와 같이 특수한 목적을 갖습니다. __author__ 및 __name__ 특수 변수입니다. hello 모듈에 의해 정의된 문서 주석은 특수 변수 __doc__를 사용하여 액세스할 수도 있습니다. 일반적으로 _xxx 및 __xxx와 같은 변수에는 이 변수 ​​이름을 사용해서는 안 됩니다. _abc, __abc 등과 같이 직접 참조하면 안 됩니다.

개인 함수나 변수는 다른 사람이 참조하면 안 되는데, 그 용도는 무엇인가요? 예를 참조하세요:

  Greeting() 함수를 모듈에 노출시키고 private 함수로 내부 로직을 숨기므로, Greeting() 함수를 호출할 때 내부 private 함수의 세부 사항에 대해 걱정할 필요가 없습니다. 또한 매우 유용한 코드 캡슐화 및 추상화 방법입니다. 즉, 외부에서 참조할 필요가 없는 모든 함수는 비공개로 정의되고, 외부에서 참조해야 하는 함수만 공개로 정의됩니다.

8.7.3 특정 모듈 가져오기

  여러 기능을 모듈에 저장하고 쉼표로 구분하여 모듈에서 원하는 만큼의 기능을 가져옵니다.

8.7.4 as를 사용하여 함수의 별칭을 지정하세요

 from pizza import make_pizza as mp

 가져올 함수 이름이 프로그램의 기존 이름과 충돌할 수 있거나 함수 이름이 다음과 같은 경우 너무 길면 짧고 고유한 별칭을 지정할 수 있습니다. 별명 - 별명과 유사한 기능의 또 다른 이름입니다. 이 특수 별명을 기능에 지정하려면 해당 기능을 가져올 때 지정해야 합니다.

8.7.5 as를 사용하여 모듈의 별칭을 지정하세요

  모듈의 별칭을 지정할 수도 있습니다. 모듈에 짧은 별칭을 할당하면(예: 피자 모듈에 별칭 p를 할당) 모듈에서 함수를 더 쉽게 호출할 수 있습니다. pizza.make_pizza()에 비해 p.make_pizza()가 더 간결합니다.

8.7.6 *를 사용하여 모듈의 모든 함수를 가져오세요

별표(*) 연산자를 사용하면 Python이 모듈의 모든 함수를 가져올 수 있습니다.

그러나 직접 작성하지 않은 대규모 모듈을 사용할 때는 이 가져오기 방법을 사용하지 않는 것이 가장 좋습니다. 모듈에 프로젝트에 사용된 것과 동일한 이름을 가진 함수가 있는 경우 예기치 않은 결과가 발생할 수 있습니다. Python에서는 동일한 이름을 가진 여러 함수 또는 변수가 발생할 수 있으므로 모든 함수를 개별적으로 가져오는 대신 함수를 재정의할 수 있습니다.

8.8 함수 작성 가이드

함수를 작성할 때 몇 가지 세부 사항을 염두에 두어야 합니다.

 1. 함수에는 설명이 포함된 이름을 지정하고 소문자와 밑줄만 사용해야 합니다. 설명적인 이름은 귀하와 다른 사람들이 코드가 수행하려는 작업을 이해하는 데 도움이 됩니다. 모듈 이름을 지정할 때도 위의 규칙을 따라야 합니다.

  2. 각 함수에는 해당 함수를 간략하게 설명하는 주석이 포함되어야 합니다. 이 주석은 함수 정의를 따라야 하며 docstring 형식을 사용해야 합니다. 잘 문서화된 함수를 사용하면 다른 프로그래머가 문서 문자열의 설명을 읽기만 하면 함수를 사용할 수 있습니다. 함수 이름, 필수 인수 및 유형을 알고 있는 한 코드가 설명된 대로 작동할 것이라고 신뢰할 수 있습니다. 반환 값은 자신의 프로그램에서 사용할 수 있습니다.

  3.형식 매개변수의 기본값을 지정할 때 등호 양쪽에 공백이 없어야 합니다.

def _private_1(이름):

return '안녕하세요, %s' % name

def _private_2(이름):

return '안녕하세요, %s' % name

TDef 인사말(이름):

if len(이름) & gt; 3:

Return_private_1(이름)

else:

Return_Private_2(이름)

위 내용은 Python 기본 소개--함수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

MySQL은 지불해야합니다 MySQL은 지불해야합니다 Apr 08, 2025 pm 05:36 PM

MySQL에는 무료 커뮤니티 버전과 유료 엔터프라이즈 버전이 있습니다. 커뮤니티 버전은 무료로 사용 및 수정할 수 있지만 지원은 제한되어 있으며 안정성이 낮은 응용 프로그램에 적합하며 기술 기능이 강합니다. Enterprise Edition은 안정적이고 신뢰할 수있는 고성능 데이터베이스가 필요하고 지원 비용을 기꺼이 지불하는 응용 프로그램에 대한 포괄적 인 상업적 지원을 제공합니다. 버전을 선택할 때 고려 된 요소에는 응용 프로그램 중요도, 예산 책정 및 기술 기술이 포함됩니다. 완벽한 옵션은없고 가장 적합한 옵션 만 있으므로 특정 상황에 따라 신중하게 선택해야합니다.

설치 후 MySQL을 사용하는 방법 설치 후 MySQL을 사용하는 방법 Apr 08, 2025 am 11:48 AM

이 기사는 MySQL 데이터베이스의 작동을 소개합니다. 먼저 MySQLworkBench 또는 명령 줄 클라이언트와 같은 MySQL 클라이언트를 설치해야합니다. 1. MySQL-Uroot-P 명령을 사용하여 서버에 연결하고 루트 계정 암호로 로그인하십시오. 2. CreateABase를 사용하여 데이터베이스를 작성하고 데이터베이스를 선택하십시오. 3. CreateTable을 사용하여 테이블을 만들고 필드 및 데이터 유형을 정의하십시오. 4. InsertInto를 사용하여 데이터를 삽입하고 데이터를 쿼리하고 업데이트를 통해 데이터를 업데이트하고 DELETE를 통해 데이터를 삭제하십시오. 이러한 단계를 마스터하고 일반적인 문제를 처리하는 법을 배우고 데이터베이스 성능을 최적화하면 MySQL을 효율적으로 사용할 수 있습니다.

고로드 애플리케이션의 MySQL 성능을 최적화하는 방법은 무엇입니까? 고로드 애플리케이션의 MySQL 성능을 최적화하는 방법은 무엇입니까? Apr 08, 2025 pm 06:03 PM

MySQL 데이터베이스 성능 최적화 안내서 리소스 집약적 응용 프로그램에서 MySQL 데이터베이스는 중요한 역할을 수행하며 대규모 트랜잭션 관리를 담당합니다. 그러나 응용 프로그램 규모가 확장됨에 따라 데이터베이스 성능 병목 현상은 종종 제약이됩니다. 이 기사는 일련의 효과적인 MySQL 성능 최적화 전략을 탐색하여 응용 프로그램이 고 부하에서 효율적이고 반응이 유지되도록합니다. 실제 사례를 결합하여 인덱싱, 쿼리 최적화, 데이터베이스 설계 및 캐싱과 같은 심층적 인 주요 기술을 설명합니다. 1. 데이터베이스 아키텍처 설계 및 최적화 된 데이터베이스 아키텍처는 MySQL 성능 최적화의 초석입니다. 몇 가지 핵심 원칙은 다음과 같습니다. 올바른 데이터 유형을 선택하고 요구 사항을 충족하는 가장 작은 데이터 유형을 선택하면 저장 공간을 절약 할 수있을뿐만 아니라 데이터 처리 속도를 향상시킬 수 있습니다.

MySQL 설치 후 데이터베이스 성능을 최적화하는 방법 MySQL 설치 후 데이터베이스 성능을 최적화하는 방법 Apr 08, 2025 am 11:36 AM

MySQL 성능 최적화는 설치 구성, 인덱싱 및 쿼리 최적화, 모니터링 및 튜닝의 세 가지 측면에서 시작해야합니다. 1. 설치 후 innodb_buffer_pool_size 매개 변수와 같은 서버 구성에 따라 my.cnf 파일을 조정해야합니다. 2. 과도한 인덱스를 피하기 위해 적절한 색인을 작성하고 Execution 명령을 사용하여 실행 계획을 분석하는 것과 같은 쿼리 문을 최적화합니다. 3. MySQL의 자체 모니터링 도구 (showprocesslist, showstatus)를 사용하여 데이터베이스 건강을 모니터링하고 정기적으로 백업 및 데이터베이스를 구성하십시오. 이러한 단계를 지속적으로 최적화함으로써 MySQL 데이터베이스의 성능을 향상시킬 수 있습니다.

MySQL은 인터넷이 필요합니까? MySQL은 인터넷이 필요합니까? Apr 08, 2025 pm 02:18 PM

MySQL은 기본 데이터 저장 및 관리를위한 네트워크 연결없이 실행할 수 있습니다. 그러나 다른 시스템과의 상호 작용, 원격 액세스 또는 복제 및 클러스터링과 같은 고급 기능을 사용하려면 네트워크 연결이 필요합니다. 또한 보안 측정 (예 : 방화벽), 성능 최적화 (올바른 네트워크 연결 선택) 및 데이터 백업은 인터넷에 연결하는 데 중요합니다.

MongoDB 데이터베이스 비밀번호를 보는 Navicat의 방법 MongoDB 데이터베이스 비밀번호를 보는 Navicat의 방법 Apr 08, 2025 pm 09:39 PM

해시 값으로 저장되기 때문에 MongoDB 비밀번호를 Navicat을 통해 직접 보는 것은 불가능합니다. 분실 된 비밀번호 검색 방법 : 1. 비밀번호 재설정; 2. 구성 파일 확인 (해시 값이 포함될 수 있음); 3. 코드를 점검하십시오 (암호 하드 코드 메일).

hadidb : 파이썬의 가볍고 수평 확장 가능한 데이터베이스 hadidb : 파이썬의 가볍고 수평 확장 가능한 데이터베이스 Apr 08, 2025 pm 06:12 PM

HADIDB : 가볍고 높은 수준의 확장 가능한 Python 데이터베이스 HadIDB (HADIDB)는 파이썬으로 작성된 경량 데이터베이스이며 확장 수준이 높습니다. PIP 설치를 사용하여 HADIDB 설치 : PIPINSTALLHADIDB 사용자 관리 사용자 만들기 사용자 : createUser () 메소드를 작성하여 새 사용자를 만듭니다. Authentication () 메소드는 사용자의 신원을 인증합니다. Fromhadidb.operationimportuseruser_obj = user ( "admin", "admin") user_obj.

MySQL Workbench가 Mariadb에 연결할 수 있습니다 MySQL Workbench가 Mariadb에 연결할 수 있습니다 Apr 08, 2025 pm 02:33 PM

MySQL Workbench는 구성이 올바른 경우 MariadB에 연결할 수 있습니다. 먼저 커넥터 유형으로 "mariadb"를 선택하십시오. 연결 구성에서 호스트, 포트, 사용자, 비밀번호 및 데이터베이스를 올바르게 설정하십시오. 연결을 테스트 할 때는 마리아드 브 서비스가 시작되었는지, 사용자 이름과 비밀번호가 올바른지, 포트 번호가 올바른지, 방화벽이 연결을 허용하는지 및 데이터베이스가 존재하는지 여부를 확인하십시오. 고급 사용에서 연결 풀링 기술을 사용하여 성능을 최적화하십시오. 일반적인 오류에는 불충분 한 권한, 네트워크 연결 문제 등이 포함됩니다. 오류를 디버깅 할 때 오류 정보를 신중하게 분석하고 디버깅 도구를 사용하십시오. 네트워크 구성을 최적화하면 성능이 향상 될 수 있습니다

See all articles