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

Python의 함수 일부 분석

不言
不言앞으로
2018-09-28 14:10:152227검색

이 기사의 내용은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제