函数:函数是一段完成某个具体任务并可以让程序员复用的代码。
函数的定义:def 函数名([参数列表]):
[函数注释]
[语句块,也称函数体]
[return 语句]
举个例子:两个数相加。
def fun(a, b):
return a + b
print("a + b = ",fun(4 ,5))
函数参数:形参,实参。
形参:在定义函数时,函数名括号中的参数为形式参数,简称形参。
实参:在调用函数时,函数名括号中的参数为实际参数,简称实参。
注:在调用函数时,实参的个数和位置必须和形参一 一对应。
# def fun(a, b):
# return a + b
#
# print("a + b = ",fun(4 ,5))
# 位置参数
def myfun(s, t, o):
return (o, t, s)
# 位置参数
print("".join(myfun("干嘛!","在","你")))
# 关键字参数
print("".join(myfun(o="他",t="在",s="干嘛!")))
# 默认参数
def myfun1(s, t, o = "她"):
return (o, t, s)
print("".join(myfun1("干嘛!","在")))
# 收集参数
def myfun2(*args):
print("有{}个参数。".format(len(args)))
print("第二个参数是:{}".format(args[1]))
myfun2("11","22","33")
# 作用域
# 局部作用域:如果一个变量定义在一个函数里面,那么它的作用域就仅限于函数中,称之为局部变量。
# 全局作用域:如果是在任何函数的外部去定义一个变量,那么它的作用域就是全局的,称之为全局变量。
# 全局变量可以在函数的内部访问到但是却无法在函数中去修改它的值,因为一旦试图对其进行赋值操作,python创建一个同名的局部变量进行覆盖。
# global语句
# 修改全局变量的值(不提倡)
x = 800
def myfun3():
global x
x = 520
print(x)
myfun3()
print(x)
# 嵌套函数
# 在一个函数体内定义的函数,被称为嵌套函数。
def funA():
x = 520
def funB():
x = 880
print("IN funB, x =",x)
funB()
print("IN funA, x =",x)
funA()
# nonlocal语句
# 告诉Python解释器这是一个非局部变量,从而可以在内部函数中访问并修改这个非局部变量。
# LEGB规则
# 闭包
# 闭包,又称闭包函数,和普通的嵌套函数类似,闭包中包含外部函数和内部函数,不同之处是闭包中外部函数返回的不是一个值,而是内部函数,即闭包对象;通常,该返回的函数会被赋值给一个变量,继而被调用执行。
def power(exp):
def exp_of(base):
return base ** exp
return exp_of
square = power(2)
cube = power(3)
square(2)