函数

一. 函数就是为了完成某一个特定的功能

形式参数不占运行空间,只有传入实参后才占,用完立刻释放空间。

函数一遇到 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的更多相关文章

  1. python课堂整理16---内置函数

    1. abs :求绝对值 print(abs(-1)) 2. all()传入一个可迭代对象,对该对象进行bool值运算,若都为True 就返回True,有一个为假,就返回False print(all ...

  2. python课堂整理15---map, filter,reduce函数

    一.map函数 处理序列(可迭代对象)中的每一个元素,得到的结果是一个‘列表’(其实是个迭代器),该‘列表’元素个数及位置与原来一样 理解下面这段代码: num_l = [1, 2, 4, 6] de ...

  3. python课堂整理13---函数的作用域及匿名函数

    name = 'alex' def foo(): name = 'jinling' def bar(): print(name) return bar a = foo() print(a) 阅读上述代 ...

  4. python课堂整理19----迭代器和生成器

    一.概念 • 迭代器协议: 对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么引起一个stopIteration异常,以终止迭代(只能往后走,不能往前退) • 协议是一种约定,pyt ...

  5. python课堂整理10---局部变量与全局变量

    一.局部变量与全局变量 1. 没有缩进,顶头写的变量为全局变量 2. 在子程序里定义的变量为局部变量 3. 只有函数能把变量私有化 name = 'lhf' #全局变量 def change_name ...

  6. python课堂整理4---列表的魔法

    一.list   类, 列表 li = [1, 12, 9, "age", ["大白", "小黑"], "alex"] ...

  7. python课堂整理21---初识装饰器

    一.装饰器: 本质就是函数,功能:为其他函数添加附加功能 原则: 1.不能修改被装饰函数的源代码 2.不能修改被修饰函数的调用方式 一个简单的装饰器 import time def timmer(fu ...

  8. python课堂整理20----生产者消费者模型

    一.实现功能:店铺生产包子,消费者来吃 import time def producter(): ret = [] for i in range(10): time.sleep(0.1) ret.ap ...

  9. python课堂整理18---文件操作(下)

    一.b模式,字节方式(二进制的单位),rb wb ab f = open('test.py', 'rb', encoding = 'utf-8') 报错,因为用了b模式,就不能再指定编码格式了,已经指 ...

  10. python课堂整理17---文件操作(上)

    1.在同一目录下新建文本文件 “爱了” 2.在该文件下写入内容,同时留意pycharm右下角的编码格式为 utf- 8 3.下面程序中的read函数会索引系统默认的编码格式,winx下是gbk ,所以 ...

随机推荐

  1. NPOI 超简单的导出导入

      首先说说,第一次遇到过匿名导出的那个时候是在我在北京第一家公司,简单的声明一个对象就可以导出,那时候感觉高大上,自己也想研究研究,但是因为头将代码后来加密了根本看不到.好吧,研究了研究放弃了,后来 ...

  2. springboot中加分布式redis锁

    分布式redis锁,spring-boot-starter-data-redis,RedisTemplate 公司聊天的聊天系统,近期出现多个客服并发接待同一个客户的记录,经排查,是由于代码加的同步锁 ...

  3. Xmanager 5远程连接CentOS7图形化界面

    1.安装Xmanager 5下载链接:https://pan.baidu.com/s/1JwBk3UB4ErIDheivKv4-NA提取码:cw04 双击xmgr5_wm.exe进行安装 点击‘下一步 ...

  4. docker 获取镜像

    之前提到过,Docker Hub 上有大量的高质量的镜像可以用,这里我们就说一下怎么获取这些镜像. 从 Docker 镜像仓库获取镜像的命令是 docker pull.其命令格式为: docker p ...

  5. 线性模型之LDA和PCA推导

    线性模型之LDA和PCA 线性判别分析LDA LDA是一种无监督学习的降维技术. 思想:投影后类内方差最小,类间方差最大,即期望同类实例投影后的协方差尽可能小,异类实例的投影后的类中心距离尽量大. 二 ...

  6. 关于Lombok和自动生成get set方法

    在Java开发的项目里面免不了要用很多的get set 以及toString之类的方法,有时候确实是很繁琐而且做着重复共同工作,我们有没有办法来简化这个过程呢,当然有. Lombok就可以很好的解决这 ...

  7. SpringBoot使用Docker快速部署项目

    1.简介 建议阅读本文最好对Dokcer有一些了解 首先我们先了解一下Docker是什么 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口.它是目前最流行的 Linux 容器 ...

  8. c++ 队列的基本应用

    c++ 队列的基本应用 题目描述 现在去营业厅办理业务,都要先取号,再等待叫号.叫号系统有两种模式: 1.取号,取号时要输入自己的11位电话号码,号码按取号的顺序存在系统中: 2.叫号,叫号时会显示当 ...

  9. IDEA为新手专业打造

    IDEA为新手专业打造 一.创建一个项目 新手的话可以先创建一个空项目 项目创建完成后会弹出一个Project Settings设置框,点击Project进行如图设置,设置完成点击OK 一.在创建的项 ...

  10. 你必须了解的java内存管理机制(四)-垃圾回收

    本文在个人技术博客不同步发布,详情可用力戳 亦可扫描屏幕右侧二维码关注个人公众号,公众号内有个人联系方式,等你来撩... 相关链接(注:文章讲解JVM以Hotspot虚拟机为例,jdk版本为1.8) ...