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}' )
re1, re2 = func3( 11 , 22 )
print ( f're1:{re1}, re2:{re2}' )
练习:定义一个函数,可以求多个数的和以及平均值
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}' )
print ( operation( 1 , 2 , 3 , 4 , 5 ) )
全局变量和局部变量:
1.什么是全局变量和局部变量:按照变量的作用将变量分为全局变量和局部变量两种
"""
1)全局变量
定义在函数和类外面的变量就是全局变量
作用域:从定义开始到文件结束的任意位置都可以使用
"""
a = 100
for x in range ( 3 ) :
print ( f'循环内部:{a}' )
def func1 ( ) :
print ( f'函数内部:{a}' )
func1( )
for b in range ( 3 ) :
print ( f'循环内:{b}' )
def func2 ( ) :
print ( f'函数内部:{b}' )
func2( )
"""
2)局部变量
定义在函数内部的变量就是局部变量
作用域:从定义开始到函数结束
补充:函数调用过程内存的变化
每次调用一个函数的时候系统会自动在栈区间开辟一个临时的内存空间,用来保存在函数中产生的数据(定义的变量),当函数调用结束后这块内存会自动释放(销毁)
"""
def func3 ( ) :
d = 123
print ( f'函数内部d:{d}' )
def func4 ( e, f= 100 ) :
print ( e, f)
func4( 200 )
2.global和nonlocal
"""
1)global
只能在函数体中使用;功能:在函数中定义全局变量
global 变量名
变量名 = 数据
2)nonlocal
功能:在局部的局部中修改一个局部变量的值
nonlocal 变量名
变量名 = 数据
"""
m = 100
n = 10
def func5 ( ) :
m = 200
print ( f'函数内部m:{m}' )
global n
n = 100
global = p
p = 100
func5( )
print ( f'函数外部m:{m}' )
print ( f'函数外部n:{n}' )
print ( f'函数外部p:{p}' )
def func6 ( ) :
t = 100
def func7 ( ) :
nonlocal t
t = 200
print ( f'函数中的t:{t}' )
func7( )
print ( f'函数中的t:{t}' )
func6( )
匿名函数:
"""
匿名函数的本质是函数;在定义的时候不需要函数名(一般情况下不会使用匿名函数,在调用实参高阶函数的时候用的比较多)
语法:
函数名 = lambda 形参列表:返回值
相当于:
def 函数名(形参列表):
return 返回值
"""
sum1 = lambda num1, num2: num1+ num2
print ( sum1( 10 , 20 ) )
print ( sum1( num1= 1 , num2= 3 ) )
max1 = lambda num3, num4= 20 : num3 if num3 > num4 else num4
print ( max1( 18 , 20 ) )
print ( max1( 1 , 2 ) )
print ( max ( 3 ) )
实参高阶函数:
1.函数就是变量
"""
python中定义函数其实就是在定义一个类型是function的变量,其中函数名就是变量名
普通变量能做的事情函数都可以做
"""
x = 100
def func1 ( n1, n2) :
return n1* n2
y = x
print ( y+ 2 )
z = func1
print ( z( 2 , 3 ) )
list1 = [ 10 , 20 , x]
print ( list1)
print ( list1[ - 1 ] * 2 )
list2 = [ 10 , 20 , func1]
print ( list2)
print ( list2[ - 1 ] ( 4 , 5 ) )
x = 'abc'
print ( x[ 0 ] )
func1 = 200
print ( func1* 3 )
def func4 ( f) :
print ( f( 10 , 20 ) * 2 )
def f ( a, b) :
return a - b
func4( f)