函数的定义和调用
调用函数
[note type="info flat"]定义函数需要用到def关键字[/note] 示例:
python
代码:
def abc(a,b): 定义abc()这个函数,参数为a和b
c=a+b
print(c)
return
abc(1,2) 此处相当于a=1,b=2
结果:
3
函数的嵌套
[note type="info flat"]嵌套的函数只能函数内部调用[/note] 示例:
python
def abc(n):
def aa(a):
t=1
for i in range(1,a+1):
t*=i
return t
s=0
for i in range(1,n+1):
s+=aa(i)
return s
n=2
print("{}以内的阶层之和为{}".format(n,abc(n)))
大概就函数中嵌套的函数就函数内部可以调用,函数外不能调用,想不出其他示例
函数的参数和返回值
1.按位置传递,我就不写了,就对应的位置就对应的参数 2.赋值参数,也不多说,就是定义函数def abc(a,b) 然后调用时就abc(a=1,b=2)就OK了
默认参数
[note type="info flat"]既可以直接调用未被赋值的参数,会自动跟上已经赋值的参数,而已赋值的参数也可从新赋值[/note]
other
代码:
def abc(a,b=10):
d=a+b
print("编号:",a)
print("年龄:",d)
abc(1,b=19)
abc(2)
结果:
编号: 1
年龄: 20
编号: 2
年龄: 12
关键值参数
[note type="info flat"]参数名称前加(*)或者加两个(**)表示可以接受任意函数[/note]
other
代码:
def abc(a,*b,**c):
print("姓名:",a)
for e in b:
print(e,end=" ")
for i in c.items(): 参数.items()表示返回所有键值对
print(i,end=" ")
print()
return
abc("kate","male",18,"dalian")
print("----------------------")
abc("kate","male",18,"dalian",math=86,pe=92,eng=88)
结果:
姓名: kate
male 18 dalian
----------------------
姓名: kate
male 18 dalian ('math', 86) ('pe', 92) ('eng', 88)
函数的返回值
other
代码:
def abc(a):
b=[]
words=a.split() 使用空格作为空格符
for word in words:
if word.find("e")!=-1:
b.append(word)
return b
ss="reture then abcd wc end"
print(abc(ss))
结果:
['reture', 'then', 'end']
lambda函数
[note type="info flat"]lambda函数不需要使用def关键字定义函数,是一个lambda表达式[/note] 对比,将列表元素按照绝对值大小进行升序排列
other
#lambda函数示例:
a=[3,2,-5,-6,-8,9,7]
b=sorted(a,key=lambda x:abs(x))
print(b)
#结果:
[2, 3, -5, -6, 7, -8, 9]
#def定义函数示例:
a=[3,2,-5,-6,-8,9,7]
def b(x):
return abs(x)
d=sorted(a,key=b)
print(d)
#结果:
[2, 3, -5, -6, 7, -8, 9]
闭包和递归函数
创建闭包条件
闭包函数中必须有嵌套函数 嵌套函数需要引用外部函数中的变量 外部函数需要将嵌套函数名作为返回值返回
python
#代码
def a(p):
def g(name):
print(p,name)
return g
m=a("good morning")
m("wilber")
m("will")
#结果
good morning wilber
good morning will
递归函数
阶乘的递归实现
other
代码:
def f(i):
if i==0:
return 1
else:
return i*f(i-1)
print(f(2))
变量的作用域
局部变量
不做过多解释,因为这个作用于就是,定义一个函数在这个函数内部定义的变量,在函数之外无影响,同样可以定义相同变量
全局变量
定义在函数外的变量,它拥有全局作用域,可作用于程序中多个函数,但函数内部只是可访问和只读的,使用是受限制的
global语句
此语句的作用是可在函数内部读写修改全局变量
python
代码:
bas=100
def f(x,y):
global bas
print(bas)
bas=90
sum=bas+x+y
return sum
print(f(78,62))
print(bas)
结果:
100
230
90