老高说,基本功不扎实会在工作中遇到很多的坑,非常同意…


函数定义示例

1.含有返回值

# -*-coding:utf-8-*-
def add(a, b):'''两数相加'''sum = a + breturn sum c = add(1, 2)print c

2.不含有返回值

# -*-coding:utf-8-*-
def add(a, b):'''两数相加'''sum = a + bprint sumreturnadd(1, 2)

3.返回一个列表

# -*-coding:utf-8-*-
def add(a, b):'''两数相加'''sum = a + bprint sumreturn [sum, a, b]res = add(1, 2)
print res
# 输出:[3, 1, 2]

要点

1.我们使用def来定义函数,python执行def时,会创建一个函数对象,并绑定到函数名变量上。
2.如果打印函数的type,结果是<class 'function'>
3.括号是调用符(call)
内存说明


函数也是对象,内存底层分析

python函数被调用的时候,在栈空间中,会创建栈帧,保存局部变量的值。函数调用结束后,栈帧被销毁。
局部变量与全局变量的保存位置不同。不能再函数中直接调用函数外面声明的变量。
如果要在函数内改变全局变量的值,需要增加global关键字声明


变量的作用域–全局变量和局部变量

# -*-coding:utf-8-*-
c = 100def add(a, b):global cc = 200returnadd(1, 2)
print c
# 输出:200

局部变量和全局变量效率测试




参数的传递

传递不可变对象的引用

注意:以int为例,Java在传参的时候就会创建一个新的对象,而python在传参的时候传递的还是原来的对象的引用,只有在赋值的时候才会进行新对象的创建。

浅拷贝和深拷贝


(1)浅拷贝示例


内存分析

(2)深拷贝示例

内存分析

【Python基础避坑】函数内存底层分析,全局变量/局部变量,参数传递,浅拷贝/深拷贝相关推荐

  1. Python基础day05【函数应用:学生管理系统、拆包、今日总结】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day05[函数(函数传参的两种形式.函数形参).拆包.引用.可变与不可变类型.引 ...

  2. Python基础day05【函数(局部变量、全局变量、多函数执行流程、函数返回值、函数参数)、拆包、引用、可变与不可变类型、函数注意事项】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day05[函数(函数传参的两种形式.函数形参).拆包.引用.可变与不可变类型.引 ...

  3. python导入模块的语法结构_python学习第五讲,python基础语法之函数语法,与Import导入模块....

    python学习第五讲,python基础语法之函数语法,与Import导入模块. 一丶函数简介 函数,就是一个代码块,这个代码块是别人写好的.我们调用就可以. 函数也可以称为方法. 1.函数语法定义 ...

  4. Python训练营—Tesk3—Python基础进阶—从函数到高级魔方方法

                    Python基础进阶--从函数到高级魔方方法 目录 Python基础进阶--从函数到高级魔方方法 一.函数 1.函数的定义 2.函数的调用 3.函数参数 4.变量作用域 ...

  5. python什么元素为真_如何使用Python基础内置函数

    如何使用Python基础内置函数 发布时间:2020-08-05 13:46:59

  6. python中递归函数的基例_详谈Python基础之内置函数和递归 Python递归和循环的区别...

    Python 递归函数基例 2. 关于递归函数基例的说明,以下选项中错误的是 A 递归函数的基例决定所谓基例就是不需要递归就能求解的,一般来说是问题的最小规模下的解. 例如:斐波那契数列递归,f(n) ...

  7. 【Python基础】reduce函数详解

    转载请注明出处:[Python基础]reduce函数详解 reduce函数原本在python2中也是个内置函数,不过在python3中被移到functools模块中. reduce函数先从列表(或序列 ...

  8. Python程序设计与科学计算精录总结Episode.2 Python基础语法:函数、模块、内置数据结构、面向对象知识总结(基于Michael导师Python课程与VS2019)

    Jupyter Notebook是基于网页的用于交互计算的应用程序.其可被应用于全过程计算:开发.文档编写.运行代码和展示结果.这个名字就很讲究,Jupyter改自木星的英文单词Jupiter,其中包 ...

  9. python入门之函数调用第二关_猪行天下之Python基础——5.1 函数(上)

    内容简述: 1.函数定义 2.形参与实参 3.关键字参数与默认参数 4.可变参数 5.全局变量与局部变量 6.内部函数 7.闭包 8.lambda表达式 9.递归 1.函数定义 我们可以将一些实现特定 ...

最新文章

  1. 机器学习四剑客2——Matplotlib
  2. java jsp setAttribute setParameter 区别
  3. 【JAVA】大整数数据量排序
  4. linux源代码调用,linux – 哪里可以找到系统调用源代码?
  5. SpringBoot集成Mybatis(0配置注解版)
  6. 树型列表结构宽度调整_Material Design 网格列表
  7. java调取对方接口_java中如何调用对方接口
  8. python2升级_Python2 升级 Python3
  9. 软件测评师之2021软件测评师新大纲《软件评测师教程(第2版)》(四)
  10. 汤家凤高等数学2020年基础课手写笔记汇总
  11. 10.5NOIP模拟考 dfs序+贪心
  12. eclipse的优缺点
  13. 使jira支持reopen率的统计
  14. 众筹php,PHP众筹网源码 众筹网源码
  15. 到底什么是STN技术?
  16. 补充:Log4j2日志文件,RollingFile的文件滚动更新机制;
  17. 设计模式-责任链模式变体之管道模式
  18. 计算机网络 chapter 7 网络安全
  19. 【夏令营QA】2021年中国人民大学信息学院 | 高瓴人工智能学院夏令营经验分享帖
  20. 爬虫漫游指南:瑞数的反调试陷阱

热门文章

  1. java比较两个对象重写,不重写equals进行两个对象间的深度比较
  2. L1-045. 宇宙无敌大招呼
  3. 模拟赛-20190114-新魔法(distance)
  4. 推荐一款cpp解析json工具--rapidjson
  5. 【Boost】boost库中thread多线程详解9——thread_specific_ptr线程局部存储
  6. 使用Packet.dll和npf.sys实现原始数据包的发送和接收
  7. live555 源码分析: SETUP 的处理
  8. SurfaceTexture
  9. 分布式系统概念 | 分布式锁:数据库、Redis、Zookeeper解决方案
  10. C语言程序设计 | 模拟实现字符串操作函数:strlen, strcmp, strcpy, strcat, strchr, strstr