Python之旅.第三章.函数3.26
一、函数:
1、为什么要有函数?什么是函数?
1、组织结构不清晰,可读性差
2、代码冗余
3、管理维护的难度极大,扩展性
具备某一个功能的工具就是程序的中函数
事先准备工具的过程----》函数的定义
拿来就用----》函数的调用
所以函数的使用必须遵循:先定义,再调用
2、定义函数:
1、语法
def 函数名(参数1,参数2,...):
"""
文档描述
"""
代码1
代码2
代码3
return 值
def:定义函数的关键字
函数名:是用来调用函数的,
函数名的命名必须能反映出函数的功能
文档描述:推荐写上,来增强函数的可读性
代码块:函数的功能实现代码
return:函数的返回值
例:
print('========================')
print('hello egon')
print('========================')
2.1 定义阶段
def print_sym(sym,count): #print_sym=<function print_msg at 0x000001B2A33698C8>
print(sym*count)
def print_msg(msg):
print('\033[045m%s\033[0m' %msg)
2.2 调用阶段:函数名加括号就是在调用函数
print(print_sym)
print_sym('#',30)
print_msg('hello egon')
print_sym('#',30)
3 定义函数的三种类型:
3.1 有参函数:参数是函数体代码用来接收外部传入值的
def max2(x,y): #x=100,=y101
if x > y:
print(x)
else:
print(y)
max2(100,101)
3.2 无参函数:当函数体的代码逻辑不需要函数的调用者掺入值的情况下,就无参
def func():
print('----------------------')
print('---soft run-----------')
print('----------------------')
def interactive():
name=input('username>>: ').strip()
pwd=input('password>>: ').strip()
print(name,pwd)
interactive() #定义时无参,意味着调用时也无须传入参数
interactive() #定义时无参,意味着调用时也无须传入参数
interactive() #定义时无参,意味着调用时也无须传入参数
3.3 空函数:函数体为pass
def auth():
"""
这是一个认证功能
:return:
"""
pass
def put():
"""
上传功能
return:
"""
pass
def get():
"""
下在功能
return:
"""
pass
def ls():
"""
list contents
return:
"""
pass
4.调用函数
函数的使用必须遵循:先定义,后调用的原则
注意:没事先定义函数而直接调用,就相当于在引用一个不存在的变量名
定义阶段:在定义阶段只检测语法,不执行函数体代码
调用阶段:根据函数名找到函数的内存地址,然后执行函数体代码
函数名加括号即调用函数
def bar():
print('from bar')
调用函数的三种形式
1、不带参数直接调用
def func():
print('from func')
func()
2、带参数调用
def max2(x,y):
if x > y:
return x
else:
return y
res=max2(10,3)
print(res)
3、调用且运算
def max2(x,y):
if x > y:
return x
else:
return y
res=max2(10,3)*100
print(res)
4、嵌套调用
res=max2(max2(10,3),11)
print(res)
5.返回值:
什么时候应该有返回值:
函数体代码运行完毕后需要有一个返回结果给调用者
返回值有三种形式:
1 没有return,返回值None
def func():
pass
res=func()
print(res)
2 return后跟一个值,返回该值本身
def func1():
return 1
res=func1()
print(res)
3 return可以逗号分隔,返回多个值,会返回一个元组给调用者
def func2():
return 1,2,[1,2,3]
res=func2()
print(res)
return注意点:
1、return返回值的值,没有类型限制
2、return是函数结束的标志,函数内可以写多个return,但
执行一次,函数就立刻结束,并把return后的值作为本次调用的返回值
def func3():
print('first')
return 1
print('second')
return 2
print('third')
return 3
res=func3()
print(res)
Python之旅.第三章.函数3.26的更多相关文章
- Python之旅.第三章.函数4.01/4.02
一.三元表达式 #普通的判断大小函数def max2(x,y): if x > y: return x else: return yres=max2(10,11)print(res)x=12y= ...
- Python之旅.第三章.函数3.30
一.迭代器 1.什么是迭代?:迭代是一个重复的过程,并且每次重复都是基于上一次的结果而来2.要想了解迭代器到底是什么?必须先了解一个概念,即什么是可迭代的对象?可迭代的对象:在python中,但凡内置 ...
- Python之旅.第三章.函数3.28
一.命名关键字参数: 什么是命名关键字参数?格式:在*后面参数都是命名关键字参数特点:1 必须被传值1 约束函数的调用者必须按照key=value的形式传值2 约束函数的调用者必须用我们指定的key名 ...
- Python之旅.第三章.函数3.29
一.无参装饰器 1 开放封闭原则 软件一旦上线后,就应该遵循开放封闭原则,即对修改源代码是封闭的,对功能的扩展是开放的 也就是说我们必须找到一种解决方案: 能够在不修改一个功能源代码以及调用方式的前提 ...
- Python之旅.第三章.函数3.27
一.形参与实参 1.形参与实参是什么? 形参(形式参数):指的是 在定义函数时,括号内定义的参数,形参其实就变量名 实参(实际参数),指的是 在调用函数时,括号内传入的值,实参其实就变量的值 x,y是 ...
- python学习心得第三章
python学习心得第三章 1.三元运算 变量=值1 if 条件 else 值2 由图如果条件成立则赋值1给变量,如果条件不成立则赋值2给变量. 2.数据类型 集合:set() class set(o ...
- python学习笔记——第三章 串
第三章 字符串学习 1.字符串不灵活, 它不能被分割符值 >>> format = "hello, %s. %s enough for ya?" >> ...
- 《零压力学Python》 之 第三章知识点归纳
第三章(第一个程序)知识点归纳 编程犹如写剧本.Python函数与剧本差别不大,你可以反复调用函数,而它每次都执行预定的“脚本”(脚本也可以指整个程序). 在Python IDLE中,真正的编程是从编 ...
- 跟着高淇学Python——第一到第三章总结
2019/10/26 第一章:Python介绍 Python是一种解释型,面向对象的语言.特点是: 可读性强 简洁,简洁 面向对象 免费开源 可移植性和跨平台性 丰富的库 可扩展性 应用范围:1.人工 ...
随机推荐
- datatable 分页实例
1.使用datatable前台分页,需要后台返回全部数据,返回lisit 2.如果是后台分页 则后台需要获取分页参数,页面中要加 "searchable":true, " ...
- 大文件视频断点续传插件resumabel.js,优化上传速度,缩短最后一片等待时长。
在angular中使用resumable.js遇到的一个问题:大视频上传到99-100%时,此时正在上传最后一片,最后一片的xhr一直是pending状态.原因插件会检查第一片和最后一片的元数据,检测 ...
- comfirm 方法显示对话框
comfirm 方法显示对话框 原理: confirm() 方法用于显示一个带有指定消息和 OK 及取消按钮的对话框 confirm(message): message:要在 window 上弹出的对 ...
- ServiceFabric极简文档-1.0 Service Fabric 自定义集群部署
Service Fabric 部署集群:https://docs.microsoft.com/zh-cn/azure/service-fabric/service-fabric-get-started ...
- Java设计模式-合成模式
合成模式有时也叫组合模式,对象组合成树形结构以表示"部分-整体"的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性.掌握组合模式的重点是要理解清楚 "部分/ ...
- push_back和emplace_back的区别
emplace_back能就地通过参数构造对象,不需要拷贝或者移动内存,相比push_back能更好地避免内存的拷贝与移动,使容器插入元素的性能得到进一步提升.在大多数情况下应该优先使用emplace ...
- Mycat 读写分离详解
Mycat 的读写分离是依赖数据库级别的数据主从同步的基础上来实现的(Mysql 的主从配置链接),Mycat 的读写分离是在 schema.xml 配置的 dataHost 节点的 balance ...
- 笔记:Hibernate 拦截器和事件
Hibernate 在执行持久化的过程中,应用程序通常无法参与其中,通过事件框架,Hibernate 允许应用程序能响应特定的内部事件,从而允许实现某些通用的功能,或者对 Hibernate 进行扩展 ...
- 笔记:Hibernate 持久化类标注说明
持久化类标注 标注 @Entity:注解声明该类是一个Hibernate的持久化类 标注 @Table:指定该类映射的表 参数 name:指定映射数据库表的名称 参数 uniqueConstraint ...
- 笔记:Struts2 拦截器
配置拦截器 Struts.xml 配置文件中,使用<interceptor-/>来定义拦截器,有属性 name 表示拦截器的名称,class 表示拦截器的具体首先类,可以使用<par ...