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. 定义子函数一定要 ...
随机推荐
- Ubuntu apt update卡在Connecting to security.ubuntu.com解决方法
Ubuntu操作系统运行apt update命令时会卡在Connecting to security.ubuntu.com,搭了梯子也无法解决 尝试了网络上的方法,如: https://blog.cs ...
- java语言进阶(一)_Object类_常用API
第一章 Object类 1.1 概述 java.lang.Object类是Java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.在对象实例化的时候,最终找的父类就是Object. 如 ...
- 如何使用CSS创建巧妙的动画提示框
当你的用户需要一些额外的上下文来放置图标,或者当他们需要一些保证来点击按钮,或者可能是一个复活节彩蛋的标题来搭配一个图片时,工具提示是一个很好的方法来增强用户界面.现在让我们来制作一些动画工具提示,只 ...
- css3中样式计算属性calc()的使用和总结
calc的介绍 在css3样式中有一个类似与函数的计算属性calc(),它主要用于指定元素的长度,无论是border.margin.pading.font-size和width等属性都可以使用calc ...
- 常用API - 包装类、System类
包装类 概述 Java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率. 然而很多情况,会创建对象使用,因为对象可以做更多的功能. 如果想要我们的基本类型像对象一样操作,就可以使用基本类型 ...
- 「JLOI2015」城池攻占 可并堆
传送门 分析 如果直接暴力枚举的话肯定会超时 我们可以从下往上遍历,维护一个小根堆 每次到达一个节点把战败的骑士扔出去 剩下的再继续向上合并,注意要维护一下其实的战斗力 可以像线段树那样用一个lazy ...
- 线下---复习day01
目录 1 个人介绍 2 关于编辑器 3 基础串讲 3.1 解释型和编译型 3.2 数据类型 3.2.1 一切皆对象 3.2.1 深浅copy 3.2.3 可变类型与不可变类型 3.3 字符编码 3.4 ...
- python写12306抢票
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' 利用splinter写的一个手动过验证及自动抢票的例子, 大家可以自己扩展或者弄错窗体.web端. ...
- day76 vue框架入门
目录 一.vue.js快速入门使用 1 vue.js库的下载 2 vue.js库的使用 3 vue.js的M-V-VM思想 4 显示数据 二.常用指令 1 操作属性 2 事件的绑定 3 样式操作 3. ...
- JavaScript学习 Ⅶ
十四. DOM(文档对象模型) 节点:Node--构成HTML文档最基本的单元 文档节点:整个HTML文档 元素节点:HTMl文档中的HTML标签 属性节点:元素的属性 文本节点:HTML标签中的文本 ...