函数的定义与使用
函数的定义
函数是一段代码的表示,也是一段代码的完整封装
-函数是一段具有特定功能的、可重复使用的语句组
-函数是一种功能的抽象,一般函数表达特定功能
-两个作用:降低编码难度和代码复用
def <函数名>(<参数(0个或多个)>):
<函数体>
return <返回值>
案例1:计算n!
def fact(n):
s = 1
for i in range(1, n+1):
s *= i
return s
y = f(x)
-函数定义时,所指定的参数是一种占位符
-函数定义后,如果不被调用,不会被执行
-函数定义时,参数是输入、函数体是处理、结果是输出(IPO)
函数的使用及调用过程
调用是运行函数代码的方式
-调用时要给出实际参数
-实际参数替换定义中的参数
-函数调用后得到返回值
def fact(n):
s = 1
for i in range(1, n+1):
s *= i
return s
fast(10)
函数的参数传递
参数个数
函数可以有参数,也可以没有,但必须保留括号
可选参数传递
函数定义时,可以为某些参数指定默认值,构成可选参数
def <函数名>(<非可选参数>,<可选参数>):
<函数体>
return <返回值>
注意:非可选参数在前,可选参数在后,这是一种强制约定,非可选参数为必选参数。
def fact(n, m=1):
s = 1
for i in range(1, n+1):
s *= i
return s//m
fast(10)
fast(10, 5)
可变参数传递
函数定义时可以设计可变数量参数,即不确定参数总量
def <函数名>(<参数>,*b):
<函数体>
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, 3)
fact(10, 3, 5, 8)
参数传递的两种方式
函数调用时,可以按照位置或名称方式传递
def fact(n, m=1):
s = 1
for i in range(1, n+1):
s *= i
return s//m
fast(10, 5)
fast(m=5, n=10)
函数的返回值
函数可以返回0个或多个结果
-return保留字用来传递返回值
-函数可以有返回值,也可以没有,可以有return,也可以没有
def fact(n, m=1):
s = 1
for i in range(1, n+1):
s *= i
return s//m, n, m
a, b, c = fact(10, 5)
局部变量和全局变量
一段程序中间有一个函数定义,其中使用的变量叫全局变量,而在函数定义的函数体中使用的变量叫局部变量。全局和局部的区别仅在于局部是函数内部使用的变量,而函数外部整个程序使用的变量叫全局变量。
规则1:局部变量和全局变量是不同的变量
-局部变量是函数内部的占位符,与全局变量可能重名但不同
-函数运算结束后,局部变量被释放
-可以使用global保留字在函数内部使用全局变量
n, s = 10, 100
n, s =110, 100
def fact(n, m=1):
s = 1 #s为局部变量
for i in range(1, n+1):
s *= i
return s
print(fact(n), s) #输出结果n为3628800,s为全局变量100
n, s =110, 100
def fact(n, m=1):
global s #使用全局变量
for i in range(1, n+1):
s *= i
return s
print(fact(n), s) #输出结果n为362880000,s为362880000