函数

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. EFCore-一对一配置外键小记2

    前后两次遇到这样的错误: The property 'xx' on entity type 'xxxx' has a temporary value. Either set a permanent v ...

  2. 第一步:安装centos_8

    关于centos的安装其实大部分时候都是在虚拟机环境下安装. 好处无疑有这几个:方便,快速,主要就是整出事情了我可以直接删了重装 我这边是在vmware下进行一个安装 vmware我这边给出下载链接: ...

  3. SQL语法LPAD和RPAD

    一.[LPAD左侧补齐] LPAD(str,len,padstr) LPAD(str,len,padstr) 返回字符串 str, 其左边由字符串padstr 填补到len 字符长度.假如str 的长 ...

  4. 不花钱搞定PDF编辑难题

    PDF格式是专为显示而设计的格式,并不容易被编辑,市面上并没有一款可以真正免费使用的PDF编辑器. 不花钱搞定PDF编辑难题的办法: 1.免费使用PDF编辑器+去水印:免费版的PDF编辑器不是会加水印 ...

  5. POJ2393贪心

    题意:奶牛们收购了一家世界著名的酸奶工厂Yucky Yogurt. 在接下来的 N (1 <= N <= 10,000) 周,牛奶和人工的价格每周会波动,以致于第i周需要花公司 C_i ( ...

  6. Javascript安全编程规范

    命名 1.原则——编码格式UTF-8,根据功能为变量与方法命名(尽量不缩写) 2.类——构造函数/类 使用驼峰命名法,且首字母大写 3.方法——动词.动宾结构,使用驼峰命名法,首字母小写 例如:get ...

  7. 我终于弄懂了Python的装饰器(一)

    此系列文档: 1. 我终于弄懂了Python的装饰器(一) 2. 我终于弄懂了Python的装饰器(二) 3. 我终于弄懂了Python的装饰器(三) 4. 我终于弄懂了Python的装饰器(四) 一 ...

  8. 线下---复习day04

    目录 1 Django与Ajax 2分页器组件 3 forms组件 4cookie与session组件 5中间件组件 6Auth模块 作业: 1 Django与Ajax # 通过ajax向https: ...

  9. kubernetes系列(十四) - 存储之PersistentVolume

    1. PersistentVolume(PV)简介 1.1 为什么需要Persistent Volume(PV) 1.2 PersistentVolume(PV)和Volume的区别 1.3 PV和P ...

  10. Scala 面向对象(九):特质(接口) 二

    1 带有具体实现的特质 说明:和Java中的接口不太一样的是特质中的方法并不一定是抽象的,也可以有非抽象方法(即:实现了的方法). 2 带有特质的对象,动态混入 1)除了可以在类声明时继承特质以外,还 ...