2.1 定义函数

def 函数名(参数):

代码1

代码2

......

2.2 调⽤函数

函数名(参数)

注意:

1. 不同的需求,参数可有可⽆。

2. 在Python中,函数必须先定义后使⽤。

2.3 快速体验

需求:复现ATM取钱功能。

1. 搭建整体框架(复现需求)

print('密码正确登录成功')

# 显示"选择功能"界⾯

print('查询余额完毕')

# 显示"选择功能"界⾯

print('取了2000元钱')

# 显示"选择功能"界⾯

2. 确定“选择功能”界⾯内容

print('查询余额')

print('存款')

print('取款')

3. 封装"选择功能"

注意:⼀定是先定义函数,后调⽤函数。

# 封装ATM机功能选项 -- 定义函数

def select_func():

print('-----请选择功能-----')

print('查询余额')

print('存款')

print('取款')

print('-----请选择功能-----')

4. 调⽤函数

在需要显示“选择功能”函数的位置调⽤函数。

print('密码正确登录成功')

# 显示"选择功能"界⾯ -- 调⽤函数

select_func()

print('查询余额完毕')

# 显示"选择功能"界⾯ -- 调⽤函数

select_func()

print('取了2000元钱')

# 显示"选择功能"界⾯ -- 调⽤函数

select_func()

三.函数的参数作⽤

思考:完成需求如下:⼀个函数完成两个数1和2的加法运算,如何书写程序?

# 定义函数

def add_num1():

result = 1 + 2

print(result)

# 调⽤函数

add_num1()

思考:上述add_num1函数只能完成数字1和2的加法运算,如果想要这个函数变得更灵活,可以计算任何⽤户指定的两个数字的和,如何书写程序?

分析:⽤户要在调⽤函数的时候指定具体数字,那么在定义函数的时候就需要接收⽤户指定的数字。函数调⽤时候指定的数字和定义函数时候接收的数字即是函数的参数。

# 定义函数时同时定义了接收⽤户数据的参数a和b,a和b是形参

def add_num2(a, b):

result = a + b

print(result)

# 调⽤函数时传⼊了真实的数据10 和 20,真实数据为实参

add_num2(10, 20)

四.函数的返回值作⽤

例如:我们去超市购物,⽐如买烟,给钱之后,是不是售货员会返回给我们烟这个商品,在函数中,如果需要返回结果给⽤户需要使⽤函数返回值。

def buy():

return '烟'

# 使⽤变量保存函数返回值

goods = buy()

print(goods)

4.1 应⽤

需求:制作⼀个计算器,计算任意两数字之和,并保存结果。

def sum_num(a, b):

return a + b

# ⽤result变量保存函数返回值

result = sum_num(1, 2)

print(result)

五.函数的说明⽂档

思考:定义⼀个函数后,程序员如何书写程序能够快速提示这个函数的作⽤?

答:注释

思考:如果代码多,我们是不是需要在很多代码中找到这个函数定义的位置才能看到注释?如果想更⽅便的查看函数的作⽤怎么办?

答:函数的说明⽂档

函数的说明⽂档也叫函数的⽂档说明。

5.1 语法

定义函数的说明⽂档

def 函数名(参数):

""" 说明⽂档的位置 """

代码

......

查看函数的说明⽂档

help(函数名)

5.2 快速体验

def sum_num(a, b):

""" 求和函数 """

return a + b

help(sum_num)

六.函数嵌套调⽤

所谓函数嵌套调⽤指的是⼀个函数⾥⾯⼜调⽤了另外⼀个函数。

示例

def testB():

print('---- testB start----')

print('这⾥是testB函数执⾏的代码...(省略)...')

print('---- testB end----')

def testA():

print('---- testA start----')

testB()

print('---- testA end----')

testA()

执⾏流程

如果函数A中,调⽤了另外⼀个函数B,那么先把函数B中的任务都执⾏完毕之后才会回到上次 函数A执⾏的位置。

七. 变量作⽤域

变量作⽤域指的是变量⽣效的范围,主要分为两类:局部变量和全局变量。

局部变量

所谓局部变量是定义在函数体内部的变量,即只在函数体内部⽣效。

def testA():

a = 100

print(a)

testA() # 100

print(a) # 报错:name 'a' is not defined

变量a是定义在 testA 函数内部的变量,在函数外部访问则⽴即报错。

局部变量的作⽤:在函数体内部,临时保存数据,即当函数调⽤完成后,则销毁局部变量。

全局变量

所谓全局变量,指的是在函数体内、外都能⽣效的变量。

