day 9

作者: 02b2972e6a93 | 来源:发表于2018-07-26 08:40 被阅读0次

    part 1 函数回顾

    函数的声明 def 函数名(形参)
    def 函数体(形参):
         函数体
    
    函数调用顺序 1.返回函数声明的地方 2.将实参赋值给形参 3.执行函数体 4.执行完函数体,将返回值给函数调用表达式 5.回到函数位置
    函数的参数 位置函数和关键字参数 给参数赋默认值 参数的默认值(有默认值的放在后面) 参数个数不确定加*

    part 2 函数的返回值

    1、

    a.函数返回值就是函数返回给调用者的值 b.return关键字后面的表达式 c.函数调用表达式的值

    python 每个函数都有返回值,返回值就是return,如果函数没有return那么返回值就是None

    3、return关键字
    a.将return关键字后面的值返回给函数调用表达式
    b.结束函数
    c.函数调用表达式都是有值的

    def func1():
        print('aaa')
    func1() #函数调用表达式
    def sum1(x,y):
          #x = 10 y =20
          return x+y #return 30
    
    #练习:写一个函数,判断指定的年龄是否成年
    def age(n):
           if n >= 18:
                return  Ture
            else:
                 rerurn False
    if age(10)
        print('可以去网吧')
    else:
        print('回家做作业吧')
    

    4、`

    函数的结束 1.函数执行完 遇到return

    如何写一个函数(思路)
    eg:写一个函数下载指定地址数据

    def download(url):
    if #判断有没有网
            #return
            #网络请求
            #请求数据
            #保存数据
    

    写一个函数,求1+2+3+....和不能大于10000

    def sum1():
        sum1 = 0
        number = 1
        while True:
            if sum1 + number >= 10000:
                return sum1, number-1  #python可以返回多个值,用逗号隔开,返回值是一个元组。
            sum1 += number
            number += 1
    print(sum1())
    

    part 3 作用域

    作用域:一个变量可以使用的范围,就是这个变量的作用域。(函数和类可以影响变量的作用域)

    1.全局变量:从声明开始到文件结束都可以使用。

    2.局部变量:在函数中声明的变量是局部变量。作用域是声明开始到函数结束。

    a = 10 #这是一个全局变量
    print(a)
    
    #3.global和nonlocal
    abc = 'abc'
    def func1():
        abc = 'aaa'#局部变量,如果全局变量和局部变量名相同,在函数中使用的是局部变量
        print(abc)
    
        global bcd  #声明bcd是一个全局变量
        bcd = 200
        print(bcd)
    func1()
    

    global在函数中创建一个全局变量

    格式:global 变量名

    变量名 = 值

    #统计一个函数调用的次数
    count = 0
    def my_func():
        global count
        count += 1
        print('====')
    

    nonlocal

    python中函数可以声明函数

    def func11():
      a_11 =10
      print(a)
    
      def func12():
          nonlocal a_11
          a_11 = 100
          print('内部:',a_11)
          print('内部函数')
    

    part 4 匿名函数

    匿名函数:本质还是函数,以另外一种简单的方式来声明

    #匿名函数的声明:
    #lambda参数列表:返回值 --->结果就是一个函数。
    #写一个函数 计算两个数的和
     def sum1(x,y):
         return x+y
     print(sum1(10,20))
     my_sum2 = lambda x,y:x+y
     print(my_sum2(10,20)
    

    part 5

    声明一个函数就是在声明一个变量

    函数名可以当成变量来使用。可以打印,可以赋值,可以查看类型 函数也可以作为函数的参数,也可以作为函数的返回值 函数名func1可以当作变量来使用
     a = 10
     def func1(a):
         print(a)
     print(func1(a),type(func1))
     #将函数func1赋给变量a,这个时候a就是一个函数
     a = func1
    

    讲函数func1作为列表的元素

     function = [func1]
     function[0]('abc')
    

    可以将函数作为参数

     def sum1(*number):
         sum1 = 0
         for i in number:
             sum1 += i
         return sum1
    
     def mul1(*n):
         sum2 = 0
         for i in n:
             sum2 *= i
         return sum2
    

    python中三目运算符

    值1 if 表达式 else 值2--->判断表达式是否为True,如果为TRue整个表达式的结果是值1,否则为值2

    3.将函数做为函数的返回值

    写一个函数有一个参数要求传入一个运算符号(+-*><)
    返回符号对应的功能

    def get_method(char):
        if char == '+':
            return lambda x,y:x+y
        elif char == '>':
            return lambda x,y:x>y
        elif char == '*':
            def func(x,y):
                return x*y
            return func
        else:
            print('别调皮')
        return
    print(get_method('+')(10,20))
    print(get_method('>')(10,20))
    print(get_method('*')(10,20))
    

    part 6 递归函数

    递归函数:在函数的函数体中调用函数本身,这个函数就是递归函数

     def func():
         print('====')
         func()
    

    循环能做的事情,理论上递归都可以做。

    怎么去写递归 a.找临界值(跳出循环-->return) b.假设当前函数对应的功能已经实现找到f(n)和f(n-1)的关系 c.使用f(n-1)与前面找到的关系去实现f(n)的功能
    #1+2+3+4+。。n写一个递归函数实现
     def sum1(n):
         #1,找到临界值
         if n == 1:
             return 1
         #找sum1(n)和sum1(n-1)的关系
         #关系:sum1(n) = sum(n-1) + n
         return sum1(n-1) + n
     print(sum1(10))
    

    用递归求246

     def mul(n):
         if n % 2:
             print('请输入奇数')
             return None
         if n == 2:
             return 2
         return mul(n-2) * n
     print(mul(8))
    
    # def pic(n):
    #     if n == 1:
    #         print('*')
    #         return None
    #     print('*'*n)
    #     pic(n-1)
    # pic(5)
    
    def pic(n):
        if n == 1:
            print('*')
            return
        pic(n-1)
        print('*'*n)
    print(pic(5))
    

    能不用就不用递归。

    函数调用的过程就是一个压栈的过程。(每调用一次函数,系统

    都要为其分配空间,用来存储函数中声明和参数等,这个内存在函数调用结束后

    自动销毁 )

    相关文章

      网友评论

          本文标题:day 9

          本文链接:https://www.haomeiwen.com/subject/jcqmmftx.html