第一阶段 -- python基础:【函数;参数;深浅拷贝;递归;嵌套函数;内建函数】

【菜鸟教程 – 函数】菜鸟教程 – 函数

1. 简介

  1. 函数的注释:
    在这里插入图片描述
    或者使用:help(print_star().doc)
  2. 返回值 return:
    1. 如果函数体中包含 return 语句,则 结束函数执行 并返回值;
    2. 如果函数体中不包含 return 语句,则返回 None 值。
    3. 要返回多个返回值,使用列表、元组、字典、集合将多个值“存起来”即可。
  3. 函数也是对象,内存地层分析在这里插入图片描述

2. 变量的作用域

  1. 全局变量:
    1. 在函数和类定义之外声明的变量。作用域为定义的模块,从定义位置开始直到模块
      结束。
    2. 全局变量降低了函数的通用性和可读性。应尽量避免全局变量的使用。
    3. 全局变量一般做常量使用。
    4. 函数内要改变全局变量的值,使用 global 声明一下
  2. 局部变量:
    1. 在函数体中(包含形式参数)声明的变量。
    2. 局部变量的引用比全局变量快,优先考虑使用。
    3. 如果局部变量和全局变量同名,则在函数内隐藏全局变量,只使用同名的局部变量
  3. 若要在函数内改变全局变量的值,增加global关键字声明。在这里插入图片描述

3. 参数的传递:本质是传递地址

  1. 传递可变对象的引用:
    可变对象有:字典、列表、集合、自定义的对象等。
    在这里插入图片描述
    结果为:
    在这里插入图片描述
  2. 传递不可变对象的引用:(数字、字符串、元组、function等),由于不可变对象无法修改,系统会新创建一个对象。在这里插入图片描述
    在这里插入图片描述

4. 浅拷贝和深拷贝

  1. 内置函数:copy();deepcopy()
    浅拷贝:不拷贝子对象的内容,只是拷贝子对象的引用。
    深拷贝:会连子对象的内存也全部拷贝一份,对子对象的修改不会影响源对象。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 传递不可变对象包含的子类对象是可变的情况:
    在这里插入图片描述
    在这里插入图片描述

5. 参数的几种类型

  1. 位置参数:
  2. 默认值参数:
    在这里插入图片描述
  3. 命令参数:
    在这里插入图片描述
  4. 可变参数:指的是“可变数量的参数”
    1. param*: 将多个参数收集到一个“元组”对象中。
    2. param **: 将多个参数收集到一个“字典”中。
  5. 强制命名参数:在带星号的“可变参数”后面增加新的参数,必须在调用的时候“强制命名参数。
  6. 在这里插入图片描述

6. lambda匿名函数

在这里插入图片描述
在这里插入图片描述

7. eval()函数

  1. 功能:将字符串str当成有效的表达式来求值并返回计算结果。
  2. 语法:语法: eval( source[, globals[, locals]]) --> value
    参数:
    source :一个 Python 表达式或函数 compile() 返回的代码对象
    globals :可选。必须是 dictionary
    locals :可选。任意映射对象

8. 递归(三大要素)

【知乎上关于递归的帖子】https://www.zhihu.com/question/31412436

  • 第一要素:明确你这个函数要干什么。
  • 第二要素:寻找递归结束条件。
  • 第三要素:找出函数的等价关系式。
  1. 打印菲波那切数列的前n项。使用循环和递归两种方式
def recursion(m):
    if m < 2:
        return 1
    else:
        return recursion(m-1) + recursion(m-2)

print(recursion(m=4))
  1. 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想吃时,只剩下一个桃子了。求第一天共摘多少个桃子。(迭代法)
def recursion(n):
    i = n
    i -= 1
    if i == 0:
        return 1
    else:
        return recursion(i)*2+2

print(recursion(10))

9. 嵌套函数;内部函数;数据隐藏

10. nonlocal / global

  1. global:函数内要修改全局变量,要声明global。
    在这里插入图片描述
  2. nonlocal:如果想修改上一级函数的变量,需要nonlocal来声明。
    在这里插入图片描述

11. LEGB规则

  1. Python在查找“名称”时,是按照 LEGB 规则查找的:
    Local---->Enclosed ---->Global ---->Built in
  2. Local:指的就是函数或者类的方法内部
    Enclosed:指的是嵌套函数(一个函数包裹另一个函数,闭包)
    Global:指的是模块中的全局变量
    Built in:指的是 Python 为自己保留的特殊名称。

12. 内建函数 (build-in function)

官方内建函数文档: https://docs.python.org/3/library/functions.html

  • 查看内建函数(__builtins__):
    dir() is a powerful inbuilt function in Python3, which returns list of the attributes and methods of any object (say functions , modules, strings, lists, dictionaries etc.)
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值