我学python的那段日子(五)python中的函数

news2025/2/5 8:04:24

python中的函数

1.1自定义函数

1.1.1 函数的定义

​ 和Java一样,python也有内置函数和自定义函数,内置函数是python已经定义好的函数,而自定义函数则是我们根据需要自己定义的函数。

​ 语法

def 函数名称(参数):

​ 函数体

​ 其中参数的定义有4种方式:

​ 1.(arg1,arg2,…argn)函数若是这种格式的,则在调用时传入的实参也要和形参的数量和顺序必须一致。

​ 2.(arg1,arg2=value2,…)这种形式是给了形参一个默认值,如函数a(1,2),arg1的值取1,arg2的值取2,但如果arg2的默认值是3,在你调用a(1)时,此时并不会报错,而是arg1为1,arg2为3.

​ 3.(*arg1)这种形式为多个形参的方式,即不确定参数的个数,你可以传入任意多个参数,这些参数的值会被保存在一个元组当中。

​ 4.(**arg1)的形式表示在调用时采用“arg1 = value1,arg2 = value2”的方式调用,如 a(x=1,y=2,z=3),此时参数以类似于字典的形式保存{‘x’:1,‘y’:2,‘z’:3}。

​ 案例

#定义一个函数,该函数求两数最大值
def calMax(a,b):
    if a>b:
        print("最大值为:",a)
        return a
    elif:
        print("最大值为:",b)
        return b

3.1.2 函数的调用

​ 函数的调用很简单,语法如下:

函数体(参数列表)

​ 比如如果要调用上面的calMax(a,b)函数,只需要如下语句即可

calMax(2,3)

​ 结果如下:

在这里插入图片描述

3.1.3 传递值和传递引用

​ 在Java中,我们都知道有一个概念,在传递参数时,有值传递和引用传递(所谓的值传递就是在调用函数时,当你将实参传递给函数时,只是将实参的一个副本交给函数,无论函数对该副本作何操作,都不会影响到其本身(本体)。而引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。看不懂也没关系,代码写多了后面回来看就懂了。)。

​ 但是在Python中,没有这种方式来传参,二十使用“传对象引用“的方式实际是值传递和引用传递的一种综合。

​ 需要注意的是,在Python中,字符串、元组和数值是不可改变的对象,而列表、字典等是可以修改的对象。

​ 如下面的案例

#coding:utf-8
#定义一个函数,传入 数值、字符串和元组,改变他们的值。
def changeValue(num,string,tuple):
    num = 5
    string = "Trumple"
    tuple = (3,6)
#定义三个变量分别是 数值、字符串、元组
num = 8
string = "littleBlack"
tuple = (4,8)
#调用changeValue()方法
changeValue(num,string,tuple)
#输出
print(num,string,tuple)

​ 结果为

在这里插入图片描述

​ 从上面可以看出,即使我们调用了changeValue()函数,三个变量的值仍然没被改变,这也就验证了我们之前学过的知识点,如果函数收到的是字符串、元组或数值,不能直接修改原始的对象,也就是对其本身无影响,相当于**“值传递”**。

​ 再看另一个案例

#coding:utf-8
#定义一个函数,修改列表和字典的值
def changeValue(list,dict):
    list[0] = "fengfeng"
    dict["name"] = "kunkun"
#定义列表和字典
list = ["fanfan","yangyang","miemie"]
dict = {"name":"chenchen","age":24}
#调用 改变值的函数
changeValue(list,dict)
print(list)
print(dict)

结果为:

在这里插入图片描述

​ 从结果可以看出,如果函数收到的是一个可改变的引用(如字典或者列表等),就能修改对象的原始值。

3.1.4 return语句

​ return 语句和Java的一样,都是可以返回一个结果回来,这里就不再赘述

3.2字符串函数

​ 字符串函数属于Python的内置函数。

3.2.1 字符串函数的定义

​ 灰常简单,和吃饭一样,可以使用单引号或者双引号来创建。

变量名 = ‘字符串的值’

变量名 = “字符串的值”

​ 如

str1 = "风好大"
str2 = '吃好喝好,一路走好'

3.2.2 字符串的截取

​ 字符串的截取也比较简单,语法如下

字符串变量名[开始下标:结束下标]

