函数(二)

 全局与局部变量

  1. 定义在函数外部一级代码的变量,叫全局变量,全局可用。
  2. 局部变量就是指定义在函数里的变量,只能在局部生效。
  3. 在函数内部,可以引用全局变量。
  4. 如果全局和局部都有一个变量叫name,函数查找变量的顺序是由内而外的。

作用域

作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。

如何在函数里修改全局变量?

name = "Alex Li"

def change_name():
    global name
    name = "Alex 又名 金角大王,路飞学城讲师"
    print("after change", name)


change_name()

print("在外面看看name改了么?", name)

global name的作用就是要在函数里声明全局变量name ,意味着最上面的name = "Alex Li"即使不写,程序最后面的print也可以打印name。

结果:

  1. after change Alex 又名 金角大王,路飞学城讲师
  2. 在外面看看name改了么? Alex 又名 金角大王,路飞学城讲师

嵌套函数

name = "Alex"

def change_name():
    name = "Alex2"

    def change_name2():
        name = "Alex3"
        print("第3层打印", name)

    change_name2()  # 调用内层函数
    print("第2层打印", name)


change_name()
print("最外层打印", name)
View Code

输出

第3层打印 Alex3
第2层打印 Alex2
最外层打印 Alex

匿名函数

匿名函数就是不需要显示的指定函数名。主要和其他函数搭配使用。

res = map(lambda x:x**2,[1,5,7,4,8])
for i in res:
    print(i)

输出

1
25
49
16
64

高阶函数

变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数

只需满足以下任意一个条件,即是高阶函数:

  • 接受一个或多个函数作为输入
  • return 返回另外一个函数

递归

在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数

def calc(n):
    print(n)
    if int(n/2) ==0:
        return n
    return calc(int(n/2))

calc(10)

猜你喜欢

转载自www.cnblogs.com/joneylulu/p/10209278.html