찾다
백엔드 개발파이썬 튜토리얼Python의 함수 일부 분석

Python의 함수 일부 분석

Sep 28, 2018 pm 02:10 PM
파이썬 함수

이 기사의 내용은 Python의 일부 기능에 대한 것입니다. 특정 참고 가치가 있으므로 도움이 될 수 있습니다.

파이썬에서 변수에는 유형이 없으며 객체에 대한 참조이며 유형은 객체에 속합니다
변수는 본질적으로 자리 표시자입니다! 변수 이름은 일반적으로 소문자로 지정됩니다.

1 함수: 매개변수는 올바른 순서로 함수에 전달되어야 합니다.

(2) 기본 매개변수 기능: 매개변수가 전달되지 않으면 기본 매개변수가 마지막에 없으면 오류가 발생합니다. 신고당하다!


(3) 키워드 매개변수: 함수 호출은 키워드 매개변수를 사용하여 전달된 매개변수 값을 결정합니다. ​

(4) 무한 길이 매개변수: 함수는 원래 선언되었을 때보다 더 많은 매개변수를 처리할 수 있습니다. 모두

①*args 변수는 이름이 지정되지 않은 모든 변수를 저장하기 위해 튜플로 패킹됩니다

② **args의 모든 변수는 사전에 패킹됩니다

(5) 함수를 선언할 때 매개변수의 별표 *는 단독으로 나타날 수 있으며 * 뒤에 하나가 나타날 수 있습니다. 매개변수는 키워드를 사용하여 전달되어야 합니다

(6) 익명 함수, 익명 함수를 만들려면 람다 함수를 사용하세요

①lambda는 표현식일 뿐이고 함수 본문은 def보다 훨씬 간단합니다

②람다의 본체는 표현식입니다. 코드가 아님 블록
③ 함수에는 자체 네임스페이스가 있으며 자체 매개변수 목록 외부 또는 전역 네임스페이스에 있는 매개변수에 액세스할 수 없습니다.

3: Python 함수의 매개변수 전달:

불변 유형:

int, string, tuple과 같은 C++ 값 전달과 유사합니다.

fun(a)와 같이 a의 값만 전달되며 a 객체 자체에는 영향을 주지 않습니다.
예를 들어 내부 fun(a)의 값을 수정하면 복사된 다른 객체만 수정되고 a 자체에는 영향을 주지 않습니다.

변수 유형:

목록 및 사전과 같은 C++ 참조 전달과 유사합니다. 예를 들어 fun(la)은 la가 실제로 전달된다는 의미입니다. 수정 후에는 fun 외부의 la도 영향을 받습니다. 엄격한 의미에서 값으로 전달되는지 아니면 참조로 전달되는지 말할 수 없습니다. . 가변 객체 및 가변 객체 전달

Four: 변수 범위


파이썬에는 일반적으로 4가지 유형의 범위가 있습니다:

L(로컬) 로컬 범위

E(인클로징) 클로저 함수 외부

G (글로벌) 글로벌 스코프

B (내장) 내장 스코프

검색 규칙은 L->E->G->B

모듈, 클래스, Python의 함수(def, 람다)는 새로운 범위를 도입하지만, 다른 코드 블록(예: if/elif/else/, try/제외, for/while 등)은 새로운 범위를 도입하지 않습니다. 내부적으로 정의된 변수는 외부에서도 접근이 가능합니다.

다섯: 전역 변수와 지역 변수

함수 내부에 정의된 변수는 지역 범위를 가지며, 함수 외부에서 정의된 변수는 전역 범위를 갖습니다.

내부 범위가 외부 범위의 변수를 수정하려는 경우 전역 및 비지역 키워드가 사용됩니다.

(1) global은 전역 변수의 값을 수정하는 데 사용됩니다.

(2) nonlocal 중첩 범위(포함 범위, 외부 비전역 범위)의 변수를 수정하려면 nonlocal 키워드가 필요합니다

여섯: 함수 호출 팁(중요)