​ 该语法标识的是从开始下标到结束下标这个范围内截取字符,如果无开始下标,标识从开头(索引为0)到指定结束下标位置截取。如果是截取后几个字符,同样结束下标也可以省略,案例如下。

#coding:utf-8
str1 = "风好大"
str2 = '吃好喝好,一路走好'
# 截取str2 前五个字符 下标是0到4,如果下标是从0开始的,可省略
print("前五个字符为:",str2[:5])
print("3到6个字符为:",str2[3:6])
print("最后五个字符:",str2[len(str2)-5:])

在这里插入图片描述

3.2.3 Python中的三引号

​ 先看语法

变量名 = “”“字符串内容”“”

变量名 = ‘’‘字符串内容’‘’

顾名思义,三引号就是三个引号引起字符串内容。三引号里面的内容允许一个字符串跨行,不需要再像Java中经常要拼接了,特别是html代码,用过Java的都知道,不仅痛苦,而且痛苦。案例如下:

#coding:utf-8
html = """<form>
<input type='text' value=''/>
</form>"""
print(html)

​ 结果

在这里插入图片描述

方法描述
string.find(str, beg=0, end=len(string))检测str是否包含在string中,如果beg和end指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1
string.format()格式化字符串
string.split(str=“”, num=string.count(str))以str为分隔符切片string,如果num有指定值,则仅分隔num个子字符串
string.title()返回“标题化”的string,即所有单词都是以大写开始,其余字母均为小写
string.upper()转换string中的小写字母为大写

​ 当然,除了上述函数外还有很多,这里就不赘述。我们来看看其中的一些方法怎么用,这里用find做案例。

#coding:utf-8
#给定一小段字符串,从字符串中解析出 时间 
html = '''<div class="about">
        2022-12-19 14:44:35<br>
        来源:中国台州网'''
index = html.find('class="about">')
len1 = len('class="about">')
index2 = html.find('<br>')
timestr = html[index+len1:index2]
timestr = timestr.strip()
print(timestr)

​ 结果
在这里插入图片描述

3.3 集合类操作

3.3.1 将列表转换成集合

Python中的集合没有Java的集合那么复杂和庞大,Python中的集合只和Java中的HashSet集合类似,知识一个把不同元素组成一起的数据结构,是Python语言中的基本数据类型。其最好的作用是去重。

​ 如下:

#coding:utf-8
# 列表,可重复元素
list = [3,4,3,5]
print(list)
# 转换为集合
set = set(list)
print(set)

​ 结果

在这里插入图片描述

上面的set()方法,就是把list列表转换成集合,另外转成集合后,很显然集合中的相同元素3已经不重复了。当然除了去重之外还可以对集合中元素进行新增、删除、修改

3.3.2 集合的新增、删除和修改

​ 集合的新增、删除和修改都是对于可变集合而言(Python中集合分成可变集合和不可变集合)

方法描述
add()添加元素
clear()清空元素
discard()如果集合中无元素,不会报错;有元素就删除
pop()随机删除集合中的某个元素,取到元素后返回元素的值,s.pop()不能加目标元素,故频率略低
remove()删除目标元素,但集合中如果没有元素就会报错

3.3.3 不可变集合

​ 不可变集合是不可以新增、修改和删除集合中的元素的, 但是可以作为字典的键,而可变元素不行。另外如果要生成一个不可变集合,可以在将列表转换成集合时使用下面的方法

frozenset(list)

​ 另外我们还需要掌握集合、列表、元组和字符串之间的转换

(1)list(s1):将集合s1转换成列表

(2) str(s1):将集合s1转换成字符串

(3) tuple(s1):将集合s1转化成元组

3.3.4 集合中的四种操作符

​ Python中给集合提供了四种操作符,分别如下

(1)联合(|):实际就是数学里的并集(不懂什么叫并集的回去叫初中高中数学老师教)

(2)交集(&) : 数学中的交集,简简单单

(3)查补(-) : 两个集合求差,如 s1 - s2

(4) 对称差分(^): 集合的异或,不懂得看这个公式: (s1 - s2) U (s2-s1)

​ 看不懂的敲敲下面的案例:

#coding:utf-8
s1 = set([1,3,5])
s2 = set([1,3])
# 求联合
print(s1 | s2)
#求交集
print(s1&s2)
#求查补
print(s1-s2)
#求差分
print(s1^s2)

