Python(五)-函数

目录

函数的定义与调用

特点

语法格式 

函数的参数

函数的返回值

函数嵌套调用

变量的作用域

局部变量

全局变量

函数的多种参数

位置参数

关键字参数

默认参数

可变参数


函数的定义与调用

python函数需要使用def关键字来定义,需要先定义,后调用

特点:

  • 先定义,后调用
  • 不调用,不执行
  • 调用一次,执行一次

语法格式 

# 定义函数

def 函数名():

        代码1

        ...

# 调用函数

函数名()

编写一个show()函数,并在函数中输出:bug虐我千百遍, 我待bug如初恋。

def show():print("bug虐我千百遍, 我待bug如初恋。")show()

函数的参数

当在定义函数时,设定了参数,则可称该函数为:有参函数。反之,没有参数的函数,称为:无参函数。

(1)形参是指形式参数,表示在定义函数时的参数;

(2)实参是指实际参数,表示在调用函数时传递的参数值,具有实际意义。

有参函数

def 函数名(参数1,参数2,...):  # 形参
    代码1
    代码2
    ...

函数名(参数值1,参数值2,...)  # 实参

定义一个函数,用于求解两个数之和;

def sum_num(a,b):sum = a + bprint(f"两个数的和:{sum}")sum_num(2,4)  # 6
sum_num(7,4)  # 11

函数的返回值

函数的返回值指的是:当函数完成一件事情后,最后要返回给函数的结果。

def 函数名([参数1, 参数2, ...]):
    代码1
    代码2
    ...
    return 值

...

print(函数名(实参,实参,...))

:

(1)若要给函数返回结果,需要使用return关键字;

(2)return关键字的作用:把结果返回给函数;结束函数;

(3)当函数没有返回值时,默认返回None。

(1)定义一个函数1,用于求解两个数之积,并把积返回给函数;

(2)定义一个函数2,用于求解两个数的差、和,并同时返回给函数;

(3)定义一个函数3,输出:人生苦短,我用Python;

# 1.求解两个数的积
def func1(a,b):return a*bprint(func1(3,5))  # 15# 2.求解两个数的差,和
def func2(x,y):return x-y,x+yprint(func2(8,5))  # (3,13)  输出的是一个元组# 3.输出没有返回值
def show():print("人生苦短,我用Python。")show() # 人生苦短,我用Python。
print(show())  # None

函数嵌套调用

def 函数1():
    代码
    ...

def 函数2():
    代码
    # 调用函数1
    函数1()
    ...

例1:

(1)先定义一个test()函数和func()函数;

(2)接着,在函数test()中,嵌套调用func()函数,并在外部调用test()函数;

(3)执行程序,观察效果;


# 1.定义func()
def func():print("==========AA===============")print("==========Nfunc()============")print("==========BB===============")# 2.定义test()、调用func()
def test():print("*************11****************")func()print("**********M调用了test方法**************")print("*************22****************")# 3.调用test()
test()   

例2:

(1)要完成一个输出任意条横线的需求;

(2)定义函数1:用于输出一条横线;

(3)定义函数2:先循环N次,再调用函数1,可输出N条横线;

def print_one_line():print("-"*40)def print_lines(num):i = 0while i < num:print_one_line()i += 1print_lines(10)

变量的作用域

局部变量

局部变量指的是:定义在函数内部的变量或参数,且只在函数中生效。

def 函数名(参数1,参数2,...):
    代码
    变量名 = 值
    ...

(1)定义一个函数1,有局部变量:参数;

(2)定义一个函数2,有局部变量:变量;

(3)调用函数,观察程序执行效果。

# 1.参数
def func1(a):print(f"a值为:{a}")func1(2)def func2():b=100  # 局部变量print(f"===========b的值 = {b}")func2()
print(b) # 报错

全局变量

全局变量指的是:在函数体内、外都能生效的变量。

变量名 = 值

def 函数名():
    代码
    ...

注意:想要修改全局变量的值时,记得提前使用global进行声明.

# 声明
global 变量名
# 修改值
变量名 = 修改后的值

(1)定义一个全局变量1,并在函数内外都使用;

(2)定义一个同名的全局变量2和局部变量,并在函数内使用该同名变量;

