03.Python函数

简单操作:

"""
函数:
"""


# 定义函数
def say():
    print("俺正在说话")


#  使用lambda表达式简化上面函数
say = lambda: "俺再一次说话"


# print(say())


# 带参数的函数
def eat(what):
    print(f"你们正在吃{what}")


eat = lambda what: f"你们正在吃{what}"


# print(eat("螺蛳粉"))


# 定义带两个参数的函数
def test(a, b=222):
    print(f"a={a}")
    print(f"b={b}")


test = lambda a,b=222: f"a={a},b={b}"
# print(test(111))


# 带条件的lambda
test7 = lambda a,b : a if a > b else b
print(test7(22, 44))


# 求1,2,3内的和,用lambda实现
test8 = lambda *args: sum(args)
# print(test8(1, 2, 3))



# 定义可变参数1,参数是元组类型
# 多个值的和
def test1(*args):
    """这是一个求多个值和的函数"""
    sum = 0
    for i in args[0]:
        sum += i
    else:
        # print(f"和为{sum}")
        #         返回值
        return sum


#  定义可变参数2:
# 参数为字典类型
def test2(**kwargs):
    for k, v in kwargs.items():
        print(k, v)


# 返回值为多个
def test3(a, b, c):
    """
    这是一个测试函数,测试函数为多个返回值
    :param a: 值1
    :param b: 值2
    :param c: 值3
    :return: 返回多个值
    """
    a += 100
    b += 100
    c += 100
    return a, b, c


# 计算多个值的平均值
def test4(*args):
    sum = test1(args)
    return sum / len(args)


# 测试变量范围
a = 222  # 全局变量


def test5():
    # 在函数内部修改全局变量的值
    # 必须声明 变量为全局变量
    global a
    a = 333
    print(f"函数内:{a},地址为:{id(a)}")


# 递归:函数内部调用函数本身
# 求某个数以内的和
def test6(num):
    if num == 1:
        return 1
    return num + test6(num - 1)

# 调用递归函数
# print(test6(100))

# print(f"函数外:{a},地址为:{id(a)}")
# test5()
# print(f"函数外:{a},地址为:{id(a)}")


# 调用函数:必须放在定义函数的后面
# say()

# 调用有参的函数
# eat("辣椒炒尖椒")

# 调用参数:1.位置方式
# test(11, 22)

# 2.关键字方式
# test(b=22, a=11)

# 3.缺省参数(默认值)
# 注意:有默认值的参数必须放在没有默认值参数的后面
# test(11, 22)

# 调用可变参数1
# print(test1(1, 2, 3))

# 调用可变参数2
# test2(name="光头强", age=19)

# 调用返回值为多个值的函数
# print(test3(20, 10, 30))


# 查看函数的说明文档
# help(test3)


# 函数嵌套
# print(test4(1, 2, 3))


# 使用lambda对字典列表进行排序
persons = [
    {"name": "张三", "age": 22},
    {"name": "小四", "age": 12},
    {"name": "王五", "age": 23},
    {"name": "赵六", "age": 2}
]

persons.sort(key= lambda person:person["name"], reverse=True)

print(persons)

猜你喜欢

转载自www.cnblogs.com/kingpp/p/12217845.html
今日推荐