Python之自定义函数
函数
1、定义函数
在Python中定义一个函数要使用def语句,一次写出函数名、括号、括号中的的参数和冒号,然后在缩进块中编写函数体,函数的返回值用return返回。如下所示:
def 函数名(参数列表):
函数体 简单的定义一个函数
def hello() :
print("Hello World!")
hello()
Hello World! 定义一个带参数的函数: 需求:替换列表中的某个值替换成另一个值
l=[3,3,4,5,6,6,5,3,6,2,9,9,2,8,2,3]
i=0
while i<len(l):
if l[i]==3:#把l中的3换成7
l[i]=7
i+=1
l
[7, 7, 4, 5, 6, 6, 5, 7, 6, 2, 9, 9, 2, 8, 2, 7] 由上可知循环不能反复利用,而且参数固定,所以我们可以定义一个函数。
def list_element_replace(somelist,x,y):
i=0
while i<len(l):
if l[i]==x:#丢弃值
l[i]=y#代替值
i+=1
return somelist
l=[1,2,3,4,1,2,3,1,4,5,2,3]
list_element_replace(l,3,30)
[1, 2, 30, 4, 1, 2, 30, 1, 4, 5, 2, 30] 用for循环来编写
def replace_element(a,b,c):
for i in range(len(a)):
if a[i]==b:
a[i]=c
return a
replace_element(l,2,20)
[1, 20, 30, 4, 1, 20, 30, 1, 4, 5, 20, 30]
2、函数的参数
2-1、位置参数
按照从左到右的顺序依次定义的参数叫做位置参数;
def student(age,high,sex):
if age<18:
print(age)
print(high)
print(sex)
else:
print("超出年龄"
student(19,170,"女")
超出年龄
student(16,170,"女")
16
170
女 由上面函数可知道,位置参数的顺序是不能改变的,否则传入参数是会错误识别。其实在传参数时我们也能显示的表示这些参数,即下面的关键字参数。
2-2、关键字参数与默认参数
• 关键字参数:按照关键字进行传参的参数,按照名称-值对的形式进行传参的参数;关键字参数可以不按参数的顺序进行传值;
def student(age,high,sex):
if age<18:
print(age)
print(high)
print(sex)
else:
print("超出年龄")
student(sex="男",age=17,high=178)#当我们显示的把这些参数传进来时无关顺序
17
178
男
• 默认参数:在函数定义阶段就定义好默认值的参数;传参时,如果不传入具体的值,则使用定义时的值;
def student(age,high,sex="女"):
if age<18:
print(age)
print(high)
print(sex)
else:
print("超出年龄")
student(16,178)#在传参时若某参数与默认参数一致则可省略
16
178
女
student(16,178,"男")#若不一致则传入实际的值即可
16
178
男 2-3、不定长参数
有时我们定义函数是并不知道需要多少参数,这些参数叫做不定长参数。通常有两种方法*args,**kwargs。
加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。
def scores(a,*x):
print(a)
print(x)
cores("姓名",80,79,88)
姓名
(80 79 88)
编写求一串数的总和的函数
def sum_element(*x):
s=0
for i in x:
s=s+i
print(s)
sum_element(1,2,3,4)
10
当传入的参数是列表或元组等一些集合时,我们可在参数前加*将其拆开。(定义函数特有的用法)
t=(1,3,5,7)
sum_element(*t)
16
加了两个星号 ** 的参数会以字典的形式导入。
def scores(a,**x):
print(a)
print(x)
scores("姓名",b=98,c=109,d=110)
姓名
{'b': 98, 'c': 109, 'd': 110} 直接传入字典
dict1={'b': 98, 'c': 109, 'd': 110}
def scores(a,**x):
print(a)
print(x)
scores("姓名",**dict1)#用**对字典进行拆包
姓名
{'b': 98, 'c': 109, 'd': 110} 注:编写函数是参数是遵循一定的顺序的:位置参数>关键字参数/默认参数>不定长参数(*args/**kwargs)
3、匿名函数lambda:
使用lambda关键字来创造匿名函数,lambda是一个表达式,也可以说是一个匿名函数。简单来说可以认为是没有名字的函数。
语法:lambda 参数 : 返回值def sq(x):
#....
#定义一个求x平方的函数
#....
return x*x
sq1=lambda x:x*x#简单一条语句组成一个函数
sq(3)
9
sq1(3)
9
lambda函数语法简单明了,我们常常把匿名函数与循环语句或map()函数等配套使用起来非常方便。
Python之自定义函数的更多相关文章
- python的自定义函数
今天想把上次参考着网上教程写的scrapy爬虫改写成requests和beautifulsoup的普通爬虫,写着写着发现自己对python的自定义函数还不是太熟悉(自己TCL了.........流泪) ...
- Python学习教程(learning Python)--2.1 Python下自定义函数
在Python里可以自定义函数,实现某特定功能,这里首先要区分一下函数的定义和函数的调用两个基本概念,初学者往往容易混淆. 函数的定义是指将一堆能实现特定功能的语句用一个函数名标识起来,而函数的调用则 ...
- python基础:自定义函数
一.背景 在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到现需功能处,如下 ...
- Python应用——自定义函数:分割PDF文件函数
案例 将一个 pdf 文件按要求分割为几个部分.比如说一个pdf有20页,分成5个pdf文件,每个pdf文件包含4页.设计函数实现? Python代码 from PyPDF2 import PdfFi ...
- 初识python: 自定义函数
什么是函数? 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率. 函数的定义方法: def test(x): '函数定义方法' x+=1 r ...
- 【python】自定义函数def funName():
- python学习之--自定义函数:
Python之--自定义函数: 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 以下自定义 ...
- 17.python自定义函数
什么是函数,函数说白了就是将一系列代码封装起来,实现代码的重用. 什么是代码重用? 假设我有这样的需求: 但是我还是觉得太麻烦了,每次想吃饭的时候都要重复这样的步骤.此时,我希望有这样的机器:
- Python学习教程(learning Python)--2.3 Python自定义函数传参函数设计
Python里自定义子函数时,可以在调用时携带一些参数到子函数里去处理.具体用法结构如下: def func(arguments): statement statement etc. 定义子函数一定要 ...
随机推荐
- ajax前后端交互原理(7)
7.ajax函数封装 7.1.实例引入 需求: 每秒钟请求一次服务器 获取到数据 实现: 把ajax进行封装 <!DOCTYPE html> <html> <head&g ...
- 手把手教你把web应用丢到服务器上(单页应用+ 服务端渲染)
前两篇文章中,我分别介绍了框架的搭建利用vue-cli + vant搭建一个移动端开发模板,并且把项目中axios请求和vuex的用法做了简要的介绍如何在项目里管理好axios请求与vuex.在这两篇 ...
- 一次运维-堡垒机多次跳转导出及导入mysql数据库
1. 场景描述 记录一次运维,朋友公司要从线上环境同步数据到测试环境,因为公司监管问题,导致数据无法从线上获取,需要通过vpn,堡垒机,3次跳转到目标主机,通过命令导出mysql数据文件,然后再将数据 ...
- zabbix fping 监控网络质量
1,zabbix server (proxy)安装fping wget http://www.fping.org/dist/fping-3.16.tar.gz tar zxvf fping-3.16. ...
- 【区间DP】低价回文
[区间DP]低价回文 标签(空格分隔): 区间DP 回文词 [题目描述] 追踪每头奶牛的去向是一件棘手的任务,为此农夫约翰安装了一套自动系统.他在每头牛身上安装了一个电子身份标签,当奶牛通过扫描器的时 ...
- SSTI-服务端模板注入
SSTI-服务端模板注入漏洞 原理: 服务端模板注入是由于服务端接收了用户的输入,将其作为 Web 应用模板内容的一部分,在进行目标编译渲染的过程中,执行了用户插入的恶意内容,因而导致了敏感信息泄露. ...
- 记一次使用elasticsearch遇到bug的探索过程
背景: 练习一个小项目,爬取京东的数据,存到ES库中,然后读取ES库中数据,展示到页面上.效果图如下: 涉及两个接口,一个爬取写入ES接口,一个查询展示接口,当我写完代码信心满满准备看看效果的时候,调 ...
- drf请求、响应与视图
目录 一.请求 1 定义 2 常用属性 1).data 2).query_params 二.响应 1 Response 2 构造方法 3 状态码 1)信息告知 - 1xx 2)成功 - 2xx 3)重 ...
- 04 flask源码剖析之LocalStack和Local对象实现栈的管理
04 LocalStack和Local对象实现栈的管理 目录 04 LocalStack和Local对象实现栈的管理 1.源码入口 1. flask源码关于local的实现 2. flask源码关于l ...
- linux专题(二):走近Linux系统 (2020-04-08 10:08)
http://dwz.date/UDf 走近Linux系统 开机登录 开机会启动许多程序.它们在Windows叫做"服务"(service),在Linux就叫做"守护进程 ...