【LSP】大话Python函数底层逻辑

天空丶泪   ·   发表于 1个月前   ·   编程代码

函数
  叫 子过程或子程序 描叙的更为贴近实际应用场景
  这和数学中的函数实现上不同但语义上相识,如 f(x) = expressiom, 给定一个确定的输入必然返回一个确定的输出
  数学中函数的关系是通过代数方程确定的,计算机中的函数关系通过 表达式语句确定的,计算机可以完成数学中函数的
  表达,并且远比数学中的函数要强大,数学中完成的仅仅是计算问题,计算机不仅仅完成计算还能同时自动完成相关联的
  运算与许多系统级别的工作



在学习函数之前,我们理解这个场景,比如你在画画,你需要什么?一支画笔和一张白纸就足够了,类比
计算机程序,你需要一个空文本文件和往空文本文件中写入程序,文本编辑器就是那支画笔,空白文件就是那张白纸,
画画中,我们要熟知几种图形与线条,在程序中我们要熟知函数、类、变量、循环分支,这些都是构成程序的基本构件



函数定义

1
2
3
def ...(param, ...):
...
return expression, ...
  1. 关键字def引入一个函数定义,后面跟函数名称和函数的参数列表,然后最后以:作为结尾,下一行缩进表示函数体
  2. 定义的语义是创建了一个东西然后给予这个东西一个名字,然后后面某个时候可以通过名字来引用这个东西,要想用
    某个东西,就需要创建这个东西并给他一个名字
  3. 调用函数 ...(param, ...),这个过程又被称为执行函数,函数调用和函数执行时一个意思,要真有个区别
    函数调用是传递实际参数给函数,函数执行时执行函数体
  4. return 语句从函数中返回结果值,也就是函数的输出,可以时一个值,也可以时多个值,如果没有return语句则函数返回 None

形参 和 实参

形参
  函数定义时候使用,只存在名称,没有具体的值,但可以在函数体内参与运算,很特殊,类似数学中的代数运算


实参
  函数调用时候使用,需要传递具体的值给函数定义的形参



函数调用过程中传递参数的几种方式
  1. 位置参数,通过实参索引位置与形参索引位置依次赋值,等价于多重赋值
  2. 关键字参数,通过形参名称指定实参值的形式
  3. 解包序列提供位置参数,解包字典提供关键字参数

细心观察函数,你会发现,函数就是一个架子(框架),定义了输入,也定义了输出,至于中间的函数逻辑需要根据
具体的业务场景写语句逻辑

函数的语法糖形式又称为匿名函数
  # lambda 表达式,返回的时函数对象,主要用于一些内置的函数,如 map reduce filter sort
  # 应用于对可迭代对象中元素的简单处理
  # lambda 表达式只限于单行表达式
  # lambda 函数并特殊,只是普通def函数的简写,一种语法上的便捷,就好像吃了糖一样,甜甜的,所有叫做语法糖

1
2
3
4
nums = [10, 2, 3, 4, 6, 7, 8]
# 过滤掉 小于等于3的
want_nums = filter(lambda x: x > 3, nums)
print(list(want_nums))
 

函数标注
  # 参数和返回值的元信息,类似静态语言的参数的类型与返回值类型,但不同的是Python的标注信息仅仅是提示,不做
  参数类型检查,保存在函数元信息的 __annotations__以字典形式存放

所有名称遵守同样的规范
  # [a-zA-Z][a-zA-Z0-9]*
  # 基本上都是英文单词和英文单词的缩写或简写
  # 不能是关键字或内置函数名称

声明 = 定义 = 创建

元数据 任何数据都有元数据
  对数据的特征描叙,又叫元信息
  例如数字 1 其元数据:
    a. int类型
    b. 支持数值运算 + - * / // %
    c. 逻辑值为真
    ... 具有意义的特征信息

  小明 元数据
    身高
    体重
    年龄
    学历
    ...



Python 中并不存在变量声明这么一说,只存在变量赋值
  形式 varname = expression
  # 等号左边的是变量赋值,会首先查找当前作用域中的变量,如果没找到,则新建一个变量varname,如果找到则修改其值
20 Reply   |  Until 1个月前 | 516 View

【LSP】黑衣
发表于 1个月前

嗯好[滑稽]

评论列表

  • 加载数据中...

编写评论内容

浅殇酱
发表于 1个月前

[滑稽]要这个

评论列表

  • 加载数据中...

编写评论内容

许之糯
发表于 1个月前

握草[滑稽]666

评论列表

  • 加载数据中...

编写评论内容

3446779815
发表于 1个月前

你这是什么意思[滑稽][心碎]

评论列表

  • 加载数据中...

编写评论内容

方便又美味
发表于 1个月前

有点厉害[滑稽][大拇指]

评论列表

  • 加载数据中...

编写评论内容

敖老头
发表于 1个月前

150热帖,应该没问题[滑稽]

评论列表

  • 加载数据中...

编写评论内容

张小枫
发表于 1个月前

老肝帝[大拇指][滑稽]

评论列表

  • 加载数据中...

编写评论内容

syf1313113
发表于 1个月前

咳[滑稽]咳,现在先发贴 速度贼慢...按道理我现在已经二三四十个贴了

评论列表

  • 加载数据中...

编写评论内容

3366255622
发表于 1个月前

牛逼[滑稽]加油

评论列表

  • 加载数据中...

编写评论内容

yuforum
发表于 1个月前

150贴[滑稽]有点秃

评论列表

  • 加载数据中...

编写评论内容
LoginCan Publish Content