目录
1.函数
1.1语法
def 函数名():
语句
1.2函数的调用
函数名(参数)
1.3返回值
用return返回
(1)如果函数内部无return语句或return不接任何语句,则返回None
def function1():
return
print(function1())
def function2():
return
print(function2())
(2)如果函数内部有return语句。若return执行,则返回return所连接的变量或表达式的值。若函数内部所有return都不执行,返回None,即无返回值。
def fun(n):
if n==0:
return 0
if n==1:
return 1
print(fun(0))# 返回1
print(fun(2))# 返回Npne
2.函数参数
2.1位置传参
传递实参时,实参与形参按位置相对应
语法:
def 函数名(形参名1, 形参名2, ...):
pass
2.2关键字传参
传递参数时,实参与形参按名称相对应
允许函数调用时参数的顺序与声明时不一致
def fun(a,b):
print(a)
print(b)
fun(b=10,a=20)
位置传参和关键字传参可合用,但位置传参必须位于关键字传参之前

2.2.1缺省参数(默认参数)
在函数传参表中,缺省参数后面不能有非缺省参数
def fun(a,b,c=1,d=2):
print(a)
print(b)
print(c)
print(d)
# # 报错
# def fun(a,b,c=1,d=2,e):
# print(a)
# print(b)
# print(c)
# print(d)
2.2.2星号元组传参
语法:
def 函数名(*元组形参名):
pass
def function(*args):
print(*args)
function(1,2,3,4)
存储垃圾参数
2.2.3双星号字典传参
dt=dict(a=1,b=2,c=3)
def fun(a,b,c):
print(a)
print(b)
print(c)
fun(**dt)
2.2.4命名关键字传参
def function(*args,**kwargs):
print(*kwargs)
print(*args)
# # 注意顺序,
# def function(**kwargs,*args):
# print(*kwargs)
# print(*args)
非关键字参数必须位于关键字参数之前,否则报错
def fun2(a,b,c,*args):
print(*args)
print(a)
print(b)
print(c)
fun2(5,6,7,8)
# def fun1(*args,a,b,c):
# print(args)
# print(a)
# print(b)
# print(c)
# fun1(1,2,3,4)#报错
3.可变不可变
变量中的数据就具有可变和不可变两种性质:
不可变:整数、字符串、元组。
可变:列表,字典,集合。
4.匿名函数
用lamdba关键字创建
lambda [函数的参数列表]: 表达式
pow1=lambda x,y:x**y
print("2**8=",pow1(2,8))
5.变量作用域
5.1全局变量
在函数外部,所有的函数都可访问
5.2和局部变量
在函数内部,在函数内部可被访问
5.3LEGB优先调用顺序
Local:本地作用域,在函数内部定义
Enclosing:闭包函数外的函数作用域,嵌套函数的外部函数中定义的变量
Global:全局作用域
Built-inPython:内建作用域预定义的变量
5.4局部作用域修改全局变量
在函数内部修改不可变类型的全局变量,用关键字:global
a=10#全局变量
def fun():
global a
a=15
fun()
print(a)
5.5局部作用域修改外部变量
在函数内部修改不可变类型的的外部变量,用关键字:nonlocal
def fun2():
b = 100
def fun3():
nonlocal b
b = 200
fun3()
print(b)
fun2()
6.函数内存分配
6.1函数内部的变量
在未执行时,并没有分匹配空间。
在函数执行完后,被销毁。
6.2全局变量
若未销毁,一直存在。
7.递归(函数自调用)
函数直接或间接调用自己
# 实现阶乘函数
def factorial(n):
if(n<=1):
return 1
return n * factorial(n - 1)
print(factorial(5))
# 实现Fibonacci数列函数
def fibonacci(i):
if i==0:
return 0
elif i==1:
return 1
else:
return fibonacci(i-1)+fibonacci(i-2)
print(fibonacci(8))

被折叠的 条评论
为什么被折叠?



