【白话python连载(7.1)】python的函数应用

好书分享:Control and Estimation with MATLAB(5th Edition)pdf 基于MATLAB的控制与估计》(第5版)由八章组成,包括控制算法和设计。主要内容包括状态估计和数据平滑、RLS和卡尔曼滤波器状态估计、控制系统设计、自适应控制和PID。书中的概念已经使用MATLAB和Simulink实现。提供了可下载的MATLAB和Simulink文件。适合人群:大学生、研究生、控制类工程研究人员。需要电子版pdf,回复索取。 阅读详情

欢迎大家关注公众号【哈希大数据】

函数 定义

python函数标准的定义是:为了最大程度的重用代码和最小化代码冗余而提供的基本程序结构;以便将复杂的程序系统分解为可管理的若干部分。

在python中定义函数,借助关键字def进行定义,自定义一个函数名称。并且指定函数所需的相关参数,最终在函数体中,完成特定的一个功能。同时也可以定义该函数的返回值,供其他功能模块使用,如果不定义函数返回值,则默认返回None。带有返回值的函数的基本结构如下:

def function_name(parameter):
function_content
return something
(or) pass
在下面求和的函数实例中,分别定义了返回值和没有返回值的。

image
image

对于我们之前实现的求一个数绝对值的函数体(在调用过程中即可直接获得绝对值结果),计算九九乘法表的函数等,也都是较为标准的python函数的实现。通过python的语法格式缩进表示函数头和函数体的关系,在函数头中不能缺少。

在实际编写一个函数时,若未完全设计好函数的功能, 可以优先利用pass语句做占位符,保证函数语义的完整性,以便之后再完善补充函数功能。

全局变量 局部变量

python程序中的变量按照作用域分,可以分为全局变量和局部变量,如果一个程序中的变量定义在函数体中,则该变量为局部变量,如果定于在主程序中,则为全局变量,一般而言局部变量的优先级高于全局变量的优先级,局部变量的值会覆盖全局变量的值。因此在编写程序过程中,尽量使用局部变量而不污染其他函数中的变量。

如果在函数中想给全局变量赋值,需要用关键字global对变量进行声明。下面实例中在函数体中使用global对a变量进行重新赋值后,a变量在全局范围将进行更新,否则a变量的值将保持不变,如我们想将a变量的值进行还原,不用global关键字,则不会改变a变量的值。

image

函数的参数&调用

上述实例中的求和函数未指定函数参数,但是一般情况下,设定函数参数可以更好的实现函数功能。参数的确定是在函数名之后的()中进行,在python函数中参数分为五大类,设定函数参数是至关重要的一步。定义好一个函数后,直接使用函数名+参数即可完成对某一个函数的调用。依次来看每类参数的定义和调用方式。


image.png

默认参数:默认参数的值必须是不可变的对象,对于多个参数而言这样不仅可以降低调用的复杂度,而且可以接受调用过程中更新变化的值。默认参数顾名思义若不指定则直接使用默认的值,指定的话,可以按照位置参数指定方法,依次按顺序提供每个默认参数的值;还可以按照参数名称直接指定,而不用考虑参数的前后位置。

image

如果在定义参数中使用了可变的对象pycharm会进行较为人性化的提醒,虽然强制定义也是可行的,但是可能影响到之后程序的功能,如下面例子可知默认参数的值是不断变化的,因此尽可能按照要求使用不可变对象。

image
image

可变参数:使用*进行标注,接受任何可变数量参数,在调用时,可以直接给定任意个数的符合要求的参数。这些参数最终会以元组形式呈现。

image

命名关键字参数:只用于接收指定关键字的参数值,*表示间隔符。之后的参数就是命名关键字参数,可以有默认值,或者只有关键字。在调用时没有默认值的参数都必须指定,而且命名关键字必须同时传入关键字和参数值。

image
image
image

关键字参数:接受任意关键字的参数值,使用**表示关键字参数。在调用时可以传入0-多个关键字=参数值(必须一起)形式的参数,或者是在这之后直接加字典或者Json格式的数组。最终这些参数以字典格式呈现。

image

这些不同的参数类型可以混合使用,但是混合使用的时候要注意不同参数的顺序必须是:位置参数(必选参数)、默认参数、可变参数/命名关键字参数以及关键字参数。

匿名函数

