美文网首页
Day8-课堂笔记-函数

Day8-课堂笔记-函数

作者: 晓晓的忍儿 | 来源:发表于2018-07-25 17:21 被阅读0次

1.函数的返回值

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

函数调用:

a.回到函数的地方
b.传参(实参给形参赋值)
c.执行函数体
d.执行完函数体,将返回值返回给函数调用表达式
e.回到函数调用的位置
函数的函数体只有在调用之后才会执行

2.return关键字

a.将return后面的值,返回给函数调用表达式
b.结束函数
函数结束:
    a.函数体执行完
    b.遇到return

3.函数调用表达式:python中每个函数调用表达式都是有值的

(python中每个函数都是有返回值的,返回值就是return后面的值
如果没有return,那么函数的返回值就是None)
练习:写一个函数,判断指定的年龄是否属于成年人(返回结果)

def age_ren(age):
    if age>18:
        return  '是成年人'
    else:
        return  '还未成年'
str=age_ren(10)
print(str)
if age_ren(10)=='是成年人':
    print('可以进入网吧')
else:
    print('回家吃奶去吧')

结果:

还未成年
回家吃奶去吧
练习:写一个函数,求1+2+3+...,和不能大于10000

def sum(n):
    sum=0
    for x in range(1,n+1):
        sum+=x
        if sum>10000:
            return sum
print(sum(10000))
def sum1():
    sum1=0
    sum2=0
    while True:
        if sum2+sum1>10000:
            return sum2,sum1 
#python中函数可以有多个返回值,在return
        #后面返回多个值,每个值之间用逗号隔开。返回值是一个元组
            sum2 += sum1
print(sum1())

结果:

10011

4.作用域

  • 作用域:变量可以使用的范围(函数和类可以影响变量的作用域)
  • 全局变量:从声明开始,到文件结束都可以使用
  • 局部变量:在函数(类)中声明的变量,作用域是从声明开始到函数(类)结束
a=10 #全局变量
def func1():
    b='a' #局部变量
    print(a)
    print(b)
for _ in range(10):
    c=100 #全局变量
print(c)
func1()
print(a)

结果:

100
10
a
10

  • global和nonlocal
    global:如果全局变量中没有相同的变量名,就在函数中创建一个全局变量
    格式: global 变量名
    变量名=值
    nonlocal:在函数中声明函数的时候,才需要使用
# python中函数里面可以声明函数
abc='abc'
bcd='bcd'
def func4():
    abc='aaa' #如果全局变量名和局部变量名相同,在函数中使用的是局部变量
    print(abc)
    global bcd #说明bcd是一个全局变量,并可以在函数和类中创建一个全局变量
    bcd = 200
    print(bcd)
func4()
print(abc)
print(bcd)

结果:

aaa
200
abc
200
练习:声明一个变量,统计一个函数调用的次数

sum1=0
def math():
    global sum1
    sum1=1
    print('===')
math()
math()
math()
print(sum1)
def func8():
    a1=10
    print('外部:',a1)
    def func9():
        # a1 = 100
        # print('内部:', a1)
        nonlocal a1
        a1=100
        print('内部:', a1)
    func9()
    print('外部:',a1)
func8()


结果:

===
===
===
1
外部: 10
内部: 100
外部: 100

5.匿名函数

匿名函数:本质还是函数,以另外一种简单的方式来声明
格式:函数名=lambda 参数列表:返回值--->结果就是一个函数变量

#写一个函数计算两个数的和
sum=lambda x,y:x*y
print(sum(10,20))
print((lambda x:x*4)(2))

结果:

200
8

6.函数作为变量

声明一个函数就是在声明一个变量。函数名可以当成变量来使用
可以打印,可以赋值,可以查看类型,可以作为函数的参数,可以作为函数的返回值

#将函数func1赋给变量a,这个时候a就是一个函数
def func1(a):
    print(a)
    return 10
print(func1,type(func1))
a=func1
b=func1(10)+100
a('aaa')
#将函数func1作为列表的元素
functions=[func1,func1(10)]
functions[0]('b')

结果:

10
aaa
10
b

1)将函数作为参数

def my_sum(*numbers):
    sum1=0
    for item in numbers:
        sum1+=item
    return sum1
def my_mul(*numbers):
    sum1=1
    for item in numbers:
        sum1*=item
    return  sum1
def operation(method,x,y):
# 求10和20的和
result=operation(my_sum,1,3)
print(result)
# 求10和20的积
result=operation(my_mul,1,3)
print(result)
# 判断10是否大于20
result3=operation(lambda x,y:x>y,10,23)
# result3=operation(lambda x,y:x if x>y else y,10,5)
print(result3)
'''
    :param method: 运算方式
    :param x: 变量1
    :param y: 变量2
    :return: 返回两个值
    '''
    return method(x,y)

结果:

4
3
False

2)三目运算

python中的三目运算符
值1 if 表达式 else 值2 --->判断表达式是否为True,为True
整个表达式的结果为值1,否则是值2

print(a=10 if 10>20 else 20)

结果:

20

3)将函数作为函数的返回值

print((lambda x,y:x*y)(10,20))

结果:

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

def get_method(method):
    if method=='+':
        def get_sum(*number):
            num = 0
            for item in number:
                if num==0:
                    sum1=item
                else:
                    sum1+=item
                num += 1
            if num<2:
                sum1=None
            return sum1
        return get_sum
    if method == '>':
        return lambda x,y:x>y
    if method == '<':
        return lambda x,y:x<y
    if method=='-':
        def get_cha(*number):
            num=0
            for item in number:
                if num==0:
                    sum2=item
                else:
                    sum2-=item
                num += 1
            if num<2:
                sum2=None
            return sum2
        return get_cha
    if method=='*':
        def get_mul(*number):
            num=0
            for item in number:

                if num==0:
                    sum3=item
                else:
                    sum3*=item
                num += 1
            if num<2:
                sum1=None
            return sum3
        return get_mul
print(get_method('+')(10,20,30))
print(get_method('*')(10,20,30))
print(get_method('-')(-10,-20-30))
print(get_method('>')(10,20))
print(get_method('<')(10,20))

7.递归函数

*递归函数:在函数的函数体中调用函数本身理论上循环能做的事情,递归都可以做
*对递归的要求:能不用就用
函数调用的过程是一个压站的过程(每调用一次函数,系统都有为其分配内存空间,用来存储函数中声明的变量和参数等,这个内存在函数调用结束后会自动销毁)

  • 写递归函数
    a.找临界值(跳出循环-->return)
    b.找关系:假设当前函数对应的功能已经实现,
    找到f(n)和f(n-1)的关系
    c.使用f(n-1)与b中的关系去实现f(n)的功能
#普通函数

def get_sum(n):
    sum1 = 0
    for x in range(1,n+1):
        sum1+=x
    return sum1
print(get_sum(10))
# 递归函数
def my_sum2(n):
    # 找到临界值
    if n==1:
        return 1
    return my_sum2(n-1)+n
print(my_sum2(10))

# 练习:用递归求2*4*6*...*n(n是偶数)
def my_mul(n):
    if n==2:
        return 2
    # 关系
    # f(x)=f(x-2)*n
    if n%2!=0:
        n=n-1
    return my_mul(n-2)*n
print(my_mul(10))

结果:

55
55
3840



**




相关文章

  • Day8-课堂笔记-函数

    1.函数的返回值 函数调用: 2.return关键字 3.函数调用表达式:python中每个函数调用表达式都是有值...

  • 009.Python学习笔记:Day8-使用python+sel

    Python学习笔记:Day8-使用selenium控制手chrome浏览器 使用Selenium控制Chrome...

  • GeekBand C++面向对象高级编程(上)第二周学习笔记

    课堂笔记: 三个特殊函数: String(const String& str);//拷贝构造函数 String& ...

  • day8-函数

    1.函数的返回值: python中每个函数都是有返回值的,返回值就是return后面的值。如果函数中没有retur...

  • Day8-课堂笔记-Django8

    用户权限当我们修改用户权限模型时在djg1->settings:末尾添加 permission->models.p...

  • 2018-05-21

    函数的学习笔记和课堂练习笔记 一位数组的位移; Include Int main(){ Int n,x,i; In...

  • 008.Python学习笔记:Day8-文档注释

    Python学习笔记:Day8-文档注释 现在我们开始要写代码了。下面一段代码实例。 我们会注意到文档中会添加一些...

  • day8-课堂总结

    1.列表(list) - 可变,有序 -[] a.获取元素 - 通过下标获取元素b.增删改c.相关运算:+,*,i...

  • Day8-函数作业

    1.写⼀个函数将⼀个指定的列表中的元素逆序(例如[1, 2, 3] -> [3, 2, 1])(注意:不要使⽤列表...

  • day8-函数续

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

网友评论

      本文标题:Day8-课堂笔记-函数

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