基本格式
def <函数名> (<参数(0个或多个)>):
<函数体>
return <返回值>
(本人理解):有默认值的参数就叫做可选参数,这与C++中参数可以给定默认值的做法应该是相同的,当函数的参数表中含有可选参数时,该可选参数可以选择不进行传入,但是该参数在函数中存在默认值,可以直接进行使用
def <函数名>(<非可选参数>,<可选参数>):
<函数体>
return <返回值>
注意:python中要求,所有可选参数必须放在非可选参数之后
函数定义时,可以设计可变数量参数,即不确定参数总数量的参数
def <函数名>(<参数>,*b):
<函数体>
return <返回值>
*b可以是*a,*c等等
如果有这样一个函数
def f(a,*b):
<函数体>
return <返回值>
此时,该函数的参数个数是大于等于1的,即*b在函数中充当一个元素序列
-return保留字用来传递返回值
-函数可以有返回值,也可以没有,可以有return,也可以没有
-return可以返回0个返回值,也可以传递任意多个返回值
def fact(n,m=1):
s = 1
for i in range(1,n+1):
s*=1
return s//m,n,m
fact(10,5)
>>>(0, 10, 5)
a,b,c = fact(10,5)
print(a,b,c)
>>>0 10 5
return 关键字返回多个值时,返回的其实是一个元组
规则1:局部变量和全局变量是不同变量
--局部变量是函数内部的占位符,与全局变量可能重名但是不通
--函数运算结束后,局部变量将被释放
--可以使用global关键字在函数内部使用全局变量,(global此关键字用于在函数内部声明,此变量是全局变量而不是局部变量)
即,如果在一段程序中,已经有了一个全局变量s,而我们在接下来的一个函数中,想要使用这个全局变量进行函数内部的运算的话,那么,在函数内部,global s进行这样的操作即可
(通过此方可以在函数内部进行对外部变量的修改)
规则2:局部变量如果是组合数据类型,而且未在函数内部创建,那么该局部变量等同于全局变量
注意:如果一个组合数据类型的变量在函数外有定义,并且其在函数内部也进行了真实创建,那么该变量在函数内部就是该函数的局部变量,但是在函数内部对其做出的改变并不能影响到函数外部,即相当于其在函数内部被重新创建,此时函数内部的仅仅是一个占位符,与外部的那个全局变量完全不同
使用规则:
--基本数据类型,无论是否重名,局部变量与全局变量不同
--可以在函数内部通过global关键字声明使用全局变量
--组数据类型,如果局部变量未真是创建,则是全局变量
功能:返回一个函数名作为结果
--lambda函数是一种匿名函数,即没有名字的函数
--lambda函数用于定义简单的.能够在一行内表示的函数
使用形式:
<函数名> = lambda<参数>:<表达式>
注意:冒号后只能跟表达式,而不可以接函数体
例如:
f = lambda x,y:x+y
f(10,15)
25
f = lambda :"lambda函数"
print(f())
lambda函数