python100day - 10day - 函数进阶

python100day - 10day - 函数进阶

函数的返回值:

1.什么是返回值
"""
返回值就是函数内部传递到外部的数据(默认情况下函数内部产生的新数据,在函数外部不能使用
"""
2.怎么确定函数返回值
"""
1)python中每个函数都有返回值,返回值是什么就看执行函数体的时候遇到的return关键字后面的数据是什么,如果没有遇到return,返回值就是None。(希望作为返回值的数据在函数结束的时候放在return后面)
2)return的作用
遇到return会确定函数返回值并且直接结束函数
"""
3.怎么在函数外部获取函数返回值
"""
函数调用表达式的值就是函数的返回值,所以在函数的外部获取函数调用表达式的值就是在获取函数的返回值
"""
def func3(a, b):
    return a+b, a*b
result = func3(11, 22)
print(f'result:{result}')    # result:(33, 242)

re1, re2 = func3(11, 22)
print(f're1:{re1}, re2:{re2}')   # re1:33, re2:242
练习:定义一个函数,可以求多个数的和以及平均值
def operation(*num):
    if not num:
        return None, None
    return sum(num), sun(num)/len(num)

s, m = operation(1, 2, 3, 4, 5)
print(f's的和:{s},m的平均值:{m}')   # s的和:15,m的平均值:3.0
print(operation(1, 2, 3, 4, 5))   # (15, 3.0)

全局变量和局部变量:

1.什么是全局变量和局部变量:按照变量的作用将变量分为全局变量和局部变量两种
"""
1)全局变量
定义在函数和类外面的变量就是全局变量
作用域:从定义开始到文件结束的任意位置都可以使用

"""
# a是全局变量
a = 100

for x in range(3):
    print(f'循环内部:{a}')   # 循环内:100 循环内:100 循环内:100

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

func1()   # 函数内部:100
# b是全局变量
for b in range(3):
    print(f'循环内:{b}')   # 循环内:0 循环内:1 循环内:2
  
def func2():
    print(f'函数内部:{b}')
    
func2()    # 函数内部:2
"""
2)局部变量
定义在函数内部的变量就是局部变量
作用域:从定义开始到函数结束

补充:函数调用过程内存的变化
每次调用一个函数的时候系统会自动在栈区间开辟一个临时的内存空间,用来保存在函数中产生的数据(定义的变量),当函数调用结束后这块内存会自动释放(销毁)

"""
# d是局部变量
def func3():
    d = 123
    print(f'函数内部d:{d}')   # 函数内部d:123
    
# print(f'函数外部d:{d}')   # 报错!

# 函数的形参也是局部变量
def func4(e, f=100):
    print(e, f)
    
func4(200)  # 200 100
# print(f'函数外部:{e}')  # 报错
# print(f'函数外部:{f}')  # 报错

2.global和nonlocal
"""
1)global
只能在函数体中使用;功能:在函数中定义全局变量
global 变量名
变量名 = 数据

2)nonlocal
功能:在局部的局部中修改一个局部变量的值
nonlocal 变量名
变量名 = 数据
"""

# 全局变量m
m = 100
n = 10

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

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

匿名函数:

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

语法:
函数名 = lambda 形参列表:返回值

相当于:
def 函数名(形参列表):
	return 返回值

"""

# 定义一个函数求两个数的和
sum1 = lambda num1, num2: num1+num2
print(sum1(10, 20))   # 30
print(sum1(num1=1, num2=3))   # 5

# 练习:写一个匿名函数,获取两个数中较大的那个数
max1 = lambda num3, num4=20: num3 if num3 > num4 else num4

print(max1(18, 20))   # 20
print(max1(1, 2))   # 2
print(max(3))   # 20

实参高阶函数:

1.函数就是变量
"""
python中定义函数其实就是在定义一个类型是function的变量,其中函数名就是变量名
普通变量能做的事情函数都可以做

"""

# 2变量能做的函数都可以做

x = 100

def func1(n1, n2):
    return n1*n2

# a.变量可以给另外一个变量赋值
y = x
print(y+2)   # 102

z = func1
print(z(2, 3))   # 6

# b.变量可以作为列表的元素
list1 = [10, 20, x]
print(list1)   # [10, 20, x]
print(list1[-1]*2)   # 200

list2  = [10, 20, func1]
print(list2)   # # [10, 20, <function func1 at 0x000001F00F135318>]
print(list2[-1](4, 5))   # 20

# c.变量可以重新赋值
x = 'abc'
print(x[0])   # a

func1 = 200
print(func1*3)   # 600

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

def f(a, b):
    return a - b

func4(f)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值