函数的理解和定义
什么是函数?在python中函数的意义和初等数学中函数的意义一样,在我们初中高中所学习的函数是怎么定义的呢?函数是一种抽象概念,是发生在集合之间的一种对应关系。意思就是用抽象的变量来表示一种数字间的关系,在此基础上可以来解决问题的算术式子就是函数。然后就是在编程思维中函数的定义,函数是一段代码的表示,函数是一段具有特定功能的,可以重复使用的语句组,函数是一种功能的抽象,一般函数表达特定功能,在编程中起到降低编程难度和代码复用的作用。
def <函数名>(<参数(0个或多个)>):
<函数体>
return <返回值>
这是函数定义的基本形式,举个例子,如何定义一个函数来表示n的阶乘
def sum(n):
s=1
for i in range(1,n+1):
s *=i
return s
函数定义的时候,所指定的参数是一种占位符,参数是输入,函数体是用来处理参数的,结果是输出。input,process,oppen(IPO);函数定义后,如果不调用,不会被程序执行。
函数的使用和调用过程
def Sum(n): #函数定义部分
s=1 #函数体部分
for i in range(1,n+1):
s *=i
return s #函数的返回值
Sum(10) #调用函数
调用函数时要给出实际参数,这个实际参数会替代定义中的参数,函数调用后得到返回值。
函数的参数传递
函数可以有参数也可以没有参数,但是必须要保留括号。
def <函数名>():
<函数体>
return <返回值>
可选参数
另外,函数定义时可以为某些参数指定默认值,构成可选参数。
def <函数名>(<非可选参数>,<可选参数>):
<函数体>
return <返回值>
def Sum(n,m=1): #函数定义部分并设置可选参数
s=1
for i in range(1,n+1):
s *=i
return s//m
>>>Sum(10)
3628800
>>>Sum(10,5)#可选参数可以根据需要来改变
725760
可变参数传递
另外还有一种时可变参数传递,函数定义时可以设计可变数量参数
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)
10886400
>>>fact(10,3,5,8)
435456000
参数传递的两种方式
函数调用时,参数可以按照位置或者名称的方式进行传递
def Sum(n,m=1):
s=1
for i in range(1,n+1):
s *=i
return s//m
>>>fact(10,5)
725760
>>>fact(m=5,n=10)
725760
函数的返回值
函数可以返回0个或者多个结果,return保留字用来传递返回值;函数可以有返回值也可以没有,可以有return也可以没有;return可以传递0个返回值也可以传递任意多个返回值。
def Sum(n,m=1):
s=1
for i in range(1,n+1):
s *=i
return s//m,n,m
>>>fact(10,5)
(725760,10,5)
>>>a,b,c=fact(10,5)
>>>print(a,b,c)
725760 10 5
局部变量和全局变量
<语句块1> #程序
def <函数名>(<参数>) #全
<函数体> #局 #局部变量
return <返回值> #变
<语句块2> #量
n,s =10,100
def fact(n):
s = 1 #fact()函数中的n和s是局部变量
for i in range(1,n+1):
s *= i
return s
print(fact(n),s) #这里的n和s是全局变量
1.局部变量和全局变量是不同的变量
局部变量是函数内部的占位符,于全局便利可能重名但不同;函数运算结束后,局部变量被释放;可以使用global保留字在函数内部使用全局变量。
n,s =10,100
def fact(n):
global s #fact()函数中的n和s是局部变量
for i in range(1,n+1): #使用global保留字声明后此处的s是全局变量s
s *= i
return s #此处s指全局变量
print(fact(n),s) #此处的全局变量s被修改
2.局部变量为组合数据类型且未创建,等同于全局变量。