#科研筑基# python初学自用笔记 第五篇 函数
调用函数
python有很多内置函数,我们可以直接调用,详见python官方文档:内置函数 — Python 3.11.2 文档,也可以在命令行中输入help(函数名)来查看该函数的使用法则。
函数名的本质就是指向一个函数对象的引用,完全可以用赋值的方法为原函数起一个别名:
a=abs//给abs函数起一个别名a
print(a(-12))//使用a来代替abs实现其功能
'''
12
'''
定义函数
定义函数的格式
def my_first_hanshu(x,y,z):if x==8 and y==8 and z==8:print('Crush')else:print('Pity')return
#以下为试用自定义的函数1
my_first_hanshu(8,8,8)
'''
Crush
'''
总之,定义语句要以def开头,接下来就是函数名和参数列表,参数不需要声明数据类型,注意要使用return语句。
空函数
若要定义一个功能暂时没想好的函数,可以用pass语句:
def non():pass
这样让pass先代替函数体,使得该函数被调用时,程序可以正常运行;
此外,pass语句还可以用于条件语句和循环语句中。
参数检查
对于自定义函数,当传入不恰当的参数时,系统不会像内置函数一样返回出错信息,所以要在自定义的函数体的开端使用内置函数isinstance()和错误提示语句raise,实现数据类型的检查:
def my_first_hanshu(x,y,z):if not isinstance(x,int) and not isinstance(y,int) and not isinstance(z,int):raise TypeError('bad operand type')if x==8 and y==8 and z==8:print('Crush')else:print('Pity')
返回多个值
函数需要返回多个值时,只要把值都写在同一个return语句后即可,会返回一个元组tuple,里面包含了多个值,可以将tuple通过一个赋值号赋值给多个变量,系统会按位置一一赋值。
import math
def ma(x):return math.ceil(x),math.floor(x)
a,b=ma(1.123)
print(a,b)
'''
2 1
'''
函数的参数
位置参数
def power(a,b):s=1while b>0:b-=1s*=areturn s
上面的power函数中有两个位置参数a和b,调用函数时,传入的两个值按位置顺序依次赋值给参数a和b。
默认参数
上面定义了新的power函数后,原来power函数使用一个参数计算平方的功能就用不了了,这时可以修改一下原定义,直接在参数列表中给b赋值为2,这样如果调用函数时只写了一个参数,那就默认参数b为2:
def power(a,b=2):s=1while b>0:b-=1s*=areturn s
需要注意的是,默认参数必须放在参数列表的后端,可以有多个默认参数;
默认参数必须指向不变对象,比如列表也可以作为默认参数,但每次调用后,若对列表进行了增减删改,则其在下一次调用时就变化了。
可变参数
可变参数,即传入的参数个数是可变的,可以是0个或任意个。
在不使用可变参数时,若需要传入不定个数的值,则函数参数应为列表或元组:
def calc(numbers):sum=0for n in numbers:sum+=nreturn sum
calc([1,2,3,4,5,6,7,8,9])
calc((9,8,7,6,5,4,3,2,1))
若使用可变参数,只需在参数前加上*:
def calc(*numbers):sum=0for n in numbers:sum+=nreturn sum
calc(1,2,3,4,5,6,7,8,9)#不需要数据写成list或tuple
list=[11,22,33,44,55]
calc(*list)#在列表名前加*,就可以将列表的所有元素作为可变参数传进去
关键字参数
可变参数允许传入任意个参数,这些参数在函数调用时自动组装为一个元组;
关键字参数则允许传入任意个含参数名的参数,这些关键字参数在调用时自动组装为一个字典:
def person(name,age,**other):#前两个参数为必选参数;other为关键字参数,调用时可以不传入print('name:',name,'age:',age,'other:',other)
#可以只传入必选参数:
person('Tom',18)
'''
name:Tom age:18 other:{}
'''
#可以再传入一个关键字参数:
person('Bob',19,homeland='USA')
'''
name:Bob age:19 other:{'homeland':'USA'}
'''
#可以传入多个关键字参数:
person('Eric',18,homeland='China',gender='M')
'''
name:Eric age:18 other:{'homeland':'China','gender':'M'}
'''
同样,若有给定一个字典dict,可以在调用person函数时,在关键字参数的位置上写**dict,就会将dict的内容放入other中。
命名关键字参数
若单独使用一个关键字参数标志**other,则可传入的关键字参数的数量和类型没有限制;
若要限制关键字参数的名字,就可以用命名关键字参数,使用特殊分隔符*,其后的参数被视为命名关键字参数:
def person(name,age,*,homeland,gender):print(name,age,homeland,gender)
#调用如下:
person('Jack',23,homeland='UK',gender='M')
'''
Jack 23 UK M
'''
命名关键字参数可以有默认值,从而简化调用:
def person(name,age,*,homeland='China',gender):print(name,age,homeland,gender)
#调用如下:
person('Tom',11,gender='M')
'''
Tom 11 China M
'''
参数组合
在python中定义函数,参数定义的顺序必须是:必选参数、默认参数、可变参数、关键字参数和命名关键字参数.
递归函数
函数自己调用自己就是递归。
典例:汉诺塔问题
相关文章:
#科研筑基# python初学自用笔记 第五篇 函数
调用函数python有很多内置函数,我们可以直接调用,详见python官方文档:内置函数 — Python 3.11.2 文档,也可以在命令行中输入help(函数名)来查看该函数的使用法则。函数名的本质就是指向一个函数对象的引用,完全可以用…...
设计模式之策略模式
一.基本内容1 . 实例有各种鸭子(野鸭,北京鸭子,水鸭等,鸭子有各种行为,比如飞,叫等显示鸭子的信息传统方法解决:鸭子为抽象类,具体鸭子继承抽象类2.传统方法的不足:其他鸭…...
dbdeployer 使用札记
https://github.com/datacharmer/dbdeployer默认配置文件为当前用户的$HOME/.dbdeployer/config.json作为配置文件,可以通过dbdeplyoer defaults export导出并修改配置或者直接通过dbdeployer defaults update来更新默认文件,配置文件包含MySQL初始信息。…...
MATLAB算法实战应用案例精讲-【图像处理】数字图像模糊化(附Java、python和matlab代码实现)
目录 前言 几个相关概念 噪声 滤波器 算法原理 算法思想 噪...

搭建Hexo博客-第1章-Git和GitHub以及Coding的简单用法
搭建Hexo博客-第1章-Git和GitHub以及Coding的简单用法 搭建Hexo博客-第1章-Git和GitHub以及Coding的简单用法 Coding GitHub Hexo Markdown 搭建博客 大家好,这是我第一次写博客。使用 GitHub Hexo 创建最基本的博客很容易,网上有很多现成的教程。…...

【C++修行之路】C/C++内存管理
文章目录程序区域内存划分C语言动态内存分配:new和delete:new、delete和malloc、free的区别:程序区域内存划分 C/C程序内存区域划分非常相似。 C语言动态内存分配: malloc、calloc、realloc都是C语言动态开辟内存的常用函数 其中 malloc 开…...

spring cloud alibaba Sentinel(四)
服务雪崩 在分布式系统中,由于网络原因或自身的原因,服务一般无法保证 100% 可用。 如果一个服务出现了问题,调用这个服务就会出现线程阻塞的情况, 此时若有大量的请求涌入,就会出现多条 线程阻塞等待,进而导致服务瘫痪。 由于服…...

Redis第三讲
目录 三、Redis03 3.1 Redis持久化之RDB 3.1.1 什么是RDB 3.1.2 备份是如何执行的 3.1.3 Fork 3.1.4 RDB持久化流程 3.1.5 dump.rdb文件 3.1.6 配置rdb文件生成位置 3.1.7 如何触发RDB快照以及保持策略 3.2 Redis持久化之AOF 3.2.1 什么是AOF 3.2.2 AOF持久化流程 …...

JAVA线程池的使用
一、池化思想和JAVA线程池 池化是很重要的思想;池化的好处是提供缓冲和统一的管理。这个笔者在本人的数据库连接池的博客中已经提到过了(JAVA常用数据库连接池_王者之路001的博客-CSDN博客 )。 线程池是另一种池化思想的运用,把…...

力扣56.合并区间
文章目录力扣56.合并区间题目描述排序合并力扣56.合并区间 题目描述 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中…...
代码随想录二刷Day03链表: 24.两两交换链表中的节点,19.删除链表的倒数第N个节点,面试题 02.07. 链表相交,142.环形链表||
24.两两交换链表中的节点 文章链接:代码随想录 (programmercarl.com) 思路: (1)首先如果要处理相邻两个节点的话,一定需要操作两个节点的前一个节点才可以,因此,本题需要设定一个虚拟头节点 …...

我应该在我的博客上写什么? 介绍如何撰写初学者容易担心的文章
我想有很多人开了博客,但想不起来写作,无法取得进展。 博客的主题和文章的内容不会仅仅通过写你想做的事情来工作。 重要的是要了解用户想要阅读的内容以及人们可能收集的内容,并将其与您想要编写的内容很好地匹配。 这一次,我…...

嵌入式C语言设计模式 --- 外观模式
1 - 什么是外观模式? 外观模式(Facade Pattern),是一种比较简单的结构型模式,它存在的目的,也是为了简单。 外观模式隐藏了一系列接口的复杂性,旨在为外部客户端提供一个更高层次且统一简单的接口,简化了客户端调用某些模块的一系列操作。 外观模式应该是软件工程师…...

若依ruoyi——手把手教你制作自己的管理系统【三、代码生成】
昨天情人节一( ̄︶ ̄*)) 送给赛利亚一((* ̄3 ̄)╭ ********* 专栏略长 爆肝万字 细节狂魔 请准备好一键三连 ********* 修改后的页面: 干干净净贼舒服一Ψ( ̄∀ ̄)Ψ——Ψ( ̄∀&#x…...

SCI论文写作神器集合 —— 超级实用
特此声明: 本文拷贝多处别人的内容,并给出具体的链接 本文所提到的软件都为博主在文章撰写过程中发掘的比较实用的工具,旨在帮助小伙伴们更快更有效率的完成文章发表,如果其他好用的工具,欢迎各位交流~~ 一、文献搜索神…...
MAC 系统安装多版本 JDK 并任意切换
1、背景 在进行 Java 开发的过程中,我们可能需要使用不同版本的 JDK。例如:一些旧的 Java 应用程序只能在旧版本的 JDK 上运行,而一些新的 Java 应用程序需要较新的 JDK 才能运行。 在 MAC 系统上,如何安装多个版本的 JDK 并配置…...
配置 Smart Link 接口时需注意的互斥命令
配置 Smart Link 接口时需注意的互斥命令 一、接口加入Smart Link组功能与以下功能互斥一、接口加入Smart Link组功能与以下功能互斥 注:当接口已经加入Smart Link组,则不能再配置以下功能;反之,当接口已经配置以下功能ÿ…...

QT的下载和安装
这里介绍的是QT官方方式下载,每次都让我很糊涂,就记载一下。先是下载QT online installerhttps://www.qt.io/download 在下方有Go Open Sourcehttps://www.qt.io/download-open-source 在下方有Download the Qt Online installerhttps://www.qt.io/downl…...
nacos配置中心与服务注册中心
文章目录 目录 文章目录 前言 一、服务注册与发现中心 二、配置中心 总结 前言 Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它是 Spring Cloud Alibaba 组件之一,负责服务注册发现和服务配置. [服务治理的作用和微服务配置管理] Na…...

UE4 手把手教你做插件(1) 从代码引用插件
0,前言 我看的是 技术宅阿棍儿 的视频,B站有。 系列视频:从代码引用插件_哔哩哔哩_bilibili 看不懂,只能边查资料边看,讲的顺序有点乱 1,根据视频提示创建第三方插件 注意:如果只有空白插件的情…...

Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...