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})
python课堂整理9---函数1的更多相关文章
- python课堂整理16---内置函数
1. abs :求绝对值 print(abs(-1)) 2. all()传入一个可迭代对象,对该对象进行bool值运算,若都为True 就返回True,有一个为假,就返回False print(all ...
- python课堂整理15---map, filter,reduce函数
一.map函数 处理序列(可迭代对象)中的每一个元素,得到的结果是一个‘列表’(其实是个迭代器),该‘列表’元素个数及位置与原来一样 理解下面这段代码: num_l = [1, 2, 4, 6] de ...
- python课堂整理13---函数的作用域及匿名函数
name = 'alex' def foo(): name = 'jinling' def bar(): print(name) return bar a = foo() print(a) 阅读上述代 ...
- python课堂整理19----迭代器和生成器
一.概念 • 迭代器协议: 对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么引起一个stopIteration异常,以终止迭代(只能往后走,不能往前退) • 协议是一种约定,pyt ...
- python课堂整理10---局部变量与全局变量
一.局部变量与全局变量 1. 没有缩进,顶头写的变量为全局变量 2. 在子程序里定义的变量为局部变量 3. 只有函数能把变量私有化 name = 'lhf' #全局变量 def change_name ...
- python课堂整理4---列表的魔法
一.list 类, 列表 li = [1, 12, 9, "age", ["大白", "小黑"], "alex"] ...
- python课堂整理21---初识装饰器
一.装饰器: 本质就是函数,功能:为其他函数添加附加功能 原则: 1.不能修改被装饰函数的源代码 2.不能修改被修饰函数的调用方式 一个简单的装饰器 import time def timmer(fu ...
- python课堂整理20----生产者消费者模型
一.实现功能:店铺生产包子,消费者来吃 import time def producter(): ret = [] for i in range(10): time.sleep(0.1) ret.ap ...
- python课堂整理18---文件操作(下)
一.b模式,字节方式(二进制的单位),rb wb ab f = open('test.py', 'rb', encoding = 'utf-8') 报错,因为用了b模式,就不能再指定编码格式了,已经指 ...
- python课堂整理17---文件操作(上)
1.在同一目录下新建文本文件 “爱了” 2.在该文件下写入内容,同时留意pycharm右下角的编码格式为 utf- 8 3.下面程序中的read函数会索引系统默认的编码格式,winx下是gbk ,所以 ...
随机推荐
- Qt 之 样式表的使用——样式选择器(上下篇,很详细)
http://blog.csdn.net/goforwardtostep/article/details/60884870 http://blog.csdn.net/goforwardtostep/a ...
- C++ 王者归来:对编程语言的需求总结为四个:效率,灵活,抽象,生产率(C++玩的是前三个,Java和C#玩的是后两个)
Why C++ ? 王者归来(转载) 因为又有人邀请我去Quora的C2C网站去回答问题去了,这回是 关于 @laiyonghao 的这篇有点争议的博文<2012 不宜进入的三个技术点>A ...
- happy machine learning(Second One)
发现机器学习就根本停不下来 今天来用RNN算法来爽爽僵尸网络宿主预测 首先我们下载好数据,然后打开我们可爱的熊猫 import numpy as np import pandas as pd impo ...
- 基于STM32之UART串口通信协议(一)详解
一.前言 1.简介 写的这篇博客,是为了简单讲解一下UART通信协议,以及UART能够实现的一些功能,还有有关使用STM32CubeMX来配置芯片的一些操作,在后面我会以我使用的STM32F429开发 ...
- 通用shell函数库
1.输出字体颜色库 #!/bin/bash export black='\E[0m\c' export boldred='\E[1;31m\c' export boldgreen='\E[1;32m\ ...
- Spring 入门程序
1.0 导包的时候要注意: 以上的第一个是.class文件 以上的第二个是文件的解释性页面. 以上的第三个是.java文件 2.0 配置文件需要导入依赖(有dtd 依赖,也有xsd依赖) ² 从be ...
- HDU 4812:D Tree(树上点分治+逆元)
题目链接 题意 给一棵树,每个点上有一个权值,问是否存在一条路径(不能是单个点)上的所有点相乘并对1e6+3取模等于k,输出路径的两个端点.如果存在多组答案,输出字典序小的点对. 思路 首先,(a * ...
- Codeforces Gym101341K:Competitions(DP)
http://codeforces.com/gym/101341/problem/K 题意:给出n个区间,每个区间有一个l, r, w,代表区间左端点右端点和区间的权值,现在可以选取一些区间,要求选择 ...
- kuangbin专题 专题一 简单搜索 Fire! UVA - 11624
题目链接:https://vjudge.net/problem/UVA-11624 题意:一个迷宫,可能有一个或者多个地方着火了,每过1个时间消耗,火会向四周蔓延,问Joe能不能逃出迷宫,只要走出迷宫 ...
- 基于SpringCloud的Microservices架构实战案例-配置文件属性内容加解密
使用过SpringBoot配置文件的朋友都知道,资源文件中的内容通常情况下是明文显示,安全性就比较低一些.打开application.properties或application.yml,比如mysq ...