python自定义函数的关键字_Python之自定义函数

函数

1、定义函数

在Python中定义一个函数要使用def语句,一次写出函数名、括号、括号中的的参数和冒号,然后在缩进块中编写函数体,函数的返回值用return返回。如下所示:

def 函数名(参数列表):函数体

简单的定义一个函数

1 defhello() :2 print("Hello World!")3 hello()

Hello World!

定义一个带参数的函数:

需求:替换列表中的某个值替换成另一个值

l=[3,3,4,5,6,6,5,3,6,2,9,9,2,8,2,3]

i=0while i

l[i]=7i+=1

l

[7, 7, 4, 5, 6, 6, 5, 7, 6, 2, 9, 9, 2, 8, 2, 7]

由上可知循环不能反复利用,而且参数固定,所以我们可以定义一个函数。

1 deflist_element_replace(somelist,x,y):2 i=03 while i

5 l[i]=y#代替值

6 i+=1

7 return somelist

1 l=[1,2,3,4,1,2,3,1,4,5,2,3]2 list_element_replace(l,3,30)

[1, 2, 30, 4, 1, 2, 30, 1, 4, 5, 2, 30]

用for循环来编写

1 defreplace_element(a,b,c):2 for i inrange(len(a)):3 if a[i]==b:4 a[i]=c5 return a

1 replace_element(l,2,20)

[1, 20, 30, 4, 1, 20, 30, 1, 4, 5, 20, 30]

2、函数的参数

2-1、位置参数

按照从左到右的顺序依次定义的参数叫做位置参数;

1 defstudent(age,high,sex):2 if age<18:3 print(age)4 print(high)5 print(sex)6 else:7 print("超出年龄"

1 student(19,170,"女")

超出年龄

1 student(16,170,"女")

16

170

由上面函数可知道,位置参数的顺序是不能改变的,否则传入参数是会错误识别。其实在传参数时我们也能显示的表示这些参数,即下面的关键字参数。

2-2、关键字参数与默认参数

• 关键字参数:按照关键字进行传参的参数,按照名称-值对的形式进行传参的参数;关键字参数可以不按参数的顺序进行传值;

1 defstudent(age,high,sex):2 if age<18:3 print(age)4 print(high)5 print(sex)6 else:7 print("超出年龄")

student(sex="男",age=17,high=178)#当我们显示的把这些参数传进来时无关顺序

17

178

• 默认参数:在函数定义阶段就定义好默认值的参数;传参时,如果不传入具体的值,则使用定义时的值;

1 def student(age,high,sex="女"):2 if age<18:3 print(age)4 print(high)5 print(sex)6 else:7 print("超出年龄")

student(16,178)#在传参时若某参数与默认参数一致则可省略

16

178

student(16,178,"男")#若不一致则传入实际的值即可

16

178

2-3、不定长参数

有时我们定义函数是并不知道需要多少参数,这些参数叫做不定长参数。通常有两种方法*args,**kwargs。

加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。

1 def scores(a,*x):2 print(a)3 print(x)

1 cores("姓名",80,79,88)

姓名

(80 79 88)

编写求一串数的总和的函数

1 def sum_element(*x):2 s=03 for i inx:4 s=s+i5 print(s)

1 sum_element(1,2,3,4)

10

当传入的参数是列表或元组等一些集合时,我们可在参数前加*将其拆开。(定义函数特有的用法)

1 t=(1,3,5,7)2 sum_element(*t)

16

加了两个星号 ** 的参数会以字典的形式导入。

1 def scores(a,**x):2 print(a)3 print(x)

1 scores("姓名",b=98,c=109,d=110)

姓名

{'b': 98, 'c': 109, 'd': 110}

直接传入字典

1 dict1={'b': 98, 'c': 109, 'd': 110}2 def scores(a,**x):3 print(a)4 print(x)

scores("姓名",**dict1)#用**对字典进行拆包

姓名

{'b': 98, 'c': 109, 'd': 110}

注:编写函数是参数是遵循一定的顺序的:位置参数>关键字参数/默认参数>不定长参数(*args/**kwargs)

3、匿名函数lambda:

使用lambda关键字来创造匿名函数,lambda是一个表达式,也可以说是一个匿名函数。简单来说可以认为是没有名字的函数。

语法:

lambda 参数 : 返回值

1 defsq(x):2 #....

3 #定义一个求x平方的函数

4 #....

5 return x*x

1 sq1=lambda x:x*x#简单一条语句组成一个函数

1 sq(3)

9

1 sq1(3)

9

lambda函数语法简单明了,我们常常把匿名函数与循环语句或map()函数等配套使用起来非常方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值