函数

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

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

函数一遇到 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. Qt Style Sheet实践(二):组合框QComboBox的定制(24K纯开源)——非常漂亮

    组合框是一个重要且应用广泛的组件,一般由两个子组件组成:文本下拉单部分和按钮部分.在许多既需要用户选择.又需要用户手动输入的应用场景下,组合框能够很好的满足我们的需求.如我们经常使用的聊天软件QQ登录 ...

  2. 使用 acl_cpp 的 HttpServlet 类及服务器框架编写WEB服务器程序(系列文章)

    在 <用C++实现类似于JAVA HttpServlet 的编程接口 > 文章中讲了如何用 HttpServlet 等相关类编写 CGI 程序,于是有网友提出了 CGI 程序低效性,不错, ...

  3. 03- 基本的SQL语句介绍

    01 库的操作新增库create database db1 charset utf8; # 由于在my.ini中已经配置了字符集,所以,charset utf8可以不写 查库# 查看当前创建的数据库s ...

  4. 使用vscode调试Nodejs

    之前想用vscode调试nodejs,总是不成功,也走很多弯路,现在记录下来. 首先新建一个文件夹,用vscode打开这个文件夹, 用vscode自带的终端执行npm init,输入名称,其他的可不输 ...

  5. Linux htop 使用

    引言 一般大家查看进程相关信息常用的命令是 top,之前接触并使用 htop,觉得比较好用,它算是 top 的增强版,这里重新记录下. htop 简介 NAME htop - interactive ...

  6. Python机器学习经典实例电子版和附带源码

    Python机器学习经典实例电子版和附带源码 下载:https://pan.baidu.com/s/1m6ODNJk--PWHW8Vdsdjs-g 提取码:nyc0 分享更多python数据分析相关电 ...

  7. 并发编程-concurrent指南-线程池ExecutorService的使用

    有几种不同的方式来将任务委托给 ExecutorService 去执行: execute(Runnable) submit(Runnable) submit(Callable) invokeAny(… ...

  8. 使用 Mybatis 框架 jdbc 方式批量写入 SQL Server,报错 com.microsoft.sqlserver.jdbc.SQLServerException 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。此 RPC 请求中提供了过多的参数,最多应为2100

    这个错是sqlserver抛出来的. 进过验证,上述错误中的2100为插入的总字段数. 比如下面这种插入方式,values后面的一个括号里的字段为30个,那么后面最多只能加70条,即这种批量插入方式一 ...

  9. [WPF自定义控件库]好用的VisualTreeExtensions

    1. 前言 A long time ago in a galaxy far, far away....微软在Silverlight Toolkit里提供了一个好用的VisualTreeExtensio ...

  10. django基础知识之状态保持session:

    状态保持 http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状态 客户端与服务器端的一次通信,就是一次会话 实现状态保持的方式:在客户端或服务器端存储与会话有关的数据 存储方式包括c ...