第三章 3.4 函数

2018-06-18 03:20:15来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

 1 减少重复代码

2 使程序变的可扩展

3 使程序变得易维护

def sayhi(): 函数名

    print('hello , i'm nobody!')

sayhi() 调用函数

 

def calc():

    res = x**y

    return res 返回函数执行结果

c = cal(a,b)

print(c)

 

函数参数

def calc(x,y): 形参

    res = x**Y

    return res

c = calc(a,b) 实参

print(c)

 

默认参数

def stu_register(name,age,course,country='CN'):
    print(----注册学生信息--)

    print('姓名’,name)

......

关键参数

给函数传参数要按照顺序,不想按照顺序就可以使用关键参数,只指定参数名即可,关键参数必须放在位置参数之后

 

非固定参数

若你的函数定义是不确定传入多少个参数,就使用非固定参数

def register(name,age,*args,**kwargs):

    print(name,age,args,kwargs)

register('alex',22)

输出

alex 22 () {} 没有传值为空

register('jack',32,'CN','python',sex='male',country='shandong'):

输出

jack 22 ('CN','python'){'province':'shandong','sex':male}

返回值

函数外部代码想要获取函数执行结果,就可以用return语句把结果返回

def stu_register(name,age,course='py',country='cn'):

    print(--注册学生信息--)

   print('age',age)

    if age > 22:

        return False

    else:

        return True

registrition_status=stu_register('王大锤‘,22,course='py,country='jp')

if registrition_status:

    print('注册成功’)

else:

    pring("too  old to be a student.')

函数执行过程遇到return语句会停止并返回结果,如果未在函数中指定return ,那么函数的返回值为None

 

全局与局部变量

name = 'alex'

change_name():

    global name

    name = 'alex  金角大王'

    print('name')

 

嵌套函数

name = 'alex'

def change_name():

    name = 'alex2'

    def change_name2():

        name= 'alex3'

        print('第三层打印,name)

    change_name2() 调用内层函数

    print(第二层打印,name)

 change_name()

print('最后一层打印',name)

 

匿名函数

res=map(lambda x:x**2,[1,5,7,4,8])

for i in res:

    print(i)

1

25

49

16

64

 

高阶函数

变量指向函数,函数的参数能接受变量,那么一个函数就可接受另一个函数作为参数,这种函数称为高阶函数

def add(x,y,f):

    return f(x) +f(y)

res =add(3,-6,abs)

print(res)

只需满足下面一个条件,即是高阶函数:

接受一个或者多个函数作为输入

return 返回另一个函数

 

递归

一个函数在内部调用自身就是递归函数

def calc(n):

    print(n)

    if int(n/2) == 0:

        return n

    return calc(int(n/2))

calc(10)

10

5

2

1

递归特性:

1 必须有一个明确条件

2 每次深入一层递归时,问题规模相比上一次递归都应有所减少

3 递归效率不高,递归层次过多会导致栈溢出

 

递归的实际应用案例,二分法

 data=[1,3,6,7,9.12.14.16.17.18,20,21,22,23,30,32,33,35]

def binary_search(dataset,find_num):

    print(dataset)

    if len(dataset) >1:

        mid = int(len(dataset)/2)

        if dataset[mid] == find_num:

            print('找到了,detaset[mid])

        elif dataset[mid] > find_num:

            print('找的数在mid[%s] 左边 %dataset[mid]) 

           return binary_search(dataset[0:mid],find_num)

        else:

            print(找的数在mid[%s] 右边 %dataset[mid])

            return binary_search(dataset[mid+1:],find_num)

    else:

        if dataset[0] == find_num:

            print('找到数字了',dataset[0])

        else:

            print(’要找的数字[%s] 不在列表里 ‘%find_num)

binary_searc(data,66)

 

 

          

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:python3 开发面试题(collections中的Counter)6.7

下一篇:python学习第十一天:函数对象,嵌套,名称空间和作用域