今天我们先聊少一点,就聊聊函数是什么和函数的参数,以及对这两个东西的思考

起源于抽象

在程序员写代码的时候,通常都会提到一个词叫抽象, 很多人都知道在面向对象中,将一个对象抽象为一个类,其实这就是我们常说的数据抽象(后面聊面向对象的时候再接着聊), 其实还有另外一种抽象,叫控制抽象

其实不论那种抽象,最终都是将一个名字与一个程序代码片段进行关联

控制抽象

这种抽象可以让我们从更高层次去思考问题, 我们只需要思考我们抽象的这个名字所代表的功能即可,至于里面的具体实现,我们可以并不考虑他

比如下面的这个例子,我们定义一个add_cart的函数,然后把商品加进去,然后返回我们的购物车, 至于里面具体是怎么玩的, 我们并不关心

我们是不是回到了起点呢?我们给定一个输入,然后经过我们的功能代码,最后会给定一个输出,那从上面这些来看,其实控制抽象主要就是定义一个完成某个功能的良好操作,本质上就是一段代码片段

参数

学过程序的人都知道, 函数是传递一下参数,函数会修改或者使用这些参数里面的值

形参与实参

形参是函数的一部分,通常在函数定义的时候,进行定义,当调用函数的时候,会根据行参来进行实际参数(实参)的传递,给函数的代码片段使用

值引用与栈

有时候我们讨论参数的的传递的时候都会讨论值传递与引用传递, 那有没有想过,这个问题的背后,到底是什么

普及下函数调用,我们哦那个右往左看, 当我们执行一个函数的时候,会专门为函数在栈上分配一块空间, 同时也会函数的参数,在这片区域分配空间, 当函数调用完成,这块空间会自动销毁(正常情况下还有闭包等特殊)

接着看什么是引用,什么是值,的区别是什么,我们可以看到, 虽然引用和值,都会在当前函数内部分配一个临时存储她们的变量,但引用对象引用的底层对象,其实根本不在当前栈范围内, 那在函数内部操作引用对象,肯定会修改到原始的对象啦, 所以我们是不是可以通过对象的原始内存分配,来确定,你到底在哪,为什么你就叫引用呢

今天就到这吧, 写文章并没有我想的那么容易, 大家可以多关注关注, 鼓励我继续写下去, 当前的文章都不涉及到什么具体的代码, 其实更多的是想引起大家的一些思考, 我们天天学到底是学的什么, 不局限于具体的语法, 而是思考的方式

python太简单了, 我们可以不去看cpython的实现,不去看dis的所谓的汇编码, 你依旧可以成为一个Python程序员, 那我们可以不学了这么多东西, 那是不是可以学习建立一些编程语言的思维框架, 这样后续在学习别的语言的时候,不像新手菜鸟傻呆呆的从头 IF else hello world好吧

