day-10初级函数
函数
函数的定义
函数:完成 特定 功能的代码块,作为一个整体,对其进行特定的命名,该名字就代表函数
-- 现实中:很多问题要通过一些工具进行处理 => 可以将工具提前生产出来并命名
=> 通过名字就可以找到工具 => 使用工具来解决问题
函数的优点
1. 避免代码的冗余
2. 让程序代码结构更加清晰
3. 让代码具有复用性,便于维护
函数的四部分
1. 函数名:使用该函数的依据
2. 函数体:完成功能的代码块
3. 返回值:功能完成的反馈结果
4. 参数:完成功能需要的条件信息
函数的语法
def:定义函数的关键字
函数名:该工具的名字,后期就是通过工具的名字使用工具
参数列表:使用工具需要提供一些参数
函数体:解决问题的过程逻辑
返回值:告诉外界功能执行的结果
def get_water(water, money):
print('收入你的%d元钱')
print('给你%s水种')
return '矿泉水'
函数的使用
使用函数:
1.根据需求定义函数
2.通过函数名找到函数所在的位置(内存地址)
3.函数名() 执行函数地址中存放的所有代码块
-- 函数在定义时需要外界的参数,就要在调用时传入对应的参数
4.函数执行完一定有返回结果,通过return关键字将结果返回给外界
-- 外界需要知道执行结果,用变量接收,反之只执行函数(不需要接收)即可
# 注:函数必须先定义,后使用
# 函数的四部分都可以根据需求的变化而变化
def get_water(water, money):
print('收入你的%d元钱' % money)
print('给你%s水种' % water)
return water
# 需要使用函数,就调用一次
res = get_water('矿泉水', )
print(res) print('玩耍...')
print('又口渴了...') # 又来需求,在调用一次,代码可以复用,函数只有一个,代码结构清晰且不冗余
res = get_water('王大哦', )
print(res)
函数的分类
1.根据函数体分类
空函数: pass来填充函数体的函数
-- 优先明确函数名,暂不明确函数体(编程中就存在一些没有函数体的函数)
def login(): pass # 在开发初期,可以讲所有功能提前列出来,用pass占位着,后期再去填充功能体
非空函数:有函数体的函数
def fn2():
print('函数体')
2.根据函数参数分类
无参函数:
def add():
print('功能体不需要外界的参数')
n1 = input('n1: ')
n2 = input('n2: ')
print(n1 + n2)
有参函数:
def add_two(n1, n2):
print('功能体需要外界的参数')
print(n1 + n2)
3.根据函数返回值分类:所有的函数都有返回值
不明确返回值:
def low_two(n1, n2):
# 外部不需要知道内部的执行结果
print(n1 - n2)
明确返回值:
def jump_two(n1, n2):
# 外部需要知道内部的执行结果
return n1 * n2
res = jump_two(10, 20)
print(res)
函数的返回值
在函数体中,通过return关键词返回函数的内部数据给外部
重点:函数名()
1)拿到函数地址 => 2)加()执行函数体 => 3)得到函数的执行结果
重点: 返回值的功能
1.结束函数;2.将函数的内部数据返回给外部
二、应用场景
1.不明确return关键词的函数:系统在函数最末尾自动添加了return,返回的是None
def fn1():
print('普通的函数执行') res = fn1() # 一般不需要对这样的函数进行接收执行结果
print(res)
2.明确空return关键词的函数:为了结束函数而return
def print_msg():
while True:
msg = input("msg: ")
if msg == 'q':
# break
return # 在特定的位置需要直接结束函数,但不需要告诉外界某个结果,用空return处理
print(msg)
print(msg) # 在break下可以被执行,在return下不能被执行
res = print_msg()
print(res)
3.有明确的返回值需求的函数:
-- python中的函数本质上只能返回一个值,
-- 值跟在return关键词后
-- 可以通过语法上返回多个值,值之间用逗号隔开,但是本质上返回装有多个值的元组
# 一个值
def get_num():
num = input('num: ')
return num
print(get_num())
# 多个值
def get_two_num():
n1 = input('n1: ')
n2 = input('n2: ')
return n1, n2
# return (n1, n2)
# print(get_two_num())
num1, num2 = get_two_num() # python的return支持多值返回的语法原因是python中有解压赋值
print(num1, num2)
注意:
当用一个值接收函数的返回值,一定没有问题
-- 函数返回一个接收一个;函数返回多个,接收装有多个值得元组
当用多个值接收函数的返回值,采用的是解压赋值的机制,返回值的个数一定要与接收值得个数相同
day-10初级函数的更多相关文章
- day_10初级函数
今天讲了函数初级 函数:完成特定功能的代码块,作为一个整体对其进行特定的命名,该名字就是代表函数 --现实中很多问题要通过一些工具进行处理 ,,可以将工具提前准备好并命名 通过名字就可以找到这个工具 ...
- Linux pwn入门教程(10)——针对函数重定位流程的几种攻击
作者:Tangerine@SAINTSEC 本系列的最后一篇 感谢各位看客的支持 感谢原作者的付出一直以来都有读者向笔者咨询教程系列问题,奈何该系列并非笔者所写[笔者仅为代发]且笔者功底薄弱,故无法解 ...
- 巨蟒python全栈开发-第10天 函数进阶
一.今日主要内容总览(重点) 1.动态传参(重点) *,** *: 形参:聚合 位置参数*=>元组 关键字**=>字典 实参:打散 列表,字符串,元组=>* 字典=>** 形参 ...
- 2021.08.10 Euler函数总结
2021.08.10 Euler函数总结 知识: 记 φ(n) 表示在 [1,n] 中与 n互质的数的个数. 1.p为质数,则 \[φ(p^l)=p^l-p=p^{l-1}(p-1) \] 注:每p个 ...
- int (*(*fp)(void *))[10]; 指向函数的指针类型
<pre lang="c" escaped="true">int (*(*fp)(void *))[10]; //这个类型用typedef分解出来 ...
- Python核心编程读笔 10:函数和函数式编程
第11章 函数和函数式编程 一 调用函数 1 关键字参数 def foo(x): foo_suite # presumably does some processing with 'x' 标准调用 ...
- 关于oracle数据库(10)函数
分析函数,用于统计排名 语法:函数名() over(order by 排序字段 asc | desc) row_number() 无论值是否相等,生成连续的行号 -- 1,2,3,4, select ...
- 【转】JDBC学习笔记(10)——调用函数&存储过程
转自:http://www.cnblogs.com/ysw-go/ 如何使用JDBC调用存储在数据库中的函数或存储过程: * 1.通过COnnection对象的prepareCall()方法创建一个C ...
- day 10 - 2 函数练习
1.写函数 接收 n 个数字 求这些参数数字的和 def sum_func(*args): total = 0 for i in args: total += i return total prin ...
随机推荐
- 团队项目需求心得——慢阻肺疾病管理APP
一.项目介绍: 先上图: 这是我们小组开发项目的系统构成图. 本项目研发面向家庭/社区,对稳定期中慢阻肺患者病情和环境全方位监测.简单病情趋势分析和患者行为干预,并且提供患者与家庭医生和专家沟通渠道的 ...
- js递归算法1+ 2+3.....100的和
function num(n){ if(n==1) return 1; return num(n-1)+n;}num(100);
- windows中obs源码编译的坑
好用的版本: cmake-3.6.1-win64-x64 + vs2015 + qt-opensource-windows-x86-msvc2015_64-5.7.0 + obs-stu ...
- js的观察者模式
观察者模式(发布-订阅模式):它定义对象间一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知.由主体和观察者组成,主体负责发布事件,同时观察者通过订阅这些事件来观察该主体 ...
- web前端技术学习
$.ajax() ajax数据请求方式,交互,跨域等相关问题 一.请求方式 1.$.ajax() $.ajax({ type:"get",//请求方式“get”和“post” ur ...
- SqlServer 游标逐行更新数据,根据上一行的数据来更新当前行
工作中用到的记录一下,游标的详细定义及说明请百度 --游标格式化数据 DECLARE cursor_jxsmb CURSOR FOR --定义一个游标 SELECT F0 FROM dbo.JXSMB ...
- 【原创】Aduino小车玩法全记录
本来打算用一周时间好好研究下基于Arduino开发板的小车实验,结果实际上两天就完成了小车可玩的各种功能,包括完成特定动作组合,黑线循迹,(带后退)红外避障和(带舵机)超声波避障,超声波测距,红外遥控 ...
- WebStorm 安装及使用
WebStrom 插件安装 File(文件) -> settings(设置) -> Plugins 即可调出设置中的插件选项. 或者 按 快捷键ctrl + alt + s也可调出设置菜单 ...
- (原创)列主元Gauss消去法的通用程序
import numpy as np np.set_printoptions(precision=5) A = np.array([[31., -13., 0., 0., 0., -10., 0., ...
- 解决 Linux 桌面亮度调整不工作
工作原因开始使用Ubuntu.桌面环境为GNOME,不过亮度调整和桌面环境没多大关系. 思路: 不管是GNOME还是Unity,都会尝试自己去接管亮度调整,也就是去 /sys/class/backli ...