함수 이름.__doc__ 함수의 도움말 문서 가져오기

함수 이름은 다른 함수의 형식 매개 변수로 사용할 수 있습니다.

여러 반환 값은 다음과 같은 형식으로 반환됩니다. 튜플

내부 함수, 수정을 통해 전역 변수에 액세스할 수 없습니다! !

내부 함수, 같은 이름의 전역 변수를 수정하면 파이썬은 이를 지역 변수로 인식합니다! !

세븐: 네이밍에 대해서

(1) 파일명 : 모두 소문자, 밑줄 사용 가능

(2) 함수명 : 소문자, 소문자 카멜케이스 원칙

(3) 변수명 : 모두 소문자, 밑줄 연결

자세한 명명 규칙은 PEP8

eight: 여러 특수 기능

map

Reduce

filter

# --------------------------------------------------------------------------#
# 函数的语法及调用
# --------------------------------------------------------------------------#


def func(func_name, number):        # 函数的定义
    """打印输入的任何字符串"""
    print(func_name, number)
    return 'Done'


func('func_1', 'faith')             # 函数的调用

# --------------------------------------------------------------------------#
# 不定长参数函数,封装成元组
# --------------------------------------------------------------------------#


def func_1(func_name, *number):
    """
    打印输入的任何字符串
    """
    print(type(number))
    print(func_name, number)
    return 'Done'


func_1('func_1', 1, 2, 2, 3)


def func_2(func_name, number):   #
    print(type(number))
    print(func_name, number)
    return 'Done'


func_2('func_2', (1, 2, 2, 3))


def func_3(func_name, *number):
    print(func_name)
    print(number[3])            # 根据元组index中一部分变量
    print(number[4])
    return 'Done'


func_3('func_3', 1, 2, 2, 3, 'aaa', 'abc')


# get out question: the number of index isn't known in most case!
# --------------------------------------------------------------------------#
# 不定长参数函数,封装成字典
# --------------------------------------------------------------------------#


def func_4(func_name, **number):  # 可变参数必须在函数参数的最后
    # print(type(number))
    print(func_name, number)
    return 'Done'


func_4('func_4', name='faith')

# --------------------------------------------------------------------------#
# 命名关键字函数
# --------------------------------------------------------------------------#


def func_5(a, x, c, *, china, uk):
    print('func_5:', china, uk)
    print(a, x, c)


func_5(1, 2, 3, china='bJ', uk='rs')    # 调用时必须加上关键字
# func_5(1, 2, 3, 'bJ', 'rs')

# --------------------------------------------------------------------------#
# 函数应用之-递归
# --------------------------------------------------------------------------#


def my_sum(i):
    if i < 0:
        raise ValueError    # 抛出错误
    elif i <= 1:
        return i
    else:
        return i + my_sum(i - 1)


print(my_sum(1.4))

# --------------------------------------------------------------------------#
# 传递不可变对象实例
# --------------------------------------------------------------------------#


def change_int(a):
    a = 10


b = 2
change_int(b)
print(b)         # 结果是2
# --------------------------------------------------------------------------#
# 传递可变对象实例
# --------------------------------------------------------------------------#


def change_me(mylist):
    mylist.append([1, 2, 3, 4])
    print("函数内取值: ", mylist)
    return


myList = [10, 20, 30]
change_me(myList)
print("函数外取值: ", myList)

# --------------------------------------------------------------------------#
# 函数内修改全局变量的值
# --------------------------------------------------------------------------#

money = 200  # 模块里面的全局变量


def add_money():
    global money
    money = money + 1
    return money


print("修改后的值money = ", add_money())


# --------------------------------------------------------------------------#
# 匿名函数
# --------------------------------------------------------------------------#
sum_1 = lambda arg1, arg2: arg1 + arg2

# 调用sum函数
print("相加后的值为 : ", sum_1(10, 20))
print("相加后的值为 : ", sum_1(20, 20))

# 单独编译一个文件时候输出结果
if __name__ == "__main__":
    pass
를 참조하세요.

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