python编程函数_python编程中函数和参数你必须知道的相关推荐

  1. c字符串中包含双引号_必须知道的C语言知识细节:单引号和双引号正确用法

    C语言中ACSII码字符单引号'和双引号"在程序中经常出现,很简单,但却是十分重要的语法标点符号,初学者容易混淆使用. 单引号在字符常量时使用,表示单个字符. 例如: char c; c = ...

  2. python语言必背代码-Python新手必须知道的25条知识点

    原标题:Python新手必须知道的25条知识点 1.到底什么是Python?你可以在回答中与其他技术进行对比 下面是一些关键点: Python是一种解释型语言.这就是说,与C语言和C的衍生语言不同,P ...

  3. 数据科学中必须知道的5个关于奇异值分解(SVD)的应用

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|机器学习算法那些事 前言:本文为大家介绍了5个关于奇异值 ...

  4. c4d python使用方法_Cinema 4D Python脚本编写必须知道的5行Python代码教程

    Cinema 4D Python脚本编写必须知道的5行Python代码教程 在这期Cinema 4D python教程中的第一篇.Alpha Pixel将介绍如何使用python脚本进行设置,并查看一 ...

  5. [你必须知道的.NET]第二十五回:认识元数据和IL(中)

    说在,开篇之前 书接上回[第二十四回:认识元数据和IL(上)],我们对PE文件.程序集.托管模块,这些概念与元数据.IL的关系进行了必要的铺垫,同时顺便熟悉了以ILDASM工具进行反编译的基本方法认知 ...

  6. 成长中必须知道的20个故事 (藏)---(转)

    成长中必须知道的20个故事 1.断箭不相信自己的意志,永远也做不成将军. 春秋战国时代,一位父亲和他的儿子出征打战.父亲已做了将军,儿子还只是马前卒.又一阵号角吹响,战鼓雷鸣了,父亲庄严地托起一个箭囊 ...

  7. 成长中必须知道的20个故事(摘自:魅族明的上古卷轴)

    成长中必须知道的20个故事 1.断箭 不相信自己的意志,永远也做不成将军. 春秋战国时代,一位父亲和他的儿子出征打战.父亲已做了将军,儿子还只是马前卒.又一阵号角吹响,战鼓雷鸣了,父亲庄严地托起一个箭 ...

  8. 成长中必须知道的10个故事 也是做人,做营销必须知道的故事:

    成长中必须知道的10个故事  也是做人,做营销必须知道的故事: 1.断箭 不相信自己的意志,永远也做不成将军. 春秋战国时代,一位父亲和他的儿子出征打战.父亲已做了将军,儿子还只是马前卒.又一阵号角吹 ...

  9. 成长中必须知道的10个故事 也是做人,做营销必须知道的故事

    成长中必须知道的10个故事  也是做人,做营销必须知道的故事: 1.断箭 不相信自己的意志,永远也做不成将军. 春秋战国时代,一位父亲和他的儿子出征打战.父亲已做了将军,儿子还只是马前卒.又一阵号角吹 ...

最新文章

  1. 页面之间url传值,传循环数据里的值成功传值成功接收(动态数据传值)
  2. javascript日期比较
  3. Faster R-CNN改进篇(一): ION ● HyperNet ● MS CNN
  4. 典型瀑布模型四个阶段_古典瀑布模型的不同阶段
  5. mysql where条件使用了or会不会扫全表
  6. Redis有序集合详解
  7. java嵌套对象,java – 从嵌套流中收集一组对象
  8. Ibatis.Net 数据库操作(四)
  9. 非线性支持向量机(2)
  10. 向上转型---父类引用指向子类对象 A a = New B()的使用
  11. Vivado synth 8-439 module““not found问题绝对解决,超简单,想解决问题就看这里。
  12. python-给登记照换底色(蓝底变红底)
  13. 液晶LCD广告机是什么,主要用途有哪些。广告一体机的种类有哪些。
  14. MIPI CSI-2笔记(16) -- 数据格式(YUV图像数据)
  15. 中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱百鸡问题”:一只公鸡值5钱,一只母鸡值3钱,三只小鸡值1钱,现在要用百钱买百鸡,请问公鸡、母鸡、小鸡各多少只?
  16. Apache2 虚拟主机 详解
  17. 洛朗级数与泰勒展开的区别
  18. sota和fota区别_SOTA与FOTA的区别
  19. 全志V853 NPU开发(四)模型部署
  20. Python selenium与pyautogui控制浏览器实现modis数据自动下载

热门文章

  1. python手动将机器学习模型保存为json文件
  2. 凸集+非凸集+凸函数+非凸函数
  3. 期望最大EM(Expectation Maximum)算法是什么?为什么有时候不用梯度下降而是用EM算法
  4. NGS数据的Error correction方法
  5. windows10 下 cuda安装
  6. 二十五、二叉树的前序、中序、后序遍历
  7. 【MySQL高级】查询缓存、合并表、分区表
  8. 棋盘格检测--Automatic camera and range sensor calibration using a single shot
  9. 数学知识--Unconstrained Optimization(第一章)
  10. 人群计数--Cross-scene Crowd Counting via Deep Convolutional Neural Networks