# 1.定义全局变量
a = 100
print(a)def func():print(f"输出的变量:{a}")func()# 3.定义同名变量
age = 18def show():age = 34print(f"输出age的值为:{age}")show()
print(f"age = {age}")

注意:当全局变量和局部变量设置的变量名相同,优先输出全局变量 

函数的多种参数

位置参数

调用函数时,根据函数定义的参数位置来传递数值。

def 函数名(参数1,参数2,...):
    代码
    ...

函数名(值1,值2,...)

(1)定义使用格式化符号替换数据,显示法名,技能,年龄

def show_info(name, skill, age):print("-" * 50)print("法名: %s"%name)print("技能: %s"%skill)print("年龄: %d"%age)print("-" * 50)# 2 关键字参数 关注点: 值找到对应的参数名就可以, 跟顺序无关(参数多时 比较适合)
# show_info(skill="好色", age=888, name="八戒")
# show_info(age=888) # 报错: 缺少两个参数 name, skill# 1 位置参数 关注点: 参数 个数, 类型, 顺序(缺点: 必须按照指定顺序来)
show_info("悟空", "七十二绝技", 666)
# show_info("悟空", 72, "666") # 报错: 需要整数, 传递的字符串, 类型不一致
# show_info("悟空") # 报错: 缺少参数

注意:如果参数的个数不够,或者类型不对,将会报错

关键字参数

调用函数时,可以通过【键 = 值】的形式指定参数。

def 函数名(参数1,参数2,...):
    代码
    ...

函数名(参数1=值, 参数2=值,...)

定义一个函数,用于显示个人名片的姓名、年龄、性别等信息;

# 1.定义显示个人信息的函数
def show_infos(name, age, sex):print("个人信息如下:")print(f"姓名:{name}")print(f"年龄:{age}")print(f"性别:{sex}")# 2.调用
show_infos(age=24,name="张三",sex="女")
# show_infos(age=24,name="张三",gender="女")  # 报错

默认参数

在定义函数时,就为参数提供默认值。

def 函数名(参数1,参数2,...,参数n=值):
    代码
    ...

函数名(值1,值2,...[值n])

定义一个显示姓名,电话,密码的函数,且默认性别为男;

def emp(name, phone, password="123456"):print("-" * 50)print(f"个人信息: name={name}, phone={phone}, password={password}")print("-" * 50)# emp("悟空", "18612480001", password="baqi")
emp("八戒", "18612480001")# 报错: 设置默认参数 必须参数的最后
# def emp(password="123456", name, phone):
#     print("-" * 50)
#     print(f"个人信息: name={name}, phone={phone}, password={password}")
#     print("-" * 50)# 报错: 设置默认参数 必须参数的最后
# def emp(name="悟净", phone, password="123456"):
#     print("-" * 50)
#     print(f"个人信息: name={name}, phone={phone}, password={password}")
#     print("-" * 50)

 注意:定义默认参数必须放在最后的位置,并且打印时也不可以换位置

可变参数

可变参数也叫不定长参数,不定长参数用于在不确定调用函数时,要传递多少个参数的场景,当然也可以不传递参数。

而当要调用函数时,可以给*args传递位置参数,给**kwargs传递关键字参数,这样显得更加方便。

def 函数名(参数1,..,*args,**kwargs):
    代码
    ...
    
函数名(值1, 值2, 值3, ... 参数1=值, 参数2=值,...)

(1)定义函数1,使用不定长参数*args求多个数之和;

(2)定义函数2,使用不定长参数**kwargs求多个数之和;

(3)综合两个函数,合并在一起完成求多个数之和;

# 1.通过*args求和
def num1(*args):print(args)sum1 = 0for i in args:sum1 += iprint(f"多个数之和为:{sum1}")num1(1,2)  # 3
num1(1,2,9)  # 12
num1(1,2,9,11)  # 23# 2.通过**kwargs之和
def num2(**kwargs):print(kwargs)sum2 = 0for i in kwargs.values():sum2 += iprint(f"多个数之和为:{sum2}")num2(a=1,b=2)  # 3
num2(a=1,b=2,c=4)  # 7
num2(a=1,b=2,c=3,d=9)  # 15# 3.结合
def num3(*args,**kwargs):result = 0sum1 = 0for i in args:sum1 += isum2 = 0for i in kwargs.values():sum2 += iresult = sum1 + sum2print(f"多个数之和为:{result}")num3(3, a=1, b=2, c=4)  # 10
num3(3,6, a=1, b=2, c=4)  # 16
num3(3,6, a=1, b=2, c=4,f=9)  # 25

 

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

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

