函数主要分为三类:有参函数、无参函数、匿名函数
一:函数
1:有参函数
假设这样一个场景,有三个值,我们要得到(第一个值加第二个值)乘以第三个值的结果
但是我们有n组这样的数值
1,2,3
4,5,6
7,8,9
……
这么多组
传统写法
print (1+2)*3
print (4+5)*6
print (7+8)*9
……
如果数字比较多,计算也比较复杂,这样写一方面容易出错,另一方面不易维护,那么怎么办
这个时候函数就因运而生了
规格:
def 函数名(参数列表):
函数体
对于上面的例子我们可以定义函数如下(其中a、b、c即为参数)
>>> def jisuan(a,b,c):
... print (a+b)*c
...
然后调用函数就可以了jisuan(1,2,3)……
2:无参函数
有参函数有一种兄弟类型函数,叫无参函数,无参函数定义很简单
例:def 函数名():
函数体
3:匿名函数
关键字 lambda
语法:lambda [arg1[,arg2,.....argn]]:expression
例子:
sum = lambda arg1, arg2: arg1+ arg2;
sum(1,2) =====>3
sum(3,4) =====>7
4:关键字参数
关键字参数的优点是啥,是定位准确,且参数跟名字有关,跟输入顺序无关,比如 name,age 也可以是 age,name
#!/usr/bin/python
# -*- coding: UTF-8 -*-
#可写函数说明
def printme( str ):
"打印任何传入的字符串"
print str;
return;
#调用printme函数
printme( str = "My string");
结果:My string
#!/usr/bin/python
# -*- coding: UTF-8 -*-
#可写函数说明
def printinfo( name, age ):
"打印任何传入的字符串"
print "Name: ", name;
print "Age ", age;
return;
#调用printinfo函数
printinfo( age=50, name="miki" );
结果:Name: mikiAge 50
5:缺省参数
#!/usr/bin/python
# -*- coding: UTF-8 -*-
#可写函数说明
def printinfo( name, age = 35 ):
"打印任何传入的字符串"
print "Name: ", name;
print "Age ", age;
return;
#调用printinfo函数
printinfo( age=50, name="miki" );
printinfo( name="miki" );
结果:Name: mikiAge 50 Name: mikiAge 35
6:不定长参数
参数长度不固定,感受到了python的强大之处了吧
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 可写函数说明
def printinfo( arg1, *vartuple ):
"打印任何传入的参数"
print "输出: "
print arg1
for var in vartuple:
print var
return;
# 调用printinfo 函数
printinfo( 10 );
printinfo( 70, 60, 50 );
结果:输出:10 输出:70 60 50
如果我们要获取函数执行结果怎么办,可以通过return语句来传递函数执行结果
4:return 语句
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 可写函数说明
def sum( arg1, arg2 ):
# 返回2个参数的和."
total = arg1 + arg2
print "函数内 : ", total
return total;
# 调用sum函数
total = sum( 10, 20 );
结果:30
二:函数变量
主要分为两种:局部变量、全局变量,顾名思义,局部的只是在函数内部有效,全局的在整个文件都有效,看下面的例子
#!/usr/bin/python
# -*- coding: UTF-8 -*-
total = 0; # 这是一个全局变量
# 可写函数说明
def sum( arg1, arg2 ):
#返回2个参数的和."
total = arg1 + arg2; # total在这里是局部变量.
print "函数内是局部变量 : ", total
return total;
#调用sum函数
sum( 10, 20 );
print "函数外是全局变量 : ", total
结果: 函数内是局部变量 : 30 函数外是全局变量 : 0