python课堂整理9---函数1
时间:2019-06-15
本文章向大家介绍python课堂整理9---函数1,主要包括python课堂整理9---函数1使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
函数
一. 函数就是为了完成某一个特定的功能
形式参数不占运行空间,只有传入实参后才占,用完立刻释放空间。
函数一遇到 return 就结束掉了
函数名() :运行函数,有返回值的话用变量承接
def test(x): # x称为形式参数 #注释函数功能 x += 1 #代码块 return x #返回值
例:
def test(x): y = 2 * x + 1 return y a = test(3) print(a)
二、使用函数的好处
1. 代码的重用
2. 保持一致性,易维护
3. 可扩展性
def logger():
'日志功能'
pass
def index():
logger() #调用函数使用日志功能
print('index')
def home():
logger() #调用函数使用日志功能
print('home')
三、 函数和过程
过程就是没有返回值的函数
没有返回值(没有写return),返回None
返回一个值,返回object
返回多个值(return 0,1,2,3),返回tuple(0,1,2,3)
四、函数参数:
函数定义时也可以不传入形参,但要在函数体中给定值
def test(): x = 2 y = x ** 2 return y a = test() print(a)
4.1 位置参数
要和形参一一对应,缺一不可,多一也不可
def test(x, y, z): print(x) print(y) print(z) test(1, 2, 3)
4.2 关键字参数
位置无需固定,缺一不行,多一也不行
def test(x, y, z): print(x) print(y) print(z) test(y = 1, x = 3, z = 2)
若混合使用,位置参数必须在关键字参数的左边
test(1, y = 2, 3) #报错 test(1, 3, z = 2, y = 4) #报错,y只能传一个值 test(1, 3, z = 2) #正确
4.3 默认参数
def test(x, type = 'dabai'): print(x) print(type) test(1) test(1, '唉') # 传入的实参会覆盖默认参数
五、参数组(非固定长度的参数) *列表 **字典
*args 把位置参数处理成列表的形式
def test(x, *args):
print(x)
print(args)
print(args[0])
test(1, 2, 3, 4, 5)
开发的时候,预留一个 *args 用来以后扩展时用,可以先不传入参数,不会报错
传入列表和字典时,把列表和字典当成一个整体作为了元组的第一个元素
def test(x, *args): print(x) print(args) test(1, {'name': 'dabai'}) test(1, [2,3,5,6,7])
如果想把列表中的每一个元素都作为参数传给args 则用 *args
def test(x, *args): print(x) print(args) test(1, *[2,3,5,6,7])
若是处理多个关键字参数,用 **kwargs
def test(x, **kwargs): print(x) print(kwargs) test(1, y = 2, z = 3)
混合使用
def test(x, *args, **kwargs): print(x) print(args, args[1]) print(kwargs, kwargs.get('z')) test(1, 1, 2, 3, 4, 5, y=2, z=3)
def test(x, *args, **kwargs): print(x) print(args, args[1]) print(kwargs, kwargs.get('z')) test(1, *[1,2,3,4], **{'z': 1, 'y': 3})
原文地址:https://www.cnblogs.com/dabai123/p/11027965.html
- python3使用zookeeper和私钥解密及编码转化配置信息
- Python中os.path.dirname(__file__)的用法
- TensorFlow从0到1 - 18 - TensorFlow 1.3.0安装手记
- Python + Splinter 实现浏览器自动化操作入门指南
- 动态地理信息可视化——leaflet在线地图简介
- python中的递归函数
- 对抗思想与强化学习的碰撞-SeqGAN模型原理和代码解析
- 玩转数据地图系列之——地图上的迷你条形图
- 树上倍增求LCA及例题
- 深度强化学习-DDPG算法原理和实现
- 你绝对想不到,数据地图还能这么玩~
- TensorFlow从0到1 - 17 - Step By Step上手TensorBoard
- 深度强化学习-Actor-Critic算法原理和实现
- 深度强化学习-Policy Gradient基本实现
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- R语言中%||%是什么意思?
- 原创 | 你会用缓存吗?详解LRU缓存淘汰算法
- 用Java实现:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。
- Hacking with iOS: SwiftUI Edition - Hot Prospects项目(一)
- 原创 | 详解command设计模式,解耦操作和回滚
- 第32天:图解大数打印,这道题如此经典!
- Mac终端配置好的环境变量在关闭终端后失效怎么办
- R中的stack和unstack函数
- 第33期:上海自来水来自海上,回文字符串验证!
- nginx location配置
- 快速学习-RocketMQ Dledger快速搭建
- 原创 | 非典型算法题,用程序和电脑玩一个游戏
- 快速学习-RocketMQ Dledger集群搭建
- 原创 | 你能想出解法,让你的基友少氪金吗?
- 快速学习-ElasticJob运维平台