python学习——函数

news2024/10/3 22:18:07

一、函数的定义
函数就是执行特定任务和完成特定功能的一段代码。使用函数可以对代码进行复用,提高代码的可维护性和可读性,使得程序便于调试。
二、函数的创建
创建格式

#创建和格式
def 函数名([参数]:
    函数体
    [return xxx]

举例

#创建和格式
def sum (a,b):
    c=a+b
    return c

result=sum(80,120)
print(result)

运行结果
在这里插入图片描述
三、参数的传递
(1)形式参数,简称为形参,形参出现的位置是在函数的定义处。
(2)实际参数,简称为实参,实参的出现位置实在函数的调用处。
(3)位置实参,根据形参对应的位置进行实参的传递。
(4)关键字实参,根据形参的名字进行实参传递。实参赋值给形参。采用了关键字赋值之后就不会再根据位置进行传递了。
形参和实参的名字可以不同。
在函数调用的过程中,进行参数的传递,如果是不可变序列,那么在函数体的修改不会影响到实参的值,如果是可变序列,那么在函数体的修改会影响到实参的值。就是说实参的值变不变取决于实参本身是可变序列还是不可变序列。
例如

def modify(a,b):
    print('a=',a)
    print('b=',b)
    a=100
    b.append(10)
    print('a=', a)
    print('b=', b)


c=1
d=[2,3,4]
print('c=',c)
print('d=',d)
modify(c,d)
print('c=',c)
print('d=',d)

运行结果
在这里插入图片描述
四、函数的返回值
(1)如果函数不需要返回值,则可以省略return。
(2)如果函数需要返回值,如果是1个,那么直接返回原类型。
(3)如果函数有多个返回值,那么返回的结果为元组。
ps:0的布尔值为false,1的布尔值为true。
下面对数据进行分奇、偶操作。

#关于返回值的验证
def classfier(num):
    odd=[] #基数
    even=[]#偶数
    for i in num :
        if i%2:
            odd.append(i)
        else:
            even.append(i)
    return odd,even

lst=[i for i in range(10)]
print(classfier(lst))

运行结果
在这里插入图片描述
五、函数的参数定义
(1)函数在定义的时候,给形参设置默认值,那么当默认值与实参的值不同的时候,实参的值取代形参的值。
(2)个数可变的位置参数
如果说,在定义函数的时候,可能无法确定位置实参的个数,那么我们可以用可变的位置参数,具体的操作方法是使用*定义个数可变的位置形参,输出结果是一个元组。

#不确定实参个数

def test(*a):
    print(a)

test(1)
test(1,2)
test('hello','world','hello','python')

运行结果
在这里插入图片描述
(3)个数可变的关键字形参
同理,在函数定义的时候,事先无法确定所要传递的关键字实参的个数的时候,这时候我们就可以使用可变的关键字形参,具体操作方法是使用**,输出结果是一个字典。
例如

#关键字形参个数不确定
def test(**para):
    print(para)

test(a=10)
test(a=10,b=20,c=30)

运行结果
在这里插入图片描述
注意
①可变的位置参数和可变的关键字参数只能有一个。
②当定义函数是既需要关键字形参,有需要位置形参的时候,那么要求位置形参放在第一个,关键字形参放在第二个。

def test(*a,**b):

(4)使用*可以将列表中的元素都转换为位置实参,使用两个星号可以将字典中的每个键值对都转换为关键字实参。

#转换为位置参数和关键字参数

def test(a,b,c):
    print('a=',a)
    print('b=',b)
    print('c=',c)

lst=[1,2,3]
test(*lst)

dic={'a':10,'b':20,'c':30}
test(**dic)

运行结果
在这里插入图片描述
关键字形参和个数可变的位置形参都是使用*,个数可变的关键字形参要用两个星号。
例如

#传递一部分位置参数,传递一部分关键字参数
def test(a,b,*,c,d):#表示从c之后必须采用关键字参数
    print('a=', a)
    print('b=', b)
    print('c=', c)
    print('d=', d)

test(a=10,b=20,c=30,d=40)
test(10,20,c=30,d=40)

运行结果
在这里插入图片描述
def test(a,b,*,c,d)这一部分指得是星号之后必须采用关键字传参。
六、变量的作用域
根据变量的作用范围可以将变量分为全局变量和局部变量。
在函数体内定义的变量是局部变量,顾名思义,作用范围是函数内部。在函数体外失去作用。
例如

#变量的作用域
def test(a,b):
    c=a+b
    print(c)

print(a)
print(b)
print(c)

发现报错
在这里插入图片描述
即在变量在函数体外失去定义。

现在把a,b改为全局变量

a=10
b=20
def addition():
    c=a+b
    print(c)

addition()

运行结果
在这里插入图片描述
也可以在函数体内定义全局变量,这时候需要加上global对这个变量进行说明。
例如不加global

def test(a,b):
    # global  c
    c=a+b

test(10,20)
print(c)

运行结果
在这里插入图片描述
函数体内,变量前加上global

def test(a,b):
    global  c
    c=a+b

test(10,20)
print(c)

运行结果
在这里插入图片描述
七、递归函数
(1)递归函数的定义
如果在一个函数的函数体内调用了函数的本身,那么这个函数就称为递归函数。
(2)递归函数主要是由递归调用和递归终止条件组成的,无递归终止条件,函数将会无限被调用。
例如,求阶乘就用到了递归函数。

#求阶乘
def fac(a):
    if a==1:
       return 1
    else:
        result=a*fac(a-1)
        return(result)

print('6的阶乘是%d'%(fac(6)))

运行结果
在这里插入图片描述
八、总结

在这里插入图片描述

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

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

相关文章

h5实现下拉选择

一、先看效果图 二、简单实现一下代码 首先你要引入jQuery.js文件 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name…

Vue基础 el挂载点、data数据对象

第一步导入vue&#xff0c;第二步在html里面写一点东西&#xff0c;第三步在js里面写一点东西。 <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>首页</title><link href"" type"text/css"…

开发小程序为什么会成为餐饮行业的新趋势

在过去的一段时间里&#xff0c;小程序的发展可谓是如火如荼。特别是在餐饮行业&#xff0c;无论是大型连锁企业还是小型独立店铺&#xff0c;都在积极布局小程序开发&#xff0c;这一现象引发了我们的思考&#xff1a;为何开发小程序会成为餐饮行业的新趋势呢&#xff1f; 首…

d3dcompiler_47.dll缺失怎么修复,三种修复方法分享

打开游戏的时候&#xff0c;电脑报错“找不到d3dcompiler_47.dll无法继续执行此代码”&#xff0c;不知道怎么处理&#xff1f;下面小编就详细分享关于d3dcompiler_47.dll的三种修复方法以及作用。d3dcompiler_47.dll是Microsoft公司开发的动态链接库文件&#xff0c;属于Micro…

html实现好看的多种风格导航菜单(附源码)

文章目录 1.设计来源1.1 顶部导航菜单1.1.1 界面风格1-一二级连体导航菜单1.1.2 界面风格2-二级导航下拉框1.1.3 界面风格3-系统开始风格1.1.4 界面风格4-购物类导航菜单1.1.5 界面风格5 - 带搜索扩展的导航条1.1.6 界面风格6-火热效果多级导航条 1.2 悬浮按钮菜单1.2.1 界面风…

Retrofit学习基础

1. 基本使用 Retrofit 网络请求的工作本质上是OkHttp完成&#xff0c;而 Retrofit 仅负责 网络请求接口的封装。App应用程序通过Retrofit请求网络&#xff0c;实际上是使用 Retrofit 接口层封装请求参数、Header、Url 等信息&#xff0c;之后由 OkHttp 完成后续的请求操作在服…

如何扫码看文件?多个文件如何独立建码?

现在用二维码来承载文件是很常见的一种方式&#xff0c;可以将多个不同文件做成一个二维码或者多个二维码&#xff0c;来让其他人扫码查看&#xff0c;那么文件转二维码的方法是如何来操作的呢&#xff1f;下面教大家使用二维码生成器&#xff08;免费在线二维码生成器-二维码在…

5.7.3 UDP协议格式(二)使用Wireshark分析UDP用户数据报

5.7.3 UDP协议格式&#xff08;二&#xff09;使用Wireshark分析UDP用户数据报 我们通过对Wireshark采集的UDP用户数据报进行分析&#xff0c;判定一下UDP用户数据报报文接收的是否正确&#xff0c;这里我们首先要对Wireshark采集到的UDP数据的含义。 如图 其中分组详情面板中…

编译时间和运行态时间交换的优缺点

前言 &#xff08;1&#xff09;前几天&#xff0c;我刷视频无意之间看到一个视频说&#xff0c;sizeof(a)&#xff0c;这个a是会自增吗&#xff1f; &#xff08;2&#xff09;如果有经验的人肯定会说&#xff0c;不会自增&#xff0c;这是常识。那么将这句话转化为汇编之后会…

GLP-1爆火2023:神药显雏形,争夺引内卷

2023年过半&#xff0c;如果要从创新药角度做一份总结&#xff0c;什么赛道、哪类药物会是“当红炸子鸡”&#xff1f;答案一定是GLP-1类药物。 原本用于治疗二型糖尿病的药物&#xff0c;在国内社交媒体上&#xff0c;关于司美格鲁肽的减肥奇效&#xff0c;甚至引发了一股抢药…

GBDT算法原理以及实例理解(含Python代码简单实现版)

一、算法简介&#xff1a; GBDT 的全称是 Gradient Boosting Decision Tree&#xff0c;梯度提升树&#xff0c;在传统机器学习算法中&#xff0c;GBDT算的上是TOP前三的算法。 想要理解GBDT的真正意义&#xff0c;那就必须理解GBDT中的Gradient Boosting和Decision Tree分别…

python开发构建基于国家气象台免费免费数据查询接口的气象数据采集与可视化分析应用

天气气象数据是用于描述和记录大气环境状态和变化的数据。它包含了各种气象要素和参数的观测值&#xff0c;如温度、湿度、风速、降水量、气压等。 天气气象数据通常由气象站点、卫星观测和气象雷达等设备获取。这些设备会定期测量和记录各种气象要素&#xff0c;并将数据传输…

怎么虚化图片?虚化图片的软件分享!​

虚化图片是一种广泛应用于摄影和设计领域的技术。它可以通过柔化图像的某些部分&#xff0c;使图片更加优美、柔和&#xff0c;使人们更加关注图像的主体&#xff0c;强调出图片的重点。虚化图片的使用场景非常广泛。它可以用于制作海报、广告、杂志等印刷媒体&#xff0c;也可…

编译、安装、调试Linux内核

这里写目录标题 编译安装内核下载内核安装依赖更改.config编译内核安装首先安装模块安装内核更改引导更改grub重启 其他操作清理内核源目录卸载安装的内核修改内核配置菜单实现对新加入内核源码的控制 常见问题1. Module.symvers is missing2. No rule to make target ‘debian…

Redux的讲解与教程

我们在学习和使用React做项目的时候&#xff0c;肯定离不开Redux的使用。那么 “Redux” 是什么呢&#xff1f;。它有什么作用&#xff1f;它帮助我解决什么问题&#xff1f;我为什么要使用它&#xff1f;搞懂这些能让我们更好的理解和使用Redux。 Redux 是什么&#xff1f; R…

setjmp和longjmp

使用这两个函数时&#xff0c;一定要牢记&#xff0c; longjmp函数是有去无回的&#xff0c;后面还有两个错误的使用示例。 #include <setjmp.h> int setjmp(jmp_buf env); void longjmp(jmp_buf env, int val); 基础例子&#xff1a; #include <setjmp.h> #inc…

XHbuilder 需要的 ipa 签名,超详细的教程,你不看吃亏的是自己!

今天使用 hbuilder 运行到 ios 真机的时候&#xff0c;突然发现还需要 ipa 签名&#xff0c;这是什么东东呢&#xff1f; 1、IPA 签名是什么&#xff1f; 因苹果公司禁止企业证书用于非企业内部开发者。所以开发者无法再使用DCloud的企业证书签名的标准运行基座。 运行标准基…

预约直播 | 展心展力MetaApp:基于DeepRec的稀疏模型训练实践

MetaApp-推荐广告研发部&#xff0c;主要负责 MetaApp 拳头产品 233 乐园的首页信息流的推荐和广告系统&#xff0c;是比较传统的推广搜组。本次议题介绍了 MetaApp-推荐广告研发部 从传统的TensorFlow&#xff08;cpu&#xff09;自研分布式ps方案&#xff0c;逐步迁移到使用…

智能安全配电装置伙房食堂中的应用

【摘要】伙房食堂是高频用火用电场所&#xff0c;用火用电设备集中&#xff0c;同时人流量密集&#xff0c;如果没有做好预防工作&#xff0c;则容易引发火灾&#xff0c;造成人员伤亡。智能安全配电装置作为一种安全配电产品&#xff0c;可以有效预防电气事故的发生&#xff0…

HttpRunner_参数化进阶

目录 一.获取返回包数据 二.调用其他接口返回值 三.yml文件 四.设置全局变量并引用 五.调用函数 六.参数化驱动(最简单的方式) 七.参数化驱动(复杂的方式)   八.使用指定的报告模板指定报告生成路径 九.保存测试过程数据 十.单独使用HttpRunner 一.获取返回包数据 …