day 9

2018-07-26  本文已影响0人  02b2972e6a93

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))

能不用就不用递归。

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

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

自动销毁 )

上一篇 下一篇

猜你喜欢

热点阅读