zl程序教程

您现在的位置是:首页 >  Python

当前栏目

python基础学习 -- 函数高级用法

2023-03-14 22:44:13 时间

一、局部变量



只能在函数内部调用,b是局部变量,只能在aiyou函数体使用,所以第二个print会报错

a=1;
def aiyou():
    b=2;
    print(a,b)
aiyou()
print(a,b)#报错


二、局部函数



只能再函数内部调用,ay是内部函数,只能在aiyou函数体内部使用,所以第二个ay()调用报错

a=1;
def aiyou():
    def ay():
        print("ay")
    ay()
aiyou()
ay()#报错


三、全局变量



全局变量是相对的,a是全局变量,任何地方都可以调用,b是aiyou()函数里面的全局函数,除了函数及就不能调用,

a=1;
def aiyou():
    b=2;
    def ay():
        print(b)
        print(a)
    ay()
aiyou()
print(a)
print(b)#报错


四、global关键字



当全局变量和局部变量名字相同时,互不影响,打印结果是3和123


如果给局部变量加上关键字global,说明里面的局部变量和全局变量一样,打印结果相同,都是3

i=123;
def aiyou(a,b):
    i=a+b
    print(i)
aiyou(1,2)
print(i)
运行结果:
3
123


i=123;
def aiyou(a,b):
   global i
   i=a+b
   print(i)
aiyou(1,2)
print(i)
运行结果:
3
3



五、range()函数



1、获取几个数字,就在range()的参数里写几


for i in range(10):
    print(i)
   运行结果:
0
1
2
3
4
5
6
7
8
9


2、从a开始取数值,到b-1结束


for i in range(5,10):
    print(i)
运行结果:
5
6
7
8
9


3、从a开始取数值,到b-1结束,每次步长为c


for i in range(5,10,2):
    print(i)
 运行结果:
5
7
9  


六、匿名函数



1、普通函数


如果a>b返回他们的差值,否则返回他们的和


def aiyou(a,b):
    if a>b:
        return a-b
    else:
        return a+b
c=aiyou(3,2)
print(c)


2、匿名函数,实现效果和上面的一样


c=lambda a,b:a-b if a>b else (a+b)
print(c(4,3))


3、实际应用


匿名函数一般当做参数传递给函数使用

def aiyou(ay):
    print(ay(5,4))
aiyou(lambda a,b:a-b if a>b else a+b)


七、递归函数



1、普通函数实现1+2+3+...+n的求和


def aiyou(a):
    b=0
    for i in range(1,a+1):
        b=b+i
    return b
print(aiyou(100))
运行结果:
5050


2、递归函数实现1+2+3+...+n的求和


def aiyou(a):
    if a==1:
        return 1
    return a+aiyou(a-1)
print(aiyou(100))