美文网首页
python函数进阶1

python函数进阶1

作者: Dxes | 来源:发表于2019-11-15 19:13 被阅读0次
1.什么是返回值
1)返回值的作用:讲函数里面的数据传递到函数外面
2)初学者怎么确定需不需要返回值,看函数的功能完成后会不会产生新的数据
3)怎么去确定函数返回值:声明函数的时候return后面的值就是函数的返回值;如果没有return,函数返回值就None
a.return:关键字;只能出现在函数体中
                            作用:确定函数的返回值;结束函数(执行函数体的时候,如果遇到return函数直接结束,同时将return后面的值作为函数返回值)
4)怎么获取函数的返回值:函数调用表达式的值就是函数的返回值(获取函数调用表达式的值)
                                          函数调用表达式就是函数调用语句;普通数据能做的事情函数调用表达式都可以做
确定函数返回
def ld_sum(num1, num2):
    return num1 + num2


def func1():
    print("===")
    print("====")
    return  # return None
    print("+++++")


func1()
2.获取函数返回值
def func2(num):
    # num = 2
    # return 4
    return num * 2


# a.函数调用表达式可以给变量赋值
# a = 4;print(a)
a = func2(2)
print(a)

# c.[4,12];a =4,[a,10]
list1 = [func2(2), 10]
print(list1)


def func3():
    return []


# [].append(100)
list2 = func3()
list2.append(100)
print(list2)
2.函数的调用过程
1)执行过程
a.回到函数声明的位置
b.传参    -   保证每个参数都有值
c.执行函数体
d.执行完函数体确定返回值:看执行完函数体的时候有没有遇到return,如果遇到了return后面的值就是返回值:没有遇到就是None
e.回到函数调用的位置(这个时候函数调用表达式的值才是函数的返回值)

2)内存变化:函数的调用过程是一个压栈过程
调用函数的时候系统会自动在栈区间为这个函数开辟一个专用的内存区域,专门来保存在这个函数中声明的变量和产生的数据(形参也是声明在函数的变量);当函数调用结束的识货,这个内存区域会自动销毁(销毁前会将返回值扔出来)
def func4(n):
    # n = 3
    print(n)
    return n * 2   # return 6


a = func4(3)  # a = 6
print(a)
变量的作用域 - 变量可以使用的范围

全局变量和局部变量

1)全局变量
没有声明在函数中类或者类中的变量都是全局变量
全局变量从声明开始到文件结束的任何地方都可以使用

2)局部变量
声明在行数中的变量就是局部变量
从声明开始到函数结束(形参是声明在函数中的变量)

全局变量

# a是全局变量
a = 10
print("在外部", a)
# b是全局变量
for b in range(4):
    pass

for x in range(3):
    print("循环中:", a)


def func1():
    print("在函数里面", a, b)

局部变量

# aa和bb是局部变量
def func2(aa):
    bb = 200
    print("函数内部", aa)

    def func3():
        cc = 300
        print("函数中函数", aa, bb)

    func3()


func2(100)

# print("函数外部",aa)      NameError: name 'aa' is not defined

# 3.global和nonlocal
"""
global和nonlocal这两个关键字只能在函数体中使用

1)global
使用方法:在函数中给变量赋值前加: global  变量名
作用:在函数中声明全局变量

2)nonlocal
使用方法:在函数中给变量名赋值前加;nonlocal 变量名
作用:在局部的局部中修改局部变量的值
"""
# 全局变量a1
a1 = 100
b1 = 100


def func4():
    # 声明一个局部变量a1
    a1 = 200
    # 声明b1是全局变量
    global b1
    # 修改全局变量的值
    b1 = 200
    # 使用的是局部变量a1,b1
    print("函数中", a1, b1)


func4()
# 使用的是全局变量a1
print(a1, b1)
print('4)======================nonlocal的使用=====================')


def func5():
    a2 = 100

    def func6():
        nonlocal a2
        a2 = 200

        # 这儿的a3必须上层函数中已经声明过才行
        # nonlocal a3
        # a3 = 400

        print('函数的函数中:', a2)
        return a2

    func6()
    print('函数中:', a2)
    # print('a3')    # SyntaxError: no binding for nonlocal 'a3' found