​ 结果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/103235.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一个转行学习前端的初学者,应该如何计划自己的学习规划?

就目前的发展来看&#xff0c;在语言排行中&#xff0c;前端多年霸主的地位还未被撼动&#xff0c;前端语言的特点就注定了很多公司会选用它&#xff0c;强大的第三方库使前端正在web端的强大无法被替代。目前由于大数据&#xff0c;人工智能的发展&#xff0c;互联网成为了发展…

Bootstrap5 复选框与单选框

如果您希望用户从预设选项列表中选择任意数量的选项&#xff0c;可以使用复选框&#xff1a; 实例 <div class"form-check"> <input class"form-check-input" type"checkbox" id"check1" name"option1" value&quo…

【Python机器学习】朴素贝叶斯分类的讲解及预测决策实战(图文解释 附源码)

需要代码请点赞关注收藏后评论区留言私信~~~ 朴素贝叶斯分类 朴素贝叶斯&#xff08;nave Bayes&#xff09;分类是基于贝叶斯定理与特征条件独立假定的分类方法。 设试验E的样本空间为S&#xff0c;A为E的事件&#xff0c;B_1&#xff0c;B_2&#xff0c;⋯&#xff0c;B_n为…

深入浅出理解Java并发AQS的共享锁模式

自定义共享锁例子 首先我们通过AQS实现一个非常最最最轻量简单的共享锁例子&#xff0c;帮助大家对共享锁有一个整体的感知。 Slf4j public class ShareLock {/*** 共享锁帮助类*/private static class ShareSync extends AbstractQueuedSynchronizer {private int lockCount…

C. Sequence Pair Weight(数学贡献法)

Problem - 1527C - Codeforces 序列的权重被定义为具有相同值&#xff08;aiaj&#xff09;的无序索引对&#xff08;i,j&#xff09;&#xff08;这里i<j&#xff09;的数量。例如&#xff0c;序列a[1,1,2,2,1]的权重是4&#xff0c;具有相同值的无序索引对的集合是&#x…

结构篇-适配器模式

文章目录一、跨越鸿沟靠适配二、插头与插孔的冲突1.三相插孔接口2.两相插孔接口3.电视机机类TV4.客户端类二、通用适配1. 适配器2.客户端类三、专属适配1.电视机专属适配器2.客户端类总结1. 对象适配器2. 类适配器总结适配器模式(Adapter)通常也被称为转换器&#xff0c;顾名思…

数字孪生炒得火热,但好像对企业发展还没有任何实质性的突破,是否只是表面功夫?

首先&#xff0c;什么是数字孪生&#xff1f; ​ 数字孪生是充分利用物理模型、传感器更新、运行历史等数据&#xff0c;集成多学科、多物理量、多尺度、多概率的仿真过程&#xff0c;在虚拟空间中完成映射&#xff0c;从而反映相对应的实体装备的全生命周期过程。数字孪生是一…

const成员,流插入,流提取重载,初始化列表!(6千字长文详解!)

c详解之const成员&#xff0c;流插入&#xff0c;流提取重载&#xff0c;初始化列表&#xff01; 文章目录c详解之const成员&#xff0c;流插入&#xff0c;流提取重载&#xff0c;初始化列表&#xff01;<< 流插入 和 >> 流提取的重载解决共有成员函数问题链式访问…

实用!7个强大的Python机器学习库!⛵

&#x1f4a1; 作者&#xff1a;韩信子ShowMeAI &#x1f4d8; 机器学习实战系列&#xff1a;https://www.showmeai.tech/tutorials/41 &#x1f4d8; 本文地址&#xff1a;https://www.showmeai.tech/article-detail/412 &#x1f4e2; 声明&#xff1a;版权所有&#xff0c;转…

如何借助扬尘视频监测系统开展扬尘污染防控工作?

一、方案背景 目前&#xff0c;跟随国家快速发展的步伐&#xff0c;城市化建设也在飞速发展&#xff0c;各种建设工程遍地开花。如何更好抵管理施工扬尘&#xff0c;杜绝各种违规及不文明现象&#xff0c;一直是施工企业、政府管理部门关注的焦点。 二、系统介绍 环境扬尘视频…