思考:如果有⼀个数据,在函数A和函数B中都要使⽤,该怎么办?

答:将这个数据存储在⼀个全局变量⾥⾯。

# 定义全局变量a

a = 100

def testA():

print(a) # 访问全局变量a,并打印变量a存储的数据

def testB():

print(a) # 访问全局变量a,并打印变量a存储的数据

testA() # 100

testB() # 100

思考: testB 函数需求修改变量a的值为200,如何修改程序?

a = 100

def testA():

print(a)

def testB():

a = 200

print(a)

testA() # 100

testB() # 200

print(f'全局变量a = {a}') # 全局变量a = 100

思考:在 testB 函数内部的 a = 200 中的变量a是在修改全局变量 a 吗?

答:不是。观察上述代码发现,15⾏得到a的数据是100,仍然是定义全局变量a时候的值,⽽没有返回testB 函数内部的200。综上: testB 函数内部的 a = 200 是定义了⼀个局部变量。

思考:如何在函数体内部修改全局变量?

a = 100

def testA():

print(a)

def testB():

# global 关键字声明a是全局变量

global a

a = 200

print(a)

testA() # 100

testB() # 200

print(f'全局变量a = {a}') # 全局变量a = 200

八. 多函数程序执⾏流程

⼀般在实际开发过程中,⼀个程序往往由多个函数(后⾯知识中会讲解类)组成,并且多个函数共享某些数据,如下所示:

共⽤全局变量

# 1. 定义全局变量

glo_num = 0

def test1():

global glo_num

# 修改全局变量

glo_num = 100

def test2():

# 调⽤test1函数中修改后的全局变量

print(glo_num)

# 2. 调⽤test1函数,执⾏函数内部代码:声明和修改全局变量

test1()

# 3. 调⽤test2函数,执⾏函数内部代码:打印

test2() # 100

返回值作为参数传递

def test1():

return 50

def test2(num):

print(num)

# 1. 保存函数test1的返回值

result = test1()

# 2.将函数返回值所在变量作为参数传递到test2函数

test2(result) # 50

九. 函数的返回值

思考:如果⼀个函数如些两个return (如下所示),程序如何执⾏?

def return_num():

return 1

return 2

result = return_num()

print(result) # 1

答:只执⾏了第⼀个return,原因是因为return可以退出当前函数,导致return下⽅的代码不执⾏。

思考:如果⼀个函数要有多个返回值,该如何书写代码?

def return_num():

return 1, 2

result = return_num()

print(result) # (1, 2)

注意:

1. return a, b 写法,返回多个数据的时候,默认是元组类型。

2. return后⾯可以连接列表、元组或字典,以返回多个值。

十. 函数的参数

10.1 位置参数

位置参数:调⽤函数时根据函数定义的参数位置来传递参数。

def user_info(name, age, gender):

print(f'您的名字是{name}, 年龄是{age}, 性别是{gender}')

user_info('TOM', 20, '男')

注意:传递和定义参数的顺序及个数必须⼀致。

10.2 关键字参数

函数调⽤,通过“键=值”形式加以指定。可以让函数更加清晰、容易使⽤,同时也清除了参数的顺序需求。

def user_info(name, age, gender):

print(f'您的名字是{name}, 年龄是{age}, 性别是{gender}')

user_info('Rose', age=20, gender='⼥')

user_info('⼩明', gender='男', age=16)

注意:函数调⽤时,如果有位置参数时,位置参数必须在关键字参数的前⾯,但关键字参数之间不存在

先后顺序。

10.3 缺省参数

缺省参数也叫默认参数,⽤于定义函数,为参数提供默认值,调⽤函数时可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调⽤)。

def user_info(name, age, gender='男'):

print(f'您的名字是{name}, 年龄是{age}, 性别是{gender}')

user_info('TOM', 20)

user_info('Rose', 18, '⼥')】

注意:函数调⽤时,如果为缺省参数传值则修改默认参数值;否则使⽤这个默认值。

十一. 函数应⽤

11.1 打印图形

1. 打印⼀条横线

def print_line():

print('-' * 20)

print_line()

2. 打印多条横线

def print_line():

print('-' * 20)

def print_lines(num):

i = 0

while i < num:

print_line()

i += 1

print_lines(5)

11.2 函数计算

1. 求三个数之和

def sum_num(a, b, c):

return a + b + c

result = sum_num(1, 2, 3)

print(result) # 6

2. 求三个数平均值

def average_num(a, b, c):

sumResult = sum_num(a, b, c)

return sumResult / 3

result = average_num(1, 2, 3)

