Python学习笔记(三)

62 阅读2分钟

函数

定义:

def function(x, y):
    body
    return n
    
    
one = function(a, b)

默认返回值: None, 类型: <class 'NoneType'>

例子:

def my_len(data):
    """
    求字符串长度的函数
    :param data: 传入参数字符串
    :return: 返回结果
    """
    n = 0
    for i in data:
        n += 1
    print(f"We have {n} letter(s) in {data}")
    return None


my_len("eraser")
print(type(my_len("administration")))

说明文档 docstrings: 多行注释,自动生成: :param data: :return:

函数内全局变量赋值: 用globa关键字

num = 1


def my_function(): 
    global num
    num = 3

多返回值

def func_test():
    return 1, 2

print(func_test())
# (1, 2)

类型: <class 'tuple'>

多参数

  • 位置参数:根据定义的参数个数、位置一致
  • 关键字参数:key=value 无顺序 *args
  • 参数缺省:定义默认值,位置在最后
  • 不定长参数:
    • *args 一个元组
    • **kwarg 键值对 参数组成字典
  • 调用时:
    • *容器 unpack成位置参数
    • **容器 字典-> 关键字参数
def func_test2(name, num, isTrue=True):
    print(f"Hello {name}, the num is {num} and it's {isTrue}")


func_test2("Tom", isTrue=False, num=114154)

func_test2("Jey", 11)


def func_test3(*args, **kwargs):
    print(f"The args is {args}, the K-W args is {kwargs}")


func_test3(1, 2, 3, stu_name="Alex", age=123)
def Aniki(a, *b, **c):

    z = [a, b, c]
    print(z)
# a:一个位置参数 b:元组 c:所有键值对

Aniki(1, 2, "b", x="123", y="456")
# [1, (2, 'b'), {'x': '123', 'y': '456'}]

强制位参数

def f(a, b, /, c, d, *, e, f):
    print(a, b, c, d, e, f)

形参 a 和 b 必须使用指定位置参数,c 或 d 可以是位置形参或关键字形参,而 e 和 f 要求为关键字形参

匿名函数

关键字 lambda 临时使用一次

引用 = lambda 参数列表:表达式

print(list(map(lambda x: x*x, [1, 2, 3, 4, 5])))
# [1, 4, 9, 16, 25]

print(reduce(lambda x, y: x + y, [1, 2, 3, 4, 5]))
# 15

闭包

在一个函数内部定义另外一个函数,并且把这个函数对象作为返回值

需要使用外层函数的变量(包括参数)

def increment(n):
    return lambda x:x+n

f=increment(4)

nonlocal 外部变量