2020-10-12函数进阶(函数返回值、全局变量和局部变量、匿名函数、实参高阶函数和返回值高阶函数

day10函数进阶(函数返回值、全局变量和局部变量、匿名函数、实参高阶函数和返回值高阶函数)
函数返回值
函数返回值
什么是返回值:返回值是函数内部的数据传递到函数外部的数据(默认情况下函数内部产生的数据,在函数外部不能使用)
怎么确定函数返回值:python中每个函数都有返回值,返回值什么就看执行函数体的时候,遇到return关键字后面是什么,如果没有遇到,返回值就是None
怎么在函数外部获取函数返回值:函数调用表达式的值就是函数返回值,所有在函数的外部获取调用表达式的值就是在获取函数的返回值

1)没有遇到return的函数,没有返回值

def func1(a,b):
    print(a+b)
result = func1(10,20) # 30
print(f'result:{result}')   # result:None

2)有一个返回值的函数

def func2(a,b):
    return a+b
result2 = func2(100,200) 
print(f'result2:{result2}')   # result2:300

3)有多个返回值的函数

def func3(a,b):
    return a+b,a*b
result3 = func3(11,22) 
print(f'result3:{result3}')    # result3:(33, 242)

re1,re2 = func3(10,20)
print(f're1:{re1},re2{re2}')  # re1:30,re2200

定义一个函数,可以求多个数的和以及平均值

def sum1(*num):
    if len(num) !=0:
        return sum(num),sum(num) / len(num)
    else:
        return None,None
result4 = sum1(10,52,63,47)
print(result4)  # (172, 43.0)
全局变量和局部变量
全局变量/局部变量概念作用域
全局变量:定义在函数和类外面的变量就是全局变量从定义开始到文件结束的任意位置都可以使用
局部变量:定义在函数内部的变量就是局部变量 (注意:不是类的内部从定义开始到函数体结束
补充:函数调用过程内存的变化–>每次调用一个函数的时候,系统会自动在栈区间开辟一个临时的内存空间用来保存函数中产生的数据(定义的变量)当函数调用结束后这块内存会自动释放

全局变量

a = 100
def func1():
    print(f'函数内部:{a}')
func1()  #  函数内部:100

# 这里的 b、c 也是全局变量
for b in range(3):
    c = 'abc'
    print(b)

局部变量

# d是局部变量,形参也是局部变量
def func2():
    d = 123
    print(f'函数内部的d:{d}')
    
func2() # 函数内部的d: 123
# print(f'函数外部d:{d}')  # 报错!
global/nonlocal功能
global:只能在函数体使用;功能:在函数中定义全局变量
nonloca:功能:在局部的局部中修改局部变量

global

m = 100
n = 10
def func5():
    m = 200
    print(f'函数内部:{M}')
    
    global n
    n = 100
    
    global p
    p = 300
func5() # 函数内部:200
print(f'函数外部:{m}'# 函数外部: 100
print(f'函数外部:{n}')   #  函数外部:100

nonlocal

def func6():
    t = 100
    def func7():
        nonlocal  t
        t = 200
        print(f'函数中的函数t:{t}')
    func7()
    print(f'函数中的t:{t}')

func6()
# 函数中的函数t:200
# 函数中的t:200

匿名函数

匿名函数的本质是函数;在定义的时候不需要函数名(一般不使用,在调用实参高阶函数的时候比较多)

"""
语法:
函数名 = lambda  形参列表:返回值
"""
sum1 = lambda a,b:a+b
result = sum1(10,20)
print(result)  # 30
实参高阶函数

python中定义函数其实就是在定义一个类型是function的变量,其中函数名就是变量名

普通变量能做的事情函数都可以做

a = 10
b = 'abc'
c = [10, 2, 5, 3, 5]
d = {'a': 10, 'b': 5}
e = lambda x: x * 2

# 变量能做的函数都可以做
x = 100
def func1(n1, n2):
    return n1 * n2
# a.变量可以给另一个变量赋值
y = x
print(y)  # 100

z = func1
print(z(10, 20))  # 200

# 变量可以做列表的元素
list2 = [10,20,func1]
print(list2)  # # [10, 20, <function func1 at 0x039F6198>]
print(list2[-1](4,5))  #  20

func1 = 200
print(func1 * 3)  # 600


# e.变量可以作为函数的参数
def func4(f):
    print(f(10,20) * 2)
    # return f(10,20) * 2

func4(func1)  # 400
print(func4(func1))  # None
返回值高阶函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值