函数

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之自定义函数的更多相关文章

  1. python的自定义函数

    今天想把上次参考着网上教程写的scrapy爬虫改写成requests和beautifulsoup的普通爬虫,写着写着发现自己对python的自定义函数还不是太熟悉(自己TCL了.........流泪) ...

  2. Python学习教程(learning Python)--2.1 Python下自定义函数

    在Python里可以自定义函数,实现某特定功能,这里首先要区分一下函数的定义和函数的调用两个基本概念,初学者往往容易混淆. 函数的定义是指将一堆能实现特定功能的语句用一个函数名标识起来,而函数的调用则 ...

  3. python基础:自定义函数

    一.背景 在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到现需功能处,如下 ...

  4. Python应用——自定义函数:分割PDF文件函数

    案例 将一个 pdf 文件按要求分割为几个部分.比如说一个pdf有20页,分成5个pdf文件,每个pdf文件包含4页.设计函数实现? Python代码 from PyPDF2 import PdfFi ...

  5. 初识python: 自定义函数

    什么是函数? 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率. 函数的定义方法: def test(x): '函数定义方法' x+=1 r ...

  6. 【python】自定义函数def funName():

  7. python学习之--自定义函数:

    Python之--自定义函数: 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 以下自定义 ...

  8. 17.python自定义函数

    什么是函数,函数说白了就是将一系列代码封装起来,实现代码的重用. 什么是代码重用? 假设我有这样的需求: 但是我还是觉得太麻烦了,每次想吃饭的时候都要重复这样的步骤.此时,我希望有这样的机器:

  9. Python学习教程(learning Python)--2.3 Python自定义函数传参函数设计

    Python里自定义子函数时,可以在调用时携带一些参数到子函数里去处理.具体用法结构如下: def func(arguments): statement statement etc. 定义子函数一定要 ...

随机推荐

  1. 浅谈MySQL数据库

    目录 什么是数据库 定义 发展现状 数据库基本概念 数据库分类 关系数据库 非关系型数据库(NoSQL) 数据库启动与连接 启动服务端 连接数据库 用户信息查看 数据库的基本操作 表的基本操作 记录的 ...

  2. 十位大牛做出的web前端开发规范总结

    Web前端作为开发团队中不可或缺的一部分,需要按照相关规定进行合理编写(一部分不良习惯可能给自己和他人造成不必要的麻烦).不同公司不同团队具有不同的规范和文档.下面是根据不同企业和团队的要求进行全面详 ...

  3. Java并发编程(06):Lock机制下API用法详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.Lock体系结构 1.基础接口简介 Lock加锁相关结构中涉及两个使用广泛的基础API:ReentrantLock类和Condition接 ...

  4. 最简单的博弈论——HDU - 5963 朋友 (博弈)

    OK,好的先看一下题意: B君在围观一群男生和一群女生玩游戏,具体来说游戏是这样的: 给出一棵n个节点的树,这棵树的每条边有一个权值,这个权值只可能是0或1. 在一局游戏开始时,会确定一个节点作为根. ...

  5. salesman,动态规划带一点点贪心。

    题目直接链接 分析一下: 这题题意还是比较明白的(少见的一道中文题),他的意思就是:有这么一个无向图:保证联通且点与点直接有唯一的简单路径(说白了就是棵树,根节点是1),每个节点有一个权值(有正有负) ...

  6. Python-模块XlsxWriter将数据写入excel

    1.目的 用xlwt来生成excel的,生成的后缀名为xls,在xlwt中生成的xls文件最多能支持65536行数据.python XlsxWriter模块创建aexcel表格,生成的文件后缀名为.x ...

  7. Java并发编程——为什么要用volatile关键字

    首发地址 https://blog.leapmie.com/archives/66ba646f/ 日常编程中出现 volatile 关键字的频率并不高,大家可能对 volatile 关键字比较陌生,再 ...

  8. 【js】栈方法和队列方法

    栈方法:后进先出,推入(push)和弹出(pop):push("**")返回数组长度,pop()返回弹出的项. var colors = new Array(); // 创建一个数 ...

  9. day59 django初识

    目录 一.借助wsgiref模块实现简易版web框架 二.动静态页面 三.python三大主流web框架 四.启动一个django项目 1 启动前的注意事项 1.1 计算机的问题 1.2 django ...

  10. Django之 admin组件

    本节内容 路由系统 models模型 admin  views视图 template模板 Django Admin介绍 admin 是django 自带的用来让你进行数据库管理的web app. 提供 ...