函数

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. Idea+springboot入坑之路

    环境准备 IDEA 社区版: 2019.3 jdk: 1.8.0_241 tomcat: 7.0.99 maven: 3.6.3 spring-boot:2.2.5.RELEASE 插件 spring ...

  2. 洛谷 P3243 【[HNOI2015]菜肴制作】

    先吐槽一下这个难度吧,评的有点高了,但是希望别降,毕竟这是我能做出来的不多的紫题了(狗头). 大家上来的第一反应应该都是啊,模板题,然后兴高采烈的打了拓补排序的板子,然后搞个小根堆,按照字典序输出就可 ...

  3. nginx location 知识知多少

    写在之前 众所周知 nginx location 路由转发规则多种多样,尤其是 [ = | ~ | ~* | ^~ ] 这些前缀是什么意思.root 与 alias 是否可以区分开,nginx 作为反 ...

  4. Illustrate Java Access Levels

    https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html 官网教程,清晰明了. (完)

  5. 编辑器之神_vim

    01vim简介 1.什么是vim: 文本编辑器 2.vim特点: 没有图形界面;只能是编辑文本内容;没有菜单 ;只有命令 3.在很多linux发行版中,直接把vi作为vim的软连接 02打开和新建文件 ...

  6. 多核CPU硬件架构介绍

    转自:http://book.51cto.com/art/201004/197196.htm SISD.MIMD.SIMD.MISD计算机的体系结构 1. 计算平台介绍 Flynn于1972年提出了计 ...

  7. HTML文档解析和DOM树的构建

    浏览器解析HTML文档生成DOM树的过程,以下是一段HTML代码,以此为例来分析解析HTML文档的原理 <!DOCTYPE html> <html lang="en&quo ...

  8. css3动画讲解,关于css3的@keyframes和animation

    通过css3我们可以创建动画,它能取代gif图片.Flash.Js动画等,css3的animation动画是应用在html的DOM元素上的,通过样式来实现的. @keyframes 规则 @Keyfr ...

  9. F5隐写工具使用

      0x00 前言 今天在实验吧看到一个图片隐写的题目,用了stegslove和winHex分析一通发现并没有什么有效信息.看了评论区大佬的提示说用到了F5隐写工具,所以百度教程用了一下,发现确实解决 ...

  10. React-redux使用

    为什么要使用react-redux 由于redux的store与组件的耦合度太高所以,我们用react官方提供的react-redux可以使两者耦合度降低,更好的实现模块化开发. react-redu ...