对于功能较为简单的函数,可以使用匿名函数替代标准的函数的定义,从而简化函数的应用。在python中通过关键字lambda来创建匿名函数,无需指定函数名,函数体是表达式而非代码块,而且只能使用自己命名空间中的参数值,而不能使用全局变量中的参数值。具体结构如下:(:之前为参数,之后为函数体表达式)

lambda [arg1 [,arg2,.....argn]]:expression

匿名函数是一个函数对象返回值是匿名函数表达式结果,如果将匿名函数赋值给一个变量则该变量相当于函数名,通过调用该变量和相关参数即可实现标准函数的功能。来看下面两个等价的实例:

image

其他函数

递归函数:在函数体中调用函数本身。在之前的介绍中,我们有实现过一个通过递归方式进行阶乘的计算。直至函数中所传入的参数为1时,停止递归调用。任何递归函数都是可以使用循环实现的。

import sysdef Factorial(num):    
if num == 1 :        return 1   
 else:       
 result = num * Factorial(num-1)        r
eturn resultif __name__ == '__main__' :)    
result = Factorial(5)    
print('5的阶乘是:{}'.format(result))

高级函数:返回值也是一个函数。具体使用在之后会详细介绍。

#systemverilog# 之 event region 和 timeslot 仿真调度(三)Verdi 辅助查看 通过今天的学习,我们知道:event region 是event sequence 的全集。我们打开了 event region feature 也就开启了event sequence 的功能。 阅读详情

相关推荐

HyperLynx VX2.5 实战:5分钟搞定LPDDR4X内存的批量仿真与报告分析

本文详细介绍了如何使用HyperLynx VX2.5进行LPDDR4X内存的批量仿真与报告分析,通过智能网络分组和并行计算技术,5分钟内即可完成全流程验证。文章涵盖工程准备、批量仿真配置、报告解析及典型问题解决方案,帮助工程师高效提升PCB仿真效率,确保移动设备内存接口的稳定性与性能。

weixin_42683394的博客 401

Python自定义函数,匿名函数,自定义类

Python-day03 标签(空格分隔): 函数 面向对象 自定义函数 语法 值传递 带有默认值的函数 *agrs **kwargs return 返回值 矩阵,乘法表,冒泡排序 lambda匿名函数 只是一个表达式,而不是一个代码块,不能写太多逻辑进去 filter函数 用于过滤列,过...

weixin_42386929的博客 2548

ZYNQ裸机双网口通信实战:手把手教你用SDK和LWIP配置PS+PL以太网(附完整源码)

本文详细介绍了在ZYNQ裸机环境下实现双网口通信的全流程,包括硬件配置、LWIP协议栈优化及TCP通信实现。通过Vivado SDK和LWIP协议栈,开发者可以高效配置PS端内置网口与PL端扩展网口,提升嵌入式网络应用的灵活性和性能。附完整源码,助力快速开发。

weixin_30831529的博客 422

Python下自定义函数的使用详解

定义函数规则:1、函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。 2、任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。 3、函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。 4、函数内容以冒号起始,并且缩进。 5、return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。自定义函数语法结构:de

wml 6067

Oracle EBS R12.2 安装 -- Step by Step

Oracle EBS R12.2 安装 -- Step by Step

Albert Tan DBA之路 1512

VMware Workstation Pro必备技巧:5分钟搞定Ubuntu虚拟机磁盘瘦身(附常见错误解决)

本文详细介绍了如何为VMware Workstation Pro中的Ubuntu虚拟机进行磁盘瘦身,解决.vmdk文件只增不减的问题。通过清理系统垃圾、使用零填充空闲空间,并利用vmware-toolbox-cmd或vmware-vdiskmanager工具进行压缩,可有效回收被无效占用的磁盘空间。文章还提供了常见错误解决方案和预防性维护建议,帮助用户高效管理虚拟机存储。

sea99的博客 297

Python 学习(六):乘法表

声明:本人是一个正在学习的小白,此平台发布的内容是本人的学习笔记,本笔记出现任何纰漏与错误,请留言指导我修正,谢谢! 乘法表: 先观察一下有什么规律,然后再入手。 例1:首先输出 9*9 的矩形 例2:输出一个直角三角形 例3:输出格式 例4:填充格式 函数def: def + 函数名(): 例:def 乘法表(): def :通知Python语言我在这里建了一个函数,乘法表:调用...

