初学python之路-day10
基础部分先告一段落,今天开始学习函数。
一、函数:完成 特定 功能的代码块,作为一个整体,对其进行特定的命名,该名字就代表函数
-- 现实中:很多问题要通过一些工具进行处理 => 可以将工具提前生产出来并命名
=> 通过名字就可以找到工具 => 使用工具来解决问题
# 函数的优点: # 1. 避免代码的冗余 # 2. 让程序代码结构更加清晰 # 3. 让代码具有复用性,便于维护
函数的四部分: 1. 函数名:使用该函数的依据 2. 函数体:完成功能的代码块 3. 返回值:功能完成的反馈结果 4. 参数:完成功能需要的条件信息
# 函数的定义语法: # def:定义函数的关键字 # 函数名:该工具的名字,后期就是通过工具的名字使用工具 # 参数列表:使用工具需要提供一些参数 # 函数体:解决问题的过程逻辑 # 返回值:告诉外界功能执行的结果
# 使用函数: # 1.根据需求定义函数 # 2.通过函数名找到函数所在的位置(内存地址) # 3.函数名() 执行函数地址中存放的所有代码块 # -- 函数在定义时需要外界的参数,就要在调用时传入对应的参数 # 4.函数执行完一定有返回结果,通过return关键字将结果返回给外界 # -- 外界需要知道执行结果,用变量接收,反之只执行函数(不需要接收)即可 # 注:函数必须先定义,后使用 # 函数的四部分都可以根据需求的变化而变化
二、函数的分类
# 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)
三、函数的返回值
# 重点:函数名() # 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)
注: # 当用一个值接收函数的返回值,一定没有问题 # -- 函数返回一个接收一个;函数返回多个,接收装有多个值得元组 # 当用多个值接收函数的返回值,采用的是解压赋值的机制,返回值的个数一定要与接收值得个数相同
初学python之路-day10的更多相关文章
- Python之路,Day10 - 异步IO\数据库\队列\缓存
Python之路,Day9 - 异步IO\数据库\队列\缓存 本节内容 Gevent协程 Select\Poll\Epoll异步IO与事件驱动 Python连接Mysql数据库操作 RabbitM ...
- python之路-Day10
操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者消费者模型 ...
- Python之路Day10
本节主要内容:memcache&redis.RabbitMQ.twisted框架 1. memcache&redis 1.1 memcache Memcached 是一个高性能的分布式 ...
- 初学python之路-day12
本篇补上字符串的比较:按照从左往右比较每一个字符,通过字符对应的ascii进行比较 一.函数默认值的细节 # 如果函数的默认参数的默认值为变量,在所属函数定义阶段一执行就被确定为当时变量存放的值 a ...
- 初学python之路-day08前期总结
# 1# 计算机原理:控制器 运算器 存储器 input设备 output设备 IO流# 三大核心:CPU 内存 硬盘 # 内存分布:栈区 与 堆区# 如二进制与十进制的转换,如1111转成十进制为1 ...
- 初学python之路-day08
#学习了编码后,还要了解三种字符串.# 一.# 普通字符串:u''以字符作为输出单位,# print(u'abc') # 用于显示abc# # 二进制字符串:b'' 二进制字符串以字节作为输出单位# ...
- 初学python之路-day07-字符编码
今天的博客主要关于字符编码,并对前几天学习的数据类型做些总结. 学习字符编码的目的:解决乱码问题. 应用程序打开文本文件的三步骤 1.打开应用程序 2.将数据加载到内存中 3.cpu将内存中的数 ...
- 初学python之路-day04
每天一篇总结,今天学习的是有关于流程控制的知识. 流程控制,顾名思义,在计算机运行中,程序是被某种控制方式按照某种流程或者规律来执行的.而python程序的运行,肯定也是按照某种规律在执行.这些规律可 ...
- 初学python之路-day03
我在前面的文章提到了变量的概念,这里详细介绍下变量的命名.变量名,只能是字母.数字及下划线 "_" 任意组成,而且不能以数字开头.在命名变量时,尽量避免与系统关键词重名,如:'an ...
随机推荐
- Django2 Django MTV模板
1.MVC模型 Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的.松耦合的方式连接在一起,模型负责业务对象与数据库 ...
- linux定时备份学习笔记
1.iterm2链接远程中文乱码 shh端vi ~/.bash_profile export LC_CTYPE=en_US.UTF-8 source ~/.bash_profile 2.WARNI ...
- ThunderBird配置邮箱后无法发送邮件
今天遇到的问题是在ThunderBird配置邮箱后无法发送邮件.用户名和密码都验证过去了.但一直无法发送邮件. 1.首先imap 和smtp 服务器都是通的. telnet imap.base-fx. ...
- monkeyrunner简介
monkeyrunner简介 MonkeyRunner工具是使用Jython(使用Java编程语言实现的Python)写出来的,它提供了多个API,通过monkeyrunner API 可以写一个Py ...
- [模板] 2-SAT 问题
简介 2-SAT (2-satisfiability) 问题形如: 给定一些变量 \(x_i \in \{true, false\}\); 给定一些一元/二元约束条件, 如 \(x_i \land \ ...
- 【BZOJ4028】[HEOI2015]公约数数列(分块)
[BZOJ4028][HEOI2015]公约数数列(分块) 题面 BZOJ 洛谷 题解 看一道题目就不会做系列 首先\(gcd\)最多只会有\(log\)种取值,所以我们可以暴力枚举出所有可能的\(g ...
- P1177 【模板】快速排序(学完归并和堆排之后的二更)
P1177 [模板]快速排序 不用说,连题目上都标了是一道模板,那今天就来对能用到的许多排序方式进行一个总结: 选择排序 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理 ...
- 面向对象编程(OPP)
作者:狐狸家的鱼 本文链接:面向对象编程 GitHub:sueRimn 面向对象编程(OPP) 具有灵活.代码可复用.高度模块化等特点,易维护和开发 实例对象与new命令 1.对象 对象是单个实物的抽 ...
- FTP文件上传并支持断点续传(一)—— win10 本地环境 ftp站点构建
由于之前项目开发是采用是采用的FTP文件上传,就一直想学习,但由于FTP服务器是公司的,为了方便就像把本地变成ftp站点,其实很简单,但也有很多坑 这里简单介绍一下自己遇到的坑 一:开通本地的ftp权 ...
- 攻防常用命令(linux)
1.修改SSH密码: #登录SSH passwd 出现current passwoed或new password 输入就密码再输入新密码确认或直接输入新密码确认即可 2.修改Mysql密码: 1.在m ...