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

大话编程:非常有趣的循环(Python语言可视化海龟画图演示) 在日常工作和生活中,我们经常会遇到一件事情要重复做很多次的这种情况发生。在编程中,我们也会遇到这种情况,循环这种机制,就是专门用来处理这种需要不断重复做的事情的方法。通过几分钟的阅读,你将会掌握这种机制和编程手法。 循环就是一件事情重复做 首先我们来看一下一个编程例子,现在我们要使用Python中的海龟库来画几个圆(如果你不了解海龟库可以关注我查看之前的文章哦,有详细的入门介绍) 首先... 阅读详情

函数

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

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:961562169

这和数学中的函数实现上不同但语义上相识,如 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. 逻辑值为真

... 具有意义的特征信息

小明 元数据

身高

体重

年龄

学历

...

《大话设计模式》读后感 第一次读《大话设计模式》,是在刚接触C#的时候。疲累于大部头的官方教材中时,无意间翻开了这本生动有趣的书,甚是眼前一亮。由于当时C#基础薄弱,只是把它当小说来看,如饥似渴,饶有滋味,一口气看到凌晨四点,被不知觉间流逝的时间吓傻了。         而今重读,更多的是想重温设计模式的应用场景和感受小菜对编程的热忱。一边做笔记一边看书,初步弄懂UML类图,效率果然高很多。感动也颇多。师傅领进门,修行 阅读详情

相关推荐

分类素材(part4)--大话Python机器学习(上)

学习笔记,仅供参考,有错必纠 文章目录逻辑回归基于Sigmoid函数的分类使用梯度下降法求最优解对数似然函数最大似然梯度下降法求解参数正则化 逻辑回归 基于Sigmoid函数的分类 使用梯度下降法求最优解 对数似然函数 最大似然 梯度下降法求解参数 正则化 ...

小山羊的学习日志 530

bind函数_JS进阶-手写bind

手写bind先看一下mdn对于bind的定义:bind()方法创建一个新的函数,在bind()被调用时,这个新函数的this被bind的第一个参数指定,其余的参数将作为新函数的参数供调用时使用。bind()会返回一个指定this的函数,在执行该函数的时候会通过call调用执行bind()方法的函数,并将指定的this传入返回执行结果。arguments想要实现bind的话,我们还需要了解一下arg...

weixin_39866087的博客 443

海康威视VS互联网大厂:薪资、福利、工作强度全方位对比

本文全面对比了海康威视与互联网大厂在薪资、福利和工作强度等方面的差异。海康威视提供稳定的薪资结构和较低的工作强度,适合追求专业深度的职场人;而互联网大厂则以高薪和快速成长吸引人才,但工作压力较大。文章还分析了职业发展路径和长期价值,帮助求职者做出明智选择。

weixin_29171129的博客 392

函数一

