笔记12-函数

函数

# --------函数的多行注释----------
def add(a, b):
    """
    这个函数用来将两个数字相加
    :param a: 第一个数字
    :param b: 第二个数字
    :return: 返回两个数字相加的和
    """
    return a + b


# --------函数的注释查看----------
help(add)

# --------函数的调用-------------
add(b=2, a=1)


# --------函数的建议参数类型-------
def sub(a: int, b: int):
    return a - b


# ---------函数的全局变量和局部变量--
# 外面的a是全局变量
# 里面的a是局部变量,不是赋值
a = 100


def demo():
    a = 10
    print(a)


demo()
print(a)

# ---------函数里面修改全局变量--
b = 100


def demo1():
    global b
    b = 10


demo1()
print(b)

# ----查看全局变量和局部变量------
# globals() 查看全局变量
# locals() 查看局部变量
# 只有函数能够分割作用域,其它语句不能够分割作用域(if 也不能)
c = 100


def demo2():
    cc = 10
    global b
    b = 10

    print(locals())
    print(globals())


demo2()
print(c)
print("--------------------")


# ----------函数的返回值----------
# 默认将x,y以元组的形式返回
def demo3(x: int, y: int):
    return x, y


resultTotal = demo3(2, 3)
# 元组自动解包
# 数组和字典也可以自动解包
resultX, resultY = demo3(2, 3)


# -----缺省参数和不定长参数--------
# 缺省参数只能放在在最右边
def demo4(x, y=8):
    print(x)
    print(y)


demo4(5)


# ------不定长参数---------------
# 加了星号(*)的变量args会存放所有未命名的变量参数,args为元组
# 而加**的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典.
def sum_nums_3(a, *args, b=22, c=33, **kwargs):
    print(a)
    print(b)
    print(c)
    print(args)
    print(kwargs)


sum_nums_3(100, 200, 300, 400, 500, 600, 700, b=1, c=2, mm=800, nn=900)

# ------lambda表达式-------------
# 使用的场景
# 定义一个名字
# 作为函数的参数
print("------lambda表达式-------------")


def cal(x: int, y: int, function):
    return function(x, y)


add = lambda x, y: x + y
print(add(5, 4))

print(cal(4, 5, lambda x, y: x * y))
print(cal(4, 5, lambda x, y: x - y))

# --------sort方法--------------
print("--------sort方法--------------")
lists = [1, 5, 6, 7, 9]
tuples = (1, 5, 6, 7, 9)
listDicts = [{"name": "胡勇", "age": 21, "height": 180},
             {"name": "卢雯婷", "age": 18, "height": 158},
             {"name": "喵喵", "age": 2, "height": 10},
             ]


def foo(element):
    return element["age"]


# 对元组进行排序
tuples = sorted(tuples)
print(tuples)
# 对列表中字典排序 foo函数需要一个参数
listDicts.sort(key=foo, reverse=True)
listDicts.sort(key=lambda element: element["age"])
print(listDicts)

# -----高阶函数---------------
# 在Python中,函数其实也是一种数据类型。

# 函数做为另一个函数的参数
# 函数作为另一个函数的返回值
print("-----高阶函数---------------")


def test():
    return 'hello world'


print(type(test))  # <class 'function'>


# -----内部函数-----------------
def outer(x: int):
    print("我是外部函数")

    def inner():
        print("我是内部函数")

    if (x > 2):
        inner()

outer(3)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值