相关文章

遍历递归数结构,修改里的disabled值

返回参数中新增字段 disabled,后端给的值为1和2, disabled1时&#xff0c;代表该节点需要置灰&#xff0c;不可选中 现在需要将disabled的值,改为布尔类型; 后端给的数结构是对象类型,tree接收数组类型; 先将对象类型的数据,遍历递归,修改里面的disabled值,最后再加[ ],改为…

vue项目中的node、node-sass、sass-loader之间的版本关系

这个报错&#xff0c;想必大部分人都会遇到&#xff0c;版本不适配的问题&#xff0c;记录下解决方案。 版本适配问题 node 与node-sass node-sass与sass-loader sass-loader 4.1.1&#xff0c;node-sass 4.3.0sass-loader 7.0.3&#xff0c;node-sass 4.7.2sass-loader 7.3.…

负载均衡--相关面试题(六)

在负载均衡的面试中&#xff0c;可能会遇到一系列涉及概念、原理、实践应用以及技术细节的问题。以下是一些常见的负载均衡面试题及其详细解答&#xff1a; 一、什么是负载均衡&#xff1f; 回答&#xff1a;负载均衡是一种将网络请求或数据传输工作分配给多个服务器或网络资源…

RK 方案VOP 显示接口的链接关系以及DTS如何配置

这图显示各vp 支持情况 如下图VP0 支持DSI0 DSI1 EDP LVDS HDMI 显示接口&#xff0c;如果我们一方案需要点MIPI 屏 和HDMI out, 如果VP0 链接MIPI DSI0 那么VP0 就不能再选择了&#xff0c;只能VP1 链接HDMI out 了。因为VP2不至此HDMI&#xff0c;所有就只有选择VP1 链接HDMI…

磁盘分区与固件启动

扇区是磁盘读写的基本单位&#xff0c;是磁头从磁盘中读取数据的最小单位&#xff0c;一般是512B&#xff08;现代磁盘还有4 KB&#xff09;&#xff0c;多个相邻的扇区组合在一起形成一个簇。其中磁盘的第一个扇区特别重要&#xff0c;它存储了磁盘分区表。 早期磁盘的第一个…

尚硅谷----智尚代驾项目----Day7(续)------预估乘客订单数据之Drools

Hello uu 们&#xff01;感谢你们的收看&#xff0c;话不多说&#xff0c;今天开始我们的Drools之旅 Drools介绍 drools是一款由JBoss组织提供的基于Java语言开发的开源规则引擎&#xff0c;可以将复杂且多变的业务规则从硬编码中解放出来&#xff0c;以规则脚本的形式存放在文…

Dapper 如何确保数据的安全性和防止 SQL 注入攻击?

一、什么是SQL注入攻击 SQL注入攻击是一种常见的网络攻击手段&#xff0c;它利用了应用程序中安全措施不足的问题&#xff0c;允许攻击者插入或“注入”一个或多个SQL语句到原本的查询中。这种攻击可以用于获取、篡改或删除数据库中的数据&#xff0c;甚至可以执行一些数据库管…

springboot+大数据基于数据挖掘的招聘信息可视化大屏系统【内含源码+文档+部署教程】

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ &#x1f345;由于篇幅限制&#xff0c;想要获取完整文章或者源码&#xff0c;或者代做&am…

项目实战:构建高效可扩展的Flask Web框架:集成Flask-SQLAlchemy、Marshmallow与日志管理

前言 在Web开发中&#xff0c;构建一个既高效又可扩展的框架是项目成功的基石。Flask作为一个轻量级的Web应用框架&#xff0c;凭借其易用性和灵活性&#xff0c;特别适合快速开发和原型设计。结合Flask-SQLAlchemy&#xff08;为Flask提供SQLAlchemy ORM支持的扩展&#xff0…

