python全栈工程师路线_python全栈工程师之路—初识函数

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-23 01:11   125   0

函数的优点

1.代码重用

2.保持一致性,易维护

3.可扩展性强

函数的基本形式

1 def函数名():2 pass

3 return 返回值

函数的返回值

无返回值

1 #函数定义

2 defmylen():3 """计算s1的长度"""

4 s1 = "hello world"

5 length =06 for i ins1:7 length = length+1

8 print(length)9

10 #函数调用

11 str_len =mylen()12 #因为没有返回值,此时的str_len为None

13 print('str_len : %s'%str_len)14

15 不写return

1 deffunc():2 print(111)3 return

4 print(222)5 func()6 #输出:111

不写return返回None,只写return,后面不写其他内容,也会返回None,有的同学会奇怪,既然没有要返回的值,完全可以不写return,为什么还要写个return呢?这里我们要说一下return的其他用法,就是一旦遇到return,结束整个函数

一个返回值

1 #函数定义

2 defmylen():3 """计算s1的长度"""

4 s1 = "hello world"

5 length =06 for i ins1:7 length = length+1

8 returnlength9

10 #函数调用

11 str_len =mylen()12 print('str_len : %s'%str_len)13

14 返回一个值

多个返回值

可以返回任意多个、任意数据类型的值

1 defret_demo1():2 '''返回多个值'''

3 return 1,2,3,4

4

5

6 defret_demo2():7 '''返回多个任意类型的值'''

8 return 1,['a','b'],3,4

9

10 ret1 =ret_demo1()11 print(ret1)12 ret2 =ret_demo2()13 print(ret2)14

15 返回多个值

返回的多个值会被组织成元组被返回,也可以用多个值来接收

1 defret_demo2():2 return 1,['a','b'],3,4

3

4 #返回多个值,用一个变量接收

5 ret2 =ret_demo2()6 print(ret2)7

8 #返回多个值,用多个变量接收

9 a,b,c,d =ret_demo2()10 print(a,b,c,d)11

12 #用多个值接收返回值:返回几个值,就用几个变量接收

13 a,b,c,d =ret_demo2()14 print(a,b,c,d)15

16 多个返回值的接收

函数的参数

现在,我们已经把函数返回值相关的事情研究清楚了,我们自己已经完成了一个可以返回字符串长度的函数。但是现在这个函数还是不完美,之前我们使用len函数的时候得是length = len("hello world"),这样我可以想计算谁就计算谁的长度。但是现在我们写的这个函数,只能计算一个“hello world”的长度,换一个字符串好像就是不行了。这可怎么办?

1 #函数定义

2 defmylen(s1):3 """计算s1的长度"""

4 length =05 for i ins1:6 length = length+1

7 returnlength8

9 #函数调用

10 str_len = mylen("hello world")11 print('str_len : %s'%str_len)12

13 带参数的函数

我们告诉mylen函数要计算的字符串是谁,这个过程就叫做 传递参数,简称传参,我们调用函数时传递的这个“hello world”和定义函数时的s1就是参数。

实参与形参

参数还有分别:

我们调用函数时传递的这个“hello world”被称为实际参数,因为这个是实际的要交给函数的内容,简称实参。

定义函数时的s1,只是一个变量的名字,被称为形式参数,因为在定义函数的时候它只是一个形式,表示这里有一个参数,简称形参。

传递多个参数

参数可以传递多个,多个参数之间用逗号分割。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 defmymax(x,y):2 the_max = x if x > y elsey3 returnthe_max4

5 ma = mymax(10,20)6 print(ma)

传递多个参数

位置参数

站在实参角度

1.按照位置传值

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 defmymax(x,y):2 #此时x=10,y=20

3 the_max = x if x > y elsey4 returnthe_max5

6 ma = mymax(10,20)7 print(ma)8

9 按照位置传参

View Code

2.按照关键字传值

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 defmymax(x,y):2 #此时x = 20,y = 10

3 print(x,y)4 the_max = x if x > y elsey5 returnthe_max6

7 ma = mymax(y = 10,x = 20)8 print(ma)9

10 按照关键字传参

View Code

3.位置、关键字形式混着用

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 defmymax(x,y):2 #此时x = 10,y = 20

3 print(x,y)4 the_max = x if x > y elsey5 returnthe_max6

7 ma = mymax(10,y = 20)8 print(ma)9

10 位置、关键字混用传参

View Code

默认参数

1.正常使用

使用方法

为什么要有默认参数:将变化比较小的值设置成默认参数

2.默认参数的定义

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 def stu_info(name,sex = "male"):2 """打印学生信息函数,由于班中大部分学生都是男生,3 所以设置默认参数sex的默认值为'male'4 """

5 print(name,sex)6

7

8 stu_info('alex')9 stu_info('eva','female')10

11 默认参数

View Code

3.参数陷阱:默认参数是一个可变数据类型

8f900a89c6347c561fdf2122f13be562.pngView Code

动态参数

按位置传值多余的参数都由args统一接收,保存成一个元组的形式

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 def mysum(*args):2 the_sum =03 for i inargs:4 the_sum+=i5 returnthe_sum6

7 the_sum = mysum(1,2,3,4)8 print(the_sum)9

10 *args求和函数应用

*args

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 def stu_info(**kwargs):2 print(kwargs)3 print(kwargs['name'],kwargs['sex'])4

5 stu_info(name = 'alex',sex = 'male')

**kwargs

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP