欢迎光临
我们一直在努力

大话Python函数底层逻辑 一篇文章彻底掌握子程序用法

函数

子过程 或子程序 描叙的更为贴近实际应用场景

私信小编01即可获取python大量资料

这和数学中的函数实现上不同但语义上相识,如 f(x) = expressiom, 给定一个确定的输入必然返回一个确定的输出

数学中函数的关系是通过代数方程确定的,计算机中的函数关系通过 表达式语句确定的,计算机可以完成数学中函数的

表达,并且远比数学中的函数要强大,数学中完成的仅仅是计算问题,计算机不仅仅完成计算还能同时自动完成相关联的

运算与许多系统级别的工作

在学习函数之前,我们理解这个场景,比如你在画画,你需要什么?一支画笔和一张白纸就足够了,类比

计算机程序,你需要一个空文本文件和往空文本文件中写入程序, 文本编辑器就是那支画笔,空白文件就是那张白纸

画画中,我们要熟知几种图形与线条,在程序中我们要熟知函数、类、变量、循环分支,这些都是构成程序的基本构件

函数定义

def ...(param, ...):
    ...
    return expression, ...

1. 关键字def 引入一个函数定义,后面跟 函数名称和函数的参数列表 ,然后最后以 : 作为结尾,下一行缩进表示 函数体

2. 定义的语义是创建了一个东西然后给予这个东西一个名字,然后后面某个时候可以通过名字来引用这个东西,要想用

某个东西,就需要创建这个东西并给他一个名字

3. 调用函数 …(param, …),这个过程又被称为执行函数,函数调用和函数执行时一个意思,要真有个区别

函数调用是传递实际参数给函数,函数执行时执行函数体

4. return 语句 从函数中返回结果值,也就是函数的输出,可以时一个值,也可以时多个值,如果没有return语句则函数返回 None

def compare(one, two):
    """比较两个字符串,忽略大小写 如果一样则返回True, 否则返回False"""
    res = one.lower() == two.lower()
    return res

str_one = "123XXX"
str_two = "123xxx"
# 比较两个字符串是否一致
res = compare(str_one, str_two)
print(res)

形参 和 实参

形参

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

实参

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

函数调用过程传递参数 的几种方式

1. 位置参数,通过实参索引位置与形参索引位置依次赋值,等价于 多重赋值

2. 关键字参数,通过形参名称指定实参值的形式

3. 解包序列提供位置参数,解包字典提供关键字参数

函数定义形参的 几种形式

# 形参的定义控制函数调用时候参数的传递方式

1. 必传参数

2. 默认参数,在函数定义过程中计算的,只会执行一次,这对形参默认值时时可变类型时候显得重要

3. 可变参数(又叫收集参数、非固定参数)

4. 仅限位置参数、仅限关键字参数、位置或关键字参数

def beg_sum(one, two, *num, **kwargs):
    """对两数求和,如果、num有则加上num中数"""
    res = one + two
    if not num:
        return res
    res += sum(num)
    # 输出kwars参数
    print(kwargs)
    return res

# 通过位置参数传递参数
res = beg_sum(1, 3, 77, 99, 99)
print(res)

# 通过关键字参数传递参数
res = beg_sum(one=1, two=2, three=4)
print(res)

 

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

具体的业务场景写语句逻辑

函数的语法糖 形式又称为匿名函数

# lambda 表达式,返回的函数对象,主要用于一些内置的函数,如 map reduce filter sort

# 应用于对可迭代对象中素的简单处理

# lambda 表达式只限于单行表达式

# lambda 函数并特殊,只是普通def函数的简写,一种语法上的便捷,就好像吃了糖一样,甜甜的,所有叫做语法糖

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

 

函数标注

# 参数和返回值的元信息,类似静态语言的参数的类型与返回值类型,但不同的是Python的标注信息仅仅是 提示 ,不做

参数类型检查,保存在函数元信息的 __annotations__以字典形式存放

def compare(one: str, two: str) -> int:
    """比较两个字符串,忽略大小写 如果一样则返回True, 否则返回False"""
    res = one.lower() == two.lower()
    return res

str_one = "123XXX"
str_two = "123xxx"
# 比较两个字符串是否一致
res = compare(str_one, str_two)
print(res)
# 打印函数元信息,函数标注
print(compare.__annotations__)

 

所有名称遵守同样的规范

# [a-zA-Z][a-zA-Z0-9]*

# 基本上都是英文单词和英文单词的缩写或简写

# 不能是关键字或内置函数名称

声明 = 定义 = 创建

元数据 任何数据都有元数据

对数据的特征描叙,又叫元信息

例如数字 1 其元数据:

a. int类型

b. 支持数值运算 + – * / // %

c. 逻辑值为真

… 具有意义的特征信息

小明 元数据

身高

体重

年龄

学历

 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

未经允许不得转载:英协网 » 大话Python函数底层逻辑 一篇文章彻底掌握子程序用法

分享到: 生成海报
avatar

热门文章

  • 评论 抢沙发

    • QQ号
    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址

    登录

    忘记密码 ?

    切换登录

    注册

    我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活