前端基础面试题·第四篇——Vue(其一)

1.v-if 和 v-show的区别 在Vue中这两个命令都用于控制元素的显示与隐藏。 (1) v-if 动态控制元素显示与隐藏&#xff0c;本质上是动态销毁或者重建元素&#xff0c;会触发浏览器重排与重绘。在切换状态时有一个局部编译/卸载的过程会适当重建或者销毁内部的事件监听、子组件。…

数据结构与算法实验9 实现无向连通图的最小生成树

文章目录 1.上机名称2.上机要求3.上机环境4.程序清单(写明运行结果及结果分析)4.1 程序清单4.1.1 头文件 Graph.h 内容如下&#xff1a;4.1.2 实现文件 Graph.cpp 内容如下&#xff1a;4.1.3 源文件 main.cpp 内容如下&#xff1a; 4.2 运行结果 5.上机体会 1.上机名称 实现无向…

如何使用Git管理项目工程

目录 安装git 注册gitee gitee注册示例 git账户配置 使用git仓库 在本地生成一个git仓库 创建文件并增加commit 命令详解 git status git add git commit git remote git push git pull git fetch git log git branch 安装git windows下安装git可以直接上git…

distinct导致sql超时

前言 昨天敲着敲着代码&#xff0c;小杨哥跑过来给我说&#xff0c;快看他们大会议室演示报错了&#xff0c;还是一堆错了。完了啊在演示的时候报错&#xff01;&#xff01;&#xff01;接下来我们分析一下是什么原因吧。 问题分析 查看日志&#xff1a; 从日志打印看明显的…

Gin框架简易搭建(3)--Grom与数据库

写在前面 项目地址 个人认为GORM 指南这个网站是相比较之下最为清晰的框架介绍 但是它在环境搭建阶段对于初学者而言不是很友好&#xff0c;尤其是使用mysql指令稍有不同&#xff0c;以及更新的方法和依赖问题都是很让人头疼的&#xff0c;而且这些报错并非逻辑上的&#xf…

用大模型优化大模型预训练数据,节省20倍计算量,实现显著性能提升!

生成式人工智能研究实验室&#xff08;GAIR&#xff0c;主页&#xff1a;https://plms.ai/&#xff09;是国内首个聚焦于生成式人工智能的高校研究组。汇聚了来自于 CMU、复旦、交大&#xff08;ACM 班、IEEE 试点班等&#xff09;等顶尖高校的年轻本硕博人才。实验室专注于三大…

大数据-150 Apache Druid 安装部署 单机启动 系统架构

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

从‘盲管’到‘智网’,漫途精准构建排水管网监测方案

在城市错综复杂的基础设施网络中&#xff0c;排水管网作为城市的“血脉”&#xff0c;其高效、稳定运行直接关系到城市生活的安宁与财产的安全。面对日益频繁的雨季挑战与气候变化的不确定性&#xff0c;传统“盲管”管理模式已难以满足现代城市治理的需求。 漫途排水管网监测…

LED显示屏如何通过FMEA进行风险分析:打造无忧显示新境界

LED显示屏作为高科技产品&#xff0c;其性能受到多种因素的影响&#xff0c;包括但不限于设计缺陷、材料质量、制造工艺、使用环境等。任何环节的疏漏都可能导致显示屏出现亮度不均、色彩失真、故障频发等问题&#xff0c;进而影响用户体验和品牌形象。因此&#xff0c;通过FME…

Linux标准IO(四)-格式化I/O输入

C 库函数提供了 3 个格式化输入函数&#xff0c;包括&#xff1a;scanf()、fscanf()、sscanf()&#xff0c;其函数定义如下所示&#xff1a; #include <stdio.h> int scanf(const char *format, ...); int fscanf(FILE *stream, const char *format, ...); int sscanf(c…

Spring Web MVC课后作业

目录 1.加法计算器 2.⽤户登录 3.留⾔板 1.加法计算器 &#xff08;1&#xff09;需求分析 加法计算器功能, 对两个整数进⾏相加, 需要客⼾端提供参与计算的两个数, 服务端返回这两个整数计算 的结果。 &#xff08;2&#xff09;接⼝定义 请求路径&#xff1a; calc/sum 请…