# name 叫做函数func的形式参数,简称:形参
def func(name):
print (name)
# 'wupeiqi' 叫做函数func的实际参数,简称:实参
func('wupeiqi')
def func(name, age = 18):
print ("%s:%s" %(name,age))
# 位置参数
func('wupeiqi', 19)
# 使用默认参数
func('alex')
注:默认参数需要放在参数列表最后
#可变参数
*:表示将没有匹配的值放在一个元祖中
def func(*args):
print (args)
# 执行方式一
func(1,2,3,4,5)
# 执行方式二
li = [11,2,2,3,3,4,54]
func(li)
#** :表示将没有匹配的值放在一个字典中
def func(**kwargs):
print (args)
# 执行方式一
func(name='wupeiqi',age=18)
# 执行方式二
li={'name':'wupeiqi',‘age’:18, 'gender':'male'}
func(**li)
def func(*args, **kwargs):
print (args)
print (kwargs)
二、变量的作用域(全局变量和局部变量)
局部变量:函数内定义的变量名
全局变量:在函数外,可以被多个函数引用
total = 0; # 这是一个全局变量
def sum( arg1, arg2 ):
total = arg1 + arg2; # total在这里是局部变量.
print ("函数内是局部变量 : ", total)
return total
def totalprint():
print('total的值是',total)
return total
想局变量当全局变量使用,用global声明
三、闭包(函数嵌套)
def fun():
def add(x,y):
return x+y
return add
sum=fun()
print(sum(1,2))
四、函数递归
n!=n*(n-1)!
五、匿名函数(不用def定义的函数)
lambda创建匿名函数,是一个表达式
f=lambda x,y:x+y
print(f(1,2))
参数可以有也可以没有,也可以多个
例:
x=lambda:True
printI(t())
x=lambda x:x**2
print(x(2))
练习:
1.函数写出菲波那切数列。
2.写个字符串,通过遍历的方式计算字符串的长度
3.写入不定个数的字符串拼接第一个和最后一个字符串
4. 定义一个函数,输入不定个数的数字,返回所有数字的和
5.传入多个参数,以list返回
2. def jlen(str):
x = 0
for i in str:
x+=1
print u'该字符串的长度为:',x
return x
jlen('xiegezifuchuan')
3. def splicing(*args):
return args[0]+args[-1]
print splicing('1','2','3')
4.def sumofdigits(*args):
x=0
for i in args:
x+=i
return x
print sumofdigits(1,2,3,4,5)
5. def returnlist(*args):
li=[]
for i in args:
li.append(i)
return li
print returnlist(1,2,3,4)