基本结构
代码规范
def函数整体需与前面还有后面的代码有俩个空行,否则会警告
例如:
以def关键字开头
函数内容以冒号起始,并且缩进
return 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回null。
结构1:单一参数
def<函数名>(参数):
函数体
return 返回值
'''
def fact(n):
s = 1
for i in range(1, n+1):
s *= i
return s
#返回s!
结构2:不可选参数与可选参数
def<函数名>(<不可选参数>,<可选参数>):
函数体
return 返回值
def fact(n, m=2):
s = 1
for i in range(1, n+1):
s *= i
return s//m
# 对二整除 取不大于商的最大整数
结构3:参数与可变参数
def<函数名>(<参数>,*<可变参数>): # 可变参数用 *作为标识符
函数体
return 返回值
def fact(n,*b):
s = 1
for i in range(1, n+1):
s *= i
for item in b:
s *= item
return s
>>>fact(10) = 3628800
# 表示不输入参数b
>>>fact(10,3) = 3628800*3 = 10886400
# 表示参数b只为3
>>>fact(10,3,5,8) = 10886400*5*8 = 435456000
# 表示b随着循环的深入逐渐变为3 5 8
返回值
python函数的返回值可以是一个,可以是多个,也可以没有。
# 多个返回值
def fact(n,m=2):
s = 1
for i in range(1,n+1):
s *= i
return s//m, n, m
一个返回值
def fact(n,m=2):
s = 1
for i in range(1,n+1):
s *= i
return s//m
无返回值
def fact(n,m=2):
s = 1
for i in range(1,n+1):
s *= i
全局变量与局部变量的区别
全局变量与局部变量使用相同变量名时:
n, s = 10, 100 # 这个s是全局变量的s
def fact(n):
s = 1 # 这个s是局部变量的s
for i in range(1,n+1):
s *= i
return s
# 在fact()函数外,局部函数s不起作用,只能通过调用函数获得
print(fact(n), s)
# print: 10! 100
全局变量在局部函数被调用时:
Is = ["f", "F"]
def func(a):
Is.append(a)
return Is # 此处Is没有在函数内重新定义,所以在函数体里面是以全局变量的形式存在
func("c") #此条语句讲c append到 Is中
print(Is)
#print
#['f', 'F', 'c']
在局部函数内部创建与全局变量相同变量名的变量并用函数调用时:
Is = ["f", "F"]
def func(a):
Is = []
Is.append(a)
return Is
func("c")
print(Is)
print(func("c"))
# print
# ['f', 'F']
# ['c']
lambda函数
Lambda函数又称匿名函数
匿名函数并非没有名字,而是将函数名作为函数的结果返回。
语法格式如下:
<函数名> = lambda <参数列表>: <表达式>
示例:
>>> f = lambda x, y : x + y
>>>type(f)
<class 'function'>
>>>f(10, 12)
22