print(result) # 2.0

python函数定义错误_[转载]python之函数的使用及异常处理2021.1.30相关推荐

  1. python网格搜索核函数_(转载)Python机器学习笔记GridSearchCV(网格搜索)

    转载声明 介绍 在机器学习模型中,需要人工选择的参数称为超参数.比如随机森林中决策树的个数,人工神经网络模型中隐藏层层数和每层的节点个数,正则项中常数大小等等,他们都需要事先指定.超参数选择不恰当,就 ...

  2. python数据类型定义为_一Python 数据类型

    变量.字符编码 1:声明变量: #_*_coding:utf-8_*_ #__author__:"shikai" name="shikai" #变量名:name ...

  3. python模块的发布_(转载)Python中模块的发布与安装

    模块(Module) Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关键字引入math这个 ...

  4. python如何定义矩阵_基础 | Python下的矩阵定义 (下)

    关键词:线性代数 / 矩阵 / 基本定义 矩阵对于算法就如同人对于食物般的关系,已经到了密不可分的状态了,在神经网络里,矩阵代表了每层神经元之间的链接,在集成算法里,矩阵记录了每次分类器更新的残差,在 ...

  5. python pip工具命令_转载 Python 安装setuptools和pip工具操作方法(必看)

    本文章转载自 脚本之家 http://www.jb51.net  感谢! setuptools模块和pip模块是python进行第三方库扩展的极重要工具,例如我们在需要安装一些爬虫或者数据分析的包时就 ...

  6. python中定义无符号整数_在python中如何将有符号整数转换为无符号整数

    要获得与C类型转换相等的值,只需按位并使用适当的掩码.e. g.如果unsigned long是32位:>>> i = -6884376 >>> i & 0 ...

  7. python处理pcap文件_[转载]Python读取pcap文件

    想试一试读取pcap文件的内容,并且分析出pcap文件头,每一包数据的pcap头,每一包的数据内容(暂时不包括数据包的协议解析),关于pcap文件的格式,可以参看:http://blog.sina.c ...

  8. python函数+定义+调用+多返回值+匿名函数+lambda+高级函数(reduce、map、filter)

    python函数+定义+调用+多返回值+匿名函数+lambda+高级函数(reduce.map.filter) Python 中函数的应用非常广泛,比如 input() .print().range( ...

  9. python中、函数定义可以不包括以下_python函数定义精讲

    原标题:python函数定义精讲 在 Python 中,你也可以定义包含若干参数的函数.这里有三种可用的形式,也可以混合使用. 默认参数值 最常用的一种形式是为一个或多个参数指定默认值.这会创建一个可 ...

最新文章

  1. 搜狗分身技术再进化,让AI合成主播“动”起来
  2. 单片机中存储器扩展位地址线怎么算_小白学单片机 :AT89S51单片机基本硬件结构认识(2)...
  3. mysql 非正常关闭_mysql非正常关机,无法启动解决方案(转)
  4. 深入浅出设计模式原则之开闭原则(OCP)
  5. jsp网页上实现计算三角形面积小程序
  6. 蓝湖完成 10 亿元 C+ 轮融资,发布一站式产品设计协作工具
  7. 【IDEA】Command line is too long. Shorten command ... or also for Application default configuration
  8. GridView中的超级链接
  9. C# WPF十个美观的界面设计展示
  10. 谷歌搜索表单参数url参数详解
  11. 节点英雄榜之脑海链:构建区块链化的知识变现经济生态
  12. java flv转mp3_Java调用ffmpeg转换视频格式为flv的示例详解
  13. 关于“差强人意”成语的误用
  14. 减少参数!SPViT:视觉Transformer剪枝新方法
  15. 监控远程log4.net日志
  16. 技术解读|RRBS测序中因酶切人为引入碱基问题
  17. 谁是你生命中最重要的人
  18. 国际标准化组织(Iso)对质量(Quality)的定义
  19. 电子驻车系统(拉索式)
  20. 最新Whatsns内容付费SEO优化带采集和熊掌号运营问答系统

热门文章

  1. LeetCode_图类
  2. Log4j、slf4j
  3. Yoshua Bengio首次中国演讲:深度学习通往人类水平AI的挑战
  4. java异常基本知识
  5. 2016.8.1今天是建军节
  6. 政府门户网站建设解决方案
  7. go支持对函数返回值命名,可以解决函数返回值的顺序书写问题
  8. 轻量级日志采集系统Loki+grafana搭建
  9. K8S部署工具:KubeOperator集群导入
  10. 【收藏】蘑菇博客mogu_blog项目文档