func5()

什么是匿名函数

"""
匿名函数还是一个函数,普通函数中除了声明的语法以外其他语法基本都适用于匿名函数
1)声明匿名函数
函数名 = lambda 参数列表:返回值

相当于:
def 函数名(参数列表):
        return 返回值

2)说明:
lambda    -  关键字,固定写法
参数列表       -形参:参数名1,参数名 2,参数名3,……
:        -   固定写法
返回值       -相当于普通函数体中 的return语句
"""
# 匿名函数的调用和普通函数的调用没有区别
# 用匿名函数实现求两个数的和
func1 = lambda num1, num2: num1 + num2

print(func1(10, 20))

# 练习:写一个匿名函数判断指定的年是否是润年
func2 = lambda year: (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)
print(func2(2000))

什么是递归函数
"""
声明函数的时候调用函数本身,这样的函数就是递归函数(自己调用自己)
递归可以实现循环效果,原则上除了死循环,其它循环递归都可以解决
"""
# RecursionError: maximum recursion depth exceeded while calling a Python object
# def func1():
#     print("==============")
#     func1()
#
#
# func1()

# 2.递归怎么用
"""
使用递归的套路:
a.设置临界值   -  循环结束的条件(保证函数结束)
b.找关系   -  找f(n)和f(n-1)的关系
c.假设函数的功能已经实现,通过f(n-1)去实现f(n)的功能

"""


# 写一个递归函数,计算1+2+3+4+……+N
def ld_sum(n):
    # 1.找临界值
    if n == 1:
        return 1

    # 2.找关系
    """
    f(n)  -> 1+2+3......+n-1+n
    f(n - 1)  -> 1+2+3...+n -1
    f(n) =f(n-1) + n
    """
    # 3.用f(n-1)实现f(n)的功能
    return ld_sum(n - 1) + n


print(ld_sum(100))


# 写一个递归函数,求斐波那契数列的第n个数
# 1,1,2,3,5,8.13.21.……
def series(n):
    # 1.找临界值
    if n == 1 or n == 2:
        return 1
    # 2.关系:f(n)=f(n-1)+ f(n-2)
    return series(n - 1) + series(n - 2)


print(series(9))

# 练习:
"""
n = 4
*
**
***
****

n = 3
*
**
***
"""
def x(n):
    if n == 1:
        print("*")
        return
    x(n-1)
    print(n*"*")
x(5)

相关文章

  • python函数进阶1

    1.什么是返回值 确定函数返回 2.获取函数返回值 2.函数的调用过程 变量的作用域 - 变量可以使用的范...

  • python进阶

    教程地址:python进阶 - 慕课网 python函数式编程 变量可以指向函数: f = absprint(f)...

  • 三、Python函数基础

    字符串进阶 格式化输出 列表进阶 函数 变量的作用域和global变量 lambda匿名函数 python 使用 ...

  • 诺,你们要的Python进阶来咯!我还没见过比这全面的!

    一、Python进阶初体验——内置函数 Python 中内置有很多常用的函数,这些函数无需从模块中导入,可直接使用...

  • Python进阶语法——函数式编程、模块,面向对象

    一、 Python进阶学习 一、函数式编程 1.1函数式编程 1.2高阶函数 1.2.1 import mathd...

  • Python从入门到精通

    Python语法的三个阶段 Python基础语法函数是编程 Python进阶语法面向对象编程 Python高级语法...

  • python 总结

    python 随笔 关键字 基础 内建函数 技巧 模块 进阶

  • 07 C函数

    1、why函数? 2、函数进阶 3、递归函数

  • python进阶函数

    文章里的内容出自阅读廖雪峰的python教程总结而得 变量可以指向函数 函数名也可以指向变量 函数作为参数 内建函...

  • python 函数进阶

    函数进阶 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的...

网友评论

      本文标题:python函数进阶1

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