课程:函数 目标 函数的作用 函数的使用步骤 函数的参数作用 函数的返回值作用 函数的说明文档 函数嵌套 一. 函数的作用 需求:用户到ATM机取钱: 输入密码后显示"选择功能"界面 查询余额后显示"选择功能"界面 取2000钱后显示"选择功能"界面 特点:显示“选择功能”界面需要重复输出给用户,怎么实现? [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yTXjFFzP-1600568720933)(01-函数一.assets/image-201812312119

Mr.魏 1359

Colmap中 patchmatch源码

惊世骇俗的Colmap PatchMatch源码 500多行,简明易懂 先了解PatchMatch的options: max_image_size: 任一维度的最大图像尺寸 gpu_index: gpu的下标 depth_min,depth_max: 随机采样的深度范围 window_radius:用于计算NCC(两图片的归一化互相关),NCC的计算需要用到 win_size. 图像匹配 | NCC 归一化互相关损失 | 代码 + 讲解 - 知乎 (zhihu.com) window_step: 用.

qq_24884193的博客 2212

R语言影像组学实战:从医学图像到预测模型的完整流程(附代码)

本文详细介绍了使用R语言进行影像组学分析的完整实战流程。从环境搭建、数据准备,到医学图像的特征提取与筛选,再到利用机器学习构建预测模型并进行评估,提供了清晰的步骤和可运行的R代码示例,帮助研究者和数据分析师掌握从医学图像到临床预测模型的核心技术。

qsc901234的博客 732

通讯架构实战——5-03 TCP状态转换,TIME_WAIT,SO_REUSEADDR

一:TCP状态转换 同一个IP(INADDR_ANY),同一个端口SERV_PORT,只能被成功的bind()一次,若再次bind()就会失败,并且显示:Address already in use 就好像一个班级里不能有两个人叫张三; 结论:相同IP地址的相同端口,只能被bind一次;第二次bind会失败; 介绍命令netstat:显示网络相关信息 ...

Xiao2018428的博客 379

Conda报错急救指南:遇到Malformed version string ‘~‘怎么办?(附最新解决方案)

本文深度解析Conda报错`Malformed version string '~'`的根源与解决方案。该错误通常由版本字符串解析异常或Conda版本过旧引起。文章提供了从清理缓存、针对性升级到环境重建的完整修复流程,并强调了升级Conda至最新版本是解决此类`CondaValueError`问题的根本方法,帮助开发者高效恢复工作环境。

weixin_28835789的博客 653

C++ 内联函数的相关概念

C++ 内联函数的概念 介绍内联函数之前,需要说明一下 C ++ 在执行普通函数时的一个过程,在调用普通函数时,执行到函数调用指令时,程序将在函数调用后立即存储该指令的内存地址,并将函数参数复制到堆栈,跳转到标记函数起点的内存单元,执行函数代码,然后调回到地址被保存的指令处,下图是关于 C ++ 普通函数调用的一个示意图: ...

weixin_42616791的博客 754

手动测试台架搭建,让你的车载测试更轻松

如果你也在经常进行车载测试,就知道有时候手头的设备并不能完全满足需求。 在我之前的测试中,发现了一些问题,但是却找不到根本原因。于是,我开始思考如何打造一个更为完美的手动测试台架,让测试变得更加轻松。 经过不断地实践和调试,我终于成功搭建出了一个能够满足自己需求的测试台架。现在,我想和大家分享这个搭建的经验,希望能够帮助到在车载测试领域工作的小伙伴们,让你们的测试更加准确、高效!

weixin_67553250的博客 1万+

手把手教你用UC3842搭建12V/5A反激电源(附PSIM仿真文件)

本文详细介绍了基于UC3842的12V/5A反激电源设计与PSIM仿真实践。从UC3842芯片选型、高频变压器计算到PSIM仿真模型搭建,提供完整的开关电源设计流程。特别包含PCB布局要点和实测优化建议,帮助工程师快速掌握反激电源开发技巧。

u6v7w8x的博客 1204

bind函数返回值-1_C++ bind详解

(给CPP开发者加星标,提升C/C++技能)来源:但行技术https://blog.youkuaiyun.com/weixin_43333380/article/details/82935291【导读】:可将std::bind函数看作一个通用的函数适配器,它接受一个可调用对象,生成一个新的可调用对象来“适应”原对象的参数列表。std::bind将可调用对象与其参数一起进行绑定,绑定后的结果可以使用s...

weixin_30440721的博客 2894

人像抠图 + OpenGL ES 还能这样玩?没想到吧(附带源码)

OpenGL ES 利用抠图算法实现人像留色。

字节流动 3万+

大话批量重命名工具:Python实现详解

本文介绍了一个基于Python开发的批量文件重命名工具,具备以下核心功能:支持移除/添加前缀后缀、替换字符串、修改扩展名等操作;采用多线程文件扫描提升效率;提供历史记录及撤销功能;包含Tkinter和Qt5双版本GUI界面及命令行接口。文章详细解析了项目架构(文件扫描、重命名算法、历史记录等模块)、关键技术实现(正则处理、异步扫描、参数解析等)以及打包发布过程。该工具虽小却五脏俱全,展示了从需求分析到实现发布的完整开发流程,适合需要批量整理文件的用户使用,也可作为Python项目开发的参考案例。

donoot的博客 349

某招标公告网和vcaptcha验证码识别逆向

本文分析了某验证码系统的加密流程及破解思路。首先通过反混淆技术定位到加密函数,拆解了包含指纹函数、环境参数等组成的加密字符串。研究发现验证码生成涉及canvas指纹、环境检测等反爬机制,可通过模拟浏览器环境绕过。验证过程需要解密图片顺序,通过work2.js计算还原图片位置,再结合滑动轨迹、时间等参数生成验证请求。文章仅提供技术研究思路,强调需遵守法律法规,严禁非法破解信息系统。完整流程包括环境模拟、加密参数还原、图片处理和轨迹生成等步骤,成功率较高。

码王吴彦祖的博客 583

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

《大话设计模式》——工厂方法模式(Python版)

工厂方法模式:定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。 介绍 工厂方法模式,又称工厂模式、多态工厂模式和虚拟构造器模式,通过定义工厂父类负责定义创建对象的公共接口,而子类则负责生成具体的对象。 对比简单工厂模式 是对简单工厂模式的一个延伸,所以它们诞生的背景以及所解决的问题是大同小异。(不了解简单工厂模式的请看《大话设计模式》——简单工厂模式) 简单工厂模式 简单来说,简单...

dg_lee的博客 313

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

大话 Python:python 基础巩固 -- 异常处理

一般情况下,程序无法处理正常的逻辑执行过程时会发生异常。为了处理程序在运行过程中的异常和错误,python 同样定义了很多的标准异常以及异常处理机制用来处理程序运行过程中出现的异常。 在 python 语言中,处理异常的关键字主要有:try、except、else、finally 以及 raise 关键字。 try 关键字: 主要是检测异常,如果发生异常情况时将程序处理交给 except 关键字。 except 关键字: 获取异常并进行处理。 else 关键字: 在执行完 try 关键字域中的代码块时,如果

梦在硅谷的博客 851

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【机器学习笔记】:从零开始学会逻辑回归(一)

关键时刻,第一时间送达!作者:xiaoyu知乎:https://zhuanlan.zhihu.com/pypcfx介绍:一个半路转行的数据挖掘工程师▍前言逻辑回归是一个非...

lsxxx2011的专栏 397

大话设计模式_设计模式Python版系列介绍:1、设计模式简介、类型、原则

今天开始准备写一个设计模式系列的Python版本,网上有很多Java、C++版本的,Python版本的相对来说比较零散,从今天开始,我会系统的介绍每个设计模式的Python实现。首先介绍一下什么是设计模式(Design Pattern):一句话解释一下:设计模式是面向对象编程时,如何定义类与类、类与对象、类与方法的各种组合方式的经验实践,都是前人的经验!通过在合适的场景下,选择合适的设计模式,对我...

weixin_39681644的博客 122

大话设计模式:第1章 简单工厂模式

第1章:简单工厂模式 面向对象 面向对象(object oriented)三大特性:封装、继承、多态 复制 v.s. 复用,紧耦合 v.s. 松耦合 尽可能避免重复代码,将业务逻辑与界面逻辑拆分 简单工厂模式:工厂负责实例化对象的类 from abc import ABC, abstractmethod from typing import Text # 计算器业务逻辑 # 运算类定义为抽象类...

Always On The Way 350

大话设计模式Python实现-外观模式

外观模式(Facade Pattern):为子系统中的一组接口提供一个一致界面,此模式定义一个高层接口,使得子系统更加容易使用 下面是一个外观模式的demo: 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 __author__ = 'Andy' 5 """ 6 大话设计模式 7 设计模式——外观模...

weixin_30376323的博客 114

算法成神之路,请看这一篇!

随着自己写的越来越多,慢慢的就会有人和我主动交流,现在好多人希望我写一篇考研、就业的选择、零基础如何学习编程,秋招如何选择offer、等等 我以前写过一篇初入阿里---10 天,我自己还想写一篇在阿里的三个月,将中间的点点滴滴分享给大家,还想写一篇自己的思考、和打法战略,以及你们 99% 的人欠缺的一种能力,还有自己的技术路线的分享,目前是 C 之旅 要写的东西实在太多了,而我目前...

weixin_33862188的博客 119

Python 大话数据结构之链表篇

今天复习了下 Python 基础, 顺表研究了下链表。链表真的非常非常重要滴,它是一种动态的线性数据结构,它是后面二分搜索树,红黑树巴拉巴拉的的基础,必须掌握。重要的事情说三遍。 学好链表!!! 学好链表!!! 学好链表!!! 不得不说, 用 Python 实现链表是真的爽。代码结构看着非常清晰明了。 链表有几个重要的特性,搞明白了这个,实现的逻辑就更加好写。 链表是由节点组成,一个节点包含两个...

weixin_33941350的博客 115

2020年,『小一的学习笔记』文章合集

大家好,我是小一花了点时间整理了 2020 年公众号的所有发布文章,一共发了 70 篇,70 篇都是原创。其中在 6 月到 10 月这三个月时间里,由于自己的方向出了点问题,也就没有在公众...

小一的博客 354

大话设计模式Python实现-状态模式

状态模式(State Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类 下面是一个状态模式的demo: 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 __author__ = 'Andy' 5 """ 6 大话设计模式 7 设计模式——状态模式 8 状态模式(...

weixin_30952103的博客 111
上一篇: Python自制腾讯视频去除水印Chrome插件
下一篇: 利用Python编程,批量发送电子邮件(含附件)
Python_sn
博客等级 码龄6年 324粉丝 290原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值