qwer9478的博客 518

ADI DSP开发环境(CCES)下的程序烧录问题(以ADSP-SC589为例)

在CCES环境下将程序烧录到flash主要有两种方式。首先在对项目编译产生文件的属性设置为Release。 在编译完成后,找到每个CORE单独生成的DXE文件: 文件通常位于项目目录下每个core的Release文件中。安装SC589评估板的驱动(ADSP-SC5xx_EZ-KIT_Lite-Rel2.0.0.exe)后,在安装目录下可以找到SPI FLASH芯片的驱动程序(sc589_w25q128fv_dpia_Core1.dxe): 把文件copy到CCES 的目录下由于SC58x处理器的特殊性

daijingxin的博客 3730

【白话python连载(3)】Python的输入输出

欢迎关注公众号【哈希大数据】系列文章目录:【白话python连载(1)】 一起遇见python【白话python连载(2)】 Python的程序结构【白话python连载(3)】 Python的输入输出实例【白话python连载(4.1)】 python的数据类型【白话python连载(4.2)】 python的数据类型【白话python连载(5)】 python的条件语句【白话python连载(...

HashData2018的博客 2272

FPGA/IC秋招经典100题(含详解)

FPGA/IC秋招笔试面试经典100题(含答案及详解),持续更新。。。

Crazzy_M的博客 1万+

【主题建模】一种基于深度学习的主题建模方法:BERTopic(实战篇)

BERTopic 是基于深度学习的一种主题建模方法。2018 年底,Devlin et al. 提出了 Bidirectional Encoder Representations from Transformers (BERT)。BERT 是一种用于 NLP 的预训练策略,它成功地利用了句子的深层语义信息。

Data · Model · Agent · Repeat 2万+

【白话python连载(8)】 python的异常处理

欢迎大家关注公众号【哈希大数据】【白话python连载(1)】 一起遇见python【白话python连载(2)】 Python的程序结构【白话python连载(3)】 Python的输入输出实例【白话python连载(4.1)】 python的数据类型【白话python连载(4.2)】 python的数据类型【白话python连载(5)】 python的条件语句【白话python连载(6)】 p...

HashData2018的博客 1452

海康visionmaster-渲染结果:通过绑定流程或模块获取 渲染结果的方法

海康visionmaster-渲染结果:通过绑定流程或模块获取 渲染结果的方法

视觉人机器视觉的博客 2639

白话python连载(1)一起遇见python

1一起遇见python--发现程序之美欢迎关注公众号【哈希大数据】点击打开链接❤笔者与编程的那些事从最开始接触c,SQL,asp,Java,JS, Android到VB,python,MongoDB等等就这样在编程的路上摸爬滚打了好久,从基础认知到项目实践:或许会为一个用超简单代码解决工作量很大的项目而兴奋不已;或许在操作一个用户体验很好且功能齐全的软件时而赞叹不已;或许看到屏幕上清晰明了的分析结...

HashData2018的博客 572

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【白话python连载(9.1)】 使用python处理文件

欢迎大家关注公众号【哈希大数据】【白话python连载(1)】 一起遇见python【白话python连载(2)】 Python的程序结构【白话python连载(3)】 Python的输入输出实例【白话python连载(4.1)】 python的数据类型【白话python连载(4.2)】 python的数据类型【白话python连载(5)】 python的条件语句【白话python连载(6)】 p...

HashData2018的博客 1902

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【白话python连载(6)】python的循环语句

欢迎大家关注公众号【哈希大数据】【白话python连载(1)】 一起遇见python【白话python连载(2)】 Python的程序结构【白话python连载(3)】 Python的输入输出实例【白话python连载(4.1)】 python的数据类型【白话python连载(4.2)】 python的数据类型【白话python连载(5)】 python的条件语句【白话python连载(6)】 p...

HashData2018的博客 2169

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【白话python连载(4.1)】python的数据类型

欢迎关注公众号【哈希大数据】系列文章目录:【白话python连载(1)】 一起遇见python【白话python连载(2)】 Python的程序结构【白话python连载(3)】 Python的输入输出实例【白话python连载(4.1)】 python的数据类型【白话python连载(4.2)】 python的数据类型【白话python连载(5)】 python的条件语句【白话python连载(...

HashData2018的博客 2097

【白话python连载(9.2)】 python的os模块

欢迎大家关注公众号【哈希大数据】【白话python连载(1)】 一起遇见python【白话python连载(2)】 Python的程序结构【白话python连载(3)】 Python的输入输出实例【白话python连载(4.1)】 python的数据类型【白话python连载(4.2)】 python的数据类型【白话python连载(5)】 python的条件语句【白话python连载(6)】 p...

HashData2018的博客 2012

【白话python连载(2)】--python的程序结构

欢迎关注公众号【哈希大数据】系列文章目录:【白话python连载(1)】 一起遇见python【白话python连载(2)】 python的程序结构【白话python连载(3)】 巧妙使用输入输出【白话python连载(4.1)】 python的数据类型【白话python连载(4.2)】 python的数据类型【白话python连载(5)】 python的条件语句【白话python连载(6)】 p...

HashData2018的博客 1246

【白话python连载(4.2)】python的数据类型

欢迎大家关注公众号【哈希大数据】系列文章目录:【白话python连载(1)】 一起遇见python【白话python连载(2)】 Python的程序结构【白话python连载(3)】 Python的输入输出实例【白话python连载(4.1)】 python的数据类型【白话python连载(4.2)】 python的数据类型【白话python连载(5)】 python的条件语句【白话python连...

HashData2018的博客 1276

白话 Python 的函数式编程

今天和大家聊聊 Python 的函数式编程特性。所谓函数式编程,就是指代码中每一块都是不可变的(immutable),都是由 pure function 的形式组成。这里的 pure function 是指函数本身相互独立,互不影响,对于相同的输入,总会有相同的输出。也就是我们常说的没有副作用。举个很简单的例子,比如,对于一个列表,我想让列表中的元素值都变为原来的两倍,我们可以写成下面的形式: d...

Python热爱者的博客 323

python语言中打印到屏幕上的函数是什么_Python基础之白话说函数

转自白月黑羽Python3教程之函数:http://www.python3.vip/doc/tutorial/python/0005/什么是函数人类语言里面,我们不仅会给人和物起名字, 比如 小张, 足球, iphone有时候,我们还要给 一件事情,一串动作起名字,指代 某个流程。比如:我们公司的面试流程是把求职者带到3号会议室请求职者 完成答卷让测试经理来面试 求职者让技术总监面试 求职者我们会...

weixin_39630909的博客 475

「白话python连载(4.1)」python的数据类型

python的数据类型--迈步万里长城(一)从之前的介绍我们知道,python作为计算机程序之一,可以用来处理数学计算、文本、图像、视频、网页等等。不同内容背后对应的数据类型是不同的,弄明白不同的数据类型及其特点,才能迈出最重要的一步,完成更好的程序组织。python的数据类型内容稍微有点多,所以分两小节进行介绍,本节主要介绍基本的数据类型和序列的数据类型。下面直接进入主题,来了解python中的...

qq_41766361的博客 470

Python基础之白话说函数

转自白月黑羽Python3教程之函数:http://www.python3.vip/doc/tutorial/python/0005/ 什么是函数 人类语言里面,我们不仅会给人和物起名字, 比如 小张, 足球, iphone 有时候,我们还要给 一件事情,一串动作起名字,指代 某个流程。 比如:我们公司的面试流程是 把求职者带到3号会议室 请求职者 完成答卷 让测试经理来面试 求...

weixin_30486037的博客 136

Python中的高阶函数白话

想象一下你有一个“操作函数”可以对一组数字进行某种处理,而你有很多不同的数据需要被这个操作函数处理。高阶函数可以让你把这个“操作函数”当作参数传给另一个函数,这样你可以对不同的数据使用相同的处理逻辑。你可以使用高阶函数 map(),将一个处理单个元素的函数传给它,然后它会返回一个新的列表,其中包含每个元素经过处理后的结果。例如,你可以定义一个函数,让它返回一个新的函数,这个新函数可能会在不同的上下文中有不同的行为。现在,高阶函数其实就是能够接受函数作为参数,或者把函数作为结果返回的特殊函数。

Syasjy的博客 527
上一篇: 【白话python连载(6)】python的循环语句
下一篇: 【白话python连载(7.2)】python的模块介绍
哈希大数据
博客等级 码龄9年 331粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值