python之路 - 基础4
1.函数非固定参数
*args *kwargs


def test(*args):
print (args)
test(1,2,3,4,5)
test(*[1,2,3,4,5]) #*args = *[1,2,3,4,5] args=tuple([1,2,3,4,5])
l = [1,2,3]
test(*l)
def test1(x,*args):
print (x)
print (args)
test1(1,2,3,4,5,6,7)
#**kwargs,把n个关键字参数,转换成字典的方式
def test2(**kwargs):
print (kwargs)
test2(name='jiachen',age=27)
d = {'name':'jiachen','age':27}
test2(**d)
def test3(x,*args,**kwargs):
print (x)
print (args)
print (kwargs)
test3(1,*[2,3,4],**{'name':'jiachen','age':27}) View Code2.全局变量、局部变量


#全局变量
school = 'lianhedaxue'
def test(name):
#强制修改全局变量
global school
school = 'haha'
print ('before change',name,school)
name = 'Jack' #这个函数就是这个变量的作用域
print ('after change',name)
name = 'Tom'
test(name)
print (name)
print (school) View Code3.递归函数
递归函数,一个函数在内部调用自己
必须有一个明确的结束条件
每次进入更深一层递归,问题规模相比上次递归都应有所减少
效率不高,递归层次过多导致栈溢出


def calc(n):
print (n)
if int(n/2) > 0:
return calc(int(n/2))
print ("->",n)
calc(10) View Code4.高阶函数
变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数成为高阶函数


def add(x,y,f):
return f(x) + f(y)
res = add (-1,2,abs)
print (res) View Code 相关推荐
夜斗不是神 2020-11-17
wordmhg 2020-11-06
世事一场大梦 2020-11-17
xiaoseyihe 2020-11-16
Morelia 2020-11-03
CloudXli 2020-11-03
pythonxuexi 2020-10-30
三石 2020-10-29