手把手教你一套完善且高效的k8s离线部署方案

作者&#xff1a;郝建伟 背景 面对更多项目现场交付&#xff0c;偶而会遇到客户环境不具备公网条件&#xff0c;完全内网部署&#xff0c;这就需要有一套完善且高效的离线部署方案。 系统资源 编号主机名称IP资源类型CPU内存磁盘01k8s-master110.132.10.91CentOS-74c8g40g0…

SkeyeVSS储备地块可视化管理信息系统 助力土地批后全程监管解决方案

一、方案背景 近年来&#xff0c;储备地块经常遭遇倾倒渣土、隐蔽性私搭乱建等违法行为的侵害&#xff0c;在违法行为发生之后又面临追责难度大、效率低的问题&#xff0c;因此可视化监管系统的建设将有效地解决单纯靠人力巡查、巡查时间长、巡查效率低以及发现侵害行为后追责…

阿里云轻量服务器--Docker--Mqtt(eclipse-mosquitto)安装

1 获取镜像&#xff1a; docker pull eclipse-mosquitto:1.6.14查看获取的镜像&#xff1a; docker images 2 安装&#xff1a; 2.1 新建日志和数据目录&#xff1a; # 配置文件存放 mkdir -p /root/mosquitto/config # 数据文件存放 mkdir -p /root/mosquitto/data # 日志文…

安全智能分析技术 神经网络架构搜索

神经网络架构搜索 定义内涵 神经网络架构搜索是为给定数据集自动找到一个或多个架构的任务&#xff0c;这些架构将为给定 的数据集生成具有良好结果的模型&#xff0c;其本质是在高维空间的最优参数搜索问题。 技术背景 深度学习模型的使用越来越大众化&#xff0c;在很多行…

论多线程之中断篇

线程中断一. 启动线程的方式二. 安全中断三. 线程的补充知识3.1 线程常用方法和线程的状态&#xff1a;3.2 线程的优先级概念&#xff1a;一. 启动线程的方式 新启线程的方式 继承Thread类实现Runnable接口&#xff0c;实际上也是通过Thread类来进行线程的操作的 package cn.…

嵌入式:数据处理指令详解

文章目录数据处理指令的特点数据处理指令的汇编格式数据处理指令&#xff0d;指令表&#xff08;1&#xff09;ADD、ADC、SUB、SBC、RSB和RSC&#xff08;2&#xff09;AND、ORR、EOR和BIC&#xff08;3&#xff09;MOV和MVN&#xff08;4&#xff09;CMP和CMN&#xff08;5&am…

如何下载及安装BIGEMAP GIS Office

如何下载及安装BIGEMAP GIS Office 发布时间&#xff1a;2018-01-17 版权&#xff1a; 本产品支持主流winodws操作系统&#xff08;xp sp3,vista,windows 7,windows 8及windows 10 11&#xff09;&#xff0c; 可通过访问Bigemap官网(BIGEMAP-卫星地图_高清卫星地图制图软件_…

791068-69-4,肾素的FRET底物

FRET substrate for renin. excitation at 340 nm, emission at 490 nm.肾素的FRET底物。激发波长为340 nm&#xff0c;发射波长为490 nm。 编号: 182722中文名称: Renin Substrate 1英文名: Renin Substrate 1CAS号: 791068-69-4单字母: H2N-R-E(Edans)-IHPFHLVIHT-K(Dabcyl)-…

PDF如何加密码保护?分享PDF加密的简单方法

PDF 通常是只读的&#xff0c;但如果收件人有特定的编辑软件&#xff0c;它们仍然可以修改&#xff0c;因此当您发送或共享 PDF 文档时&#xff0c;您可能希望使用密码对其进行保护。这样&#xff0c;未经您的许可&#xff0c;任何人都无法读取文件。 如何使用密码保护 pdf 文档…

什么是SD-WAN,它如何改变传统网络?

近年来&#xff0c;网络的构建、管理和运行方式发生了重大变化。许多 IT 管理员现在正在用更高级的网络概念和策略取代传统的网络组件和传统技术。例如&#xff0c;他们越来越依赖网络容器化、自动化、软件定义网络 &#xff08;SDN&#xff09; 和云计算等概念来简化网络。 这…