성명
이 기사는 博客园에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
파이썬 목록을 어떻게 슬라이스합니까?파이썬 목록을 어떻게 슬라이스합니까?May 02, 2025 am 12:14 AM

slicepaythonlistisdoneusingthesyntaxlist [start : step : step] .here'showitworks : 1) startistheindexofthefirstelementtoinclude.2) stopistheindexofthefirstelemement.3) stepisincrementbetwetweentractionsoftortionsoflists

Numpy Array에서 수행 할 수있는 일반적인 작업은 무엇입니까?Numpy Array에서 수행 할 수있는 일반적인 작업은 무엇입니까?May 02, 2025 am 12:09 AM

NumpyAllowsForVariousOperationsOnArrays : 1) BasicArithmeticLikeadDition, Subtraction, A 및 Division; 2) AdvancedOperationsSuchasmatrixmultiplication; 3) extrayintondsfordatamanipulation; 5) Ag

파이썬으로 데이터 분석에 어레이가 어떻게 사용됩니까?파이썬으로 데이터 분석에 어레이가 어떻게 사용됩니까?May 02, 2025 am 12:09 AM

Arraysinpython, 특히 Stroughnumpyandpandas, areestentialfordataanalysis, setingspeedandefficiency

목록의 메모리 풋 프린트는 파이썬 배열의 메모리 풋 프린트와 어떻게 비교됩니까?목록의 메모리 풋 프린트는 파이썬 배열의 메모리 풋 프린트와 어떻게 비교됩니까?May 02, 2025 am 12:08 AM

ListSandnumpyArraysInpythonHavedifferentmoryfootPrints : ListSaremoreFlexibleButlessMemory-Efficer, whilumpyArraySareOptimizedFornumericalData.1) ListSTorERENFERENCESTOOBJECTS, OverHeadAround64ByTeson64-BitSyStems.2) NumpyArraysTATACONTACOTIGUOU

실행 파이썬 스크립트를 배포 할 때 환경 별 구성을 어떻게 처리합니까?실행 파이썬 스크립트를 배포 할 때 환경 별 구성을 어떻게 처리합니까?May 02, 2025 am 12:07 AM

ToensurePythonScriptTscriptsBecorrectelyRossDevelopment, Staging and Production, UsethesEStrategies : 1) EnvironmberVariblesForsimplesettings, 2) ConfigurationFilesforcomplexSetups 및 3) DynamicLoadingForAdAptability

파이썬 어레이를 어떻게 슬라이스합니까?파이썬 어레이를 어떻게 슬라이스합니까?May 01, 2025 am 12:18 AM

Python List 슬라이싱의 기본 구문은 목록 [start : stop : step]입니다. 1. Start는 첫 번째 요소 인덱스, 2.Stop은 첫 번째 요소 인덱스가 제외되고 3. Step은 요소 사이의 단계 크기를 결정합니다. 슬라이스는 데이터를 추출하는 데 사용될뿐만 아니라 목록을 수정하고 반전시키는 데 사용됩니다.

어떤 상황에서 목록이 배열보다 더 잘 수행 될 수 있습니까?어떤 상황에서 목록이 배열보다 더 잘 수행 될 수 있습니까?May 01, 2025 am 12:06 AM

ListSoutPerformArraysin : 1) DynamicsizingandFrequentInsertions/Deletions, 2) StoringHeterogeneousData 및 3) MemoryEfficiencyForsParsEdata, butMayHavesLightPerformanceCosceperationOperations.

파이썬 어레이를 파이썬 목록으로 어떻게 변환 할 수 있습니까?파이썬 어레이를 파이썬 목록으로 어떻게 변환 할 수 있습니까?May 01, 2025 am 12:05 AM

TOCONVERTAPYTHONARRAYTOALIST, USETHELIST () CONSTUCTORORAGENERATERATOREXPRESSION.1) importTheArrayModuleAndCreateAnarray.2) USELIST (ARR) 또는 [XFORXINARR] TOCONVERTITTOALIST.

See all articles

핫 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 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구