美文网首页
day10-总结

day10-总结

作者: RurouniKenshin | 来源:发表于2018-07-25 15:11 被阅读141次

函数的返回值

a.就是返回给使用者的值
b.就是return后面的值
c.就是函数调用表达式的值
python中每个函数都有返回值,返回值就是return后面的值,如果函数中没有return,那么函数的返回值为None

1.函数调用

在存在return时在执行完函数体后,将返回值返回给函数调用表达式,然后回到函数调用的位置

2.return关键字

将renturn后面的值返回给函数调用表达式
函数调用表达式:python中每个函数调用表达式都有值

def f1(a):
    print(a)
f1('a')
print(f1('a'))

# 练习:写个函数,判断指定的年龄是否属于成年人(结果返回)
def is_adult(age):
    if age >= 18:
        return True
    return False
print(is_adult(30))
if is_adult(10):
    print('可以进网吧')
else:
    print('未成年人禁止进入')
person = {'name':'jack','is_adult':is_adult(30)}
print(person)

3.函数的结束

a.函数执行完
b.遇到return

def fun2():
    print('123')
    return 10
    print('333')

print(fun2())

# 练习 写一个函数,求1+2+3+......,和不能大于10000
def sum_limit(a):
    sum1 = 0
    x = 1
    while True:
        if sum1 + x >= a:
            return sum1,x-1
        sum1 += x
        x += 1
            
print(sum_limit(10000),type(sum_limit(10000)))
注:python中函数可以由多个返回值,在return后面返回多个字,每个值之间用逗号隔开,返回为元组

作用域

全局变量:文件开始到结束都能使用
局部变量:开始于函数声明,结束于函数声明

1.全局变量

a=10 #这是一个全局变量

print(a)

def func1():
    print(a)

for x in range(10):
    b=100#这是一个全局变量
    print(a)
    print(b)

2.局部变量

def func3():
    aaa=100#局部变量
    print(aaa)

3.global和nonlocal

  • global:在函数中创建一个全局变量
    格式:
    global 变量名
    变量名=值
bcd='bcd'
abc='abc'#全局变量
def func4():
    abc='aaa'#局部变量,如果全局变量名和全局变量名相同,在函数中使用的是局部变量
    print(abc)
    global bcd  #说明bcd是一个全局变量
    bcd=200
    print(bcd)
func4()
print(abc)
print(bcd)
#声明一个变量 统计一个函数调用的次数
count=0
def my_func():
    global count
    count+=1
    print('==========')
my_func()
my_func()
my_func()
print(count)
  • nonlocal :在函数中声明函数的时候才需要使用
def func11():
    a_11=10
    print(a)
    #python中函数中可以声明函数
    def func12():
        nonlocal  a_11
        a_11=100
        print('内部',a_11)
        print('内部函数')
    func12()
    print('外部',a_11)

匿名函数

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

匿名函数的声明:

函数名 = lambda 参数列表:返回值 --> 结果是一个函数变量
lambda 是声明匿名函数的关键字

# 写一个函数,计算2个数的和
my_sum1 = lambda a,b:a+b
print(my_sum1(1,2)) 
funcs = []
for i in range(5):
    funcs.append(lambda x:x*i)
print(funcs[2](2)) # 8
print(funcs[4](2)) # 8

函数作为变量

声明一个函数就是在声明一个变量
1.函数名可以当成变量来使用
2.可以打印,可以赋值,可以查看,一般对于变量的操作都能对函数进行

# 函数名func1可以当做变量使用
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]('abc')

1.将函数作为参数

def my_sum(*number):
    sum1 = 0
    for item in number:
        sum1 += item
    return sum1

def my_mul(*number):
    sum1 = 1
    for item in number:
        sum1 *= item
    return sum1

def operation(x,y,method = ''):
    try:
        return method(x,y)
    except:
        return False

print(operation(3,6,my_sum))

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

a = 10 if 10 > 20 else 20
result1 = operation(10,20,my_sum)
result2 = operation(10,20,my_mul)
result3 = operation(10,20,lambda x,y:x<y)
result4 = operation(10,20,lambda x,y:x if x>y else y)
print(result1,result2,result3,result4)

2.将函数作为函数的返回值

# 写一个函数有一个参数,要求传入一个运算符号(+,-,*,>,<),返回符号对应的功能
# + --> 求和功能
def sum1(*number):
    sumx = 0
    for item in number:
        sumx += item
    return sumx
# - --> 求差功能
def sum2(*number):
    sumx = number[0]*2
    for item in number:
        sumx -= item
    return sumx
# * --> 求乘功能
def sum3(*number):
    sumx = 1
    for item in number:
        sumx *= item
    return sumx
# 程序编码:
def operation_char(char):
    if char == '+':
        return sum1
    elif char == '-':
        return sum2
    elif char == '*':
        return sum3
    else:
        return lambda *number:None

print(operation_char('+')(10,20))
print(operation_char('-')(10,20))
print(operation_char('*')(10,20))
print(operation_char('i')(10,20))

递归函数

1.什么是函数

在函数的函数体中调用函数本身
循环能做的事情理论上递归都可以做

2.怎么写一个递归函数

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

# 计算1+...+n:
def sum1(n):
    if n == 1:
        return 1
    return n+sum1(n-1)

print(sum1(10))
# 用递归求2*4*6...n:
def sum2(n):
    if n == 2:
        return 2
    return n*sum2(n-2)

print(sum2(8))
# 递归打印图案
'''n=3
***
**
*
'''
def gh(n):
    if n < 1:
        return
    print('*'*n)
    gh(n-1)

gh(4)

注:1.对递归的要求:能不用就不用。2.函数调用的过程是一个压栈的过程(没调用一次函数,系统都要为其分配内存空间,用来存储函数中声明变量和参数等,这个内存在函数调用结束后会自动销毁)

相关文章

  • day10-总结

    函数的返回值 a.就是返回给使用者的值b.就是return后面的值c.就是函数调用表达式的值python中每个函数...

  • Day10-总结

    01-recode 1.函数的调用 过程:回到函数声明的位置用实参给形参赋值执行函数体过去返回值回到函数调用的位置...

  • Day10-总结

    一.函数的返回值 1.什么是返回值 返回给函数调用者的值(概念) 是return后面的值(语法) 是函数调用表达式...

  • day10-函数总结

    02-变量的作用域 1.变量的作用域 变量在程序中能使用的范围 1.全局变量 声明在函数或者类的外部的变量都是全局...

  • day10-课堂总结

    1.函数的调用 过程:回到函数声明的位置用实参给形参赋值(传参)执行函数体获取返回值回到函数调用的位置 压栈:当调...

  • day10-课后总结

    函数的应用 1.不定长参数 *参数名:将位置参数作为元祖的元素,参数就是一个元祖**参数名:将关键字参数,以参数名...

  • 前端学习day10-总结

    关键词: 美团登录界面: 头像 昵称 hover 一 . 如何把图片做成圆形头像 border-radius: 5...

  • 21天女神养成记 day10

    Day10-【21天女神养成记-冬天爱吃火锅 可是吃完长痘怎么办??】-邸红敏-2018.12.17 直接来干货,...

  • 【Day20&Day21】G4小鲸鱼 优秀作业分析

    查阅 DAY10- DAY19 的同学优秀作业,写出自己具体学到了哪些以及哪些可以改进的地方。 优秀作业值得借鉴的...

  • 手写我心day10-写作总结

    大长文的思索与总结。 前两天一激动写了一篇2000+的大长文,收效颇好。从早上到中午不停的收到评论和赞扬还有私信的...

网友评论

      本文标题:day10-总结

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