python函数只有被调用才会执行_Python函数

1.函数的定义

python内置了很多函数,可以直接调用,多数情况下,还需要自定义函数,自定义函数的主体,换行的缩进表示代码属于该函数.定义的函数只有被调用的时候才会执行.函数只有有返回值的情况下才可以打印

语法定义:

def 函数名():

......

......

其中,函数名可以由数字,字母,下划线组合而成,但不能以数字开头,冒号以下的代码是函数的主体,换行的缩进表示代码属于该函数

实例代码:

1 defadd():2 a = 1

3 b = a+3

4 print(b)5 add()6 #运行结果:

7 4

代码说明:

1 自定义一个名叫add的函数

2 在add函数中定义变量a,并将a赋值为1

3 在add函数中定义变量b,并将b赋值为a+3的运算结果

4 打印b的值

5 调用执行add()函数

7 运行结果,为4

注意:如果没有第5行的调用,那么add()函数就不会执行了

2.函数的参数

自定义函数的时候还可以加上参数,参数可以是一个,也可以是多个,参数放在()里面,加上的参数只是一个形式参数,而非真正的参数.

实例代码1:

1 defadd(a,b):2 c = a+b3 print(c)4 add(1,2)5 #运行结果:

6 3

代码说明:

1 定义一个add函数,并创建形式参数a,b

2 将a+b的结果赋值给变量c

3 打印c的值

4 调用执行add(a,b)函数,并给形式参数给传递实参1,给形式参数b传递实参2

6 运行结果,为3

注意:对于add(a,b)函数来说,函数内的a,b只是形式参数,a,b可以表示任何数据,而c就是a和b任意数据的和,等式c=a+b,只是建立了c与a,b的关系

实例代码2:

1 def add(a = 1,b = 2):2 c = a +b3 print(c)4 add()5 add(2,3)6 add()7 #运行结果:

8 3

9 5

10 3

代码说明:

1.定义函数,有形式参数a,b 并给a赋默认值1,给b赋默认值2

2.定义变量c,赋值a+b的运算结果

3.打印c

4.调用函数,不传实参

5.调用函数,传实参,a传实际参数2,b传实际参数3

6.调用函数,不传实参.caution:虽然第5行在调用函数时改变了a和 b的值,但对于函数本身默认值是不会变的,调用时改变的值只是对调用时生效,并不会影响函数本身的默认值

8.4的运行结果

9.5的运行结果

10.3的运行结果

注意:在定义具有形参的函数时,也可以给形式参数赋值,产生一个默认值,当调用函数时,分为两种情况:当调用函数不加实际参数时,就以定义函数时默认值作为实际值;当调用函数加上实际值,那么新的实参就会代替原来的默认值.

使用关键字参数允许函数调用时参数的顺序与声明时不一致,Python解释器能够用参数名匹配参数值.如:

def printinfo(name,age):

..................

printinfo(age=50,name='猪太肥')

传参时会通过参数名匹配参数值,不会出现name=50,age="猪太肥"的情况.

3.函数的返回值

之前定义的函数只是用来执行某些操作,并没有将最后执行的结果保存.上面的例子是将c的值打印了出来,并未将c的值保存和返回,导致c的值只能在函数内使用

实例代码1:

1 def add(a = 1,b = 2):2 c = a +b3 print(add())4 print(add(2,3))5 #运行结果:

6 None7 None

注意:python语言中,没有返回值时不会报错,会返回一个None

如何返回和保存c的值呢? 只需要在函数中加return + 返回值

实例代码:

1 def add(a = 1,b = 2):2 c = a +b3 returnc4 print(add())5 print(add(2,3))6 #运行结果

7 3

8 5

代码说明:

3.在执行完add函数时返回c的值

4.将调用执行add()的结果打印出来.由于add函数有了返回值,所以打印出来就是c的值

有时候函数需要返回的值不止一个,同样可以用return来返回,区别于单个返回值,多个返回值需要用逗号隔开,数据以元组的形式返回,同样也可以把返回值按照顺序赋值给多个变量

实例代码:

1 def add(a = 1,b = 2):2 c = a +b3 returna,b,c4 print(add())5 print(add(2,3))6 x,y,z = add(3,5)7 print(x,y,z)8 #运行结果:

9 (1, 2, 3)10 (2, 3, 5)11 3 5 8

代码说明:

3.在执行完add函数后,返回a,b,c的值

4.调用add函数,不传实参,并打印执行结果,由于返回了3个值,所以返回的是3个元素的元组

5.调用add函数,传递实参,并打印执行结果,由于返回了3个值,所以返回的是3个元素的元组

6.调用add函数,不传实参,并将执行结果分别赋值给x,y,z

7.打印x,y,z的值

实例代码体会下有无返回值的区别:]

defchangeme(mylist):

mylist.append(6);print('list =',mylist)list= [1,2,3,4,5]print(changeme(list))

print(list)

运行结果:

list= [1, 2, 3, 4, 5, 6]#执行调用函数时,被调用函数内的打印None#被调用函数没有返回值,所以打印不出东西来defchangeme(mylist):

mylist.append(6);print('list =',mylist)returnmylist #被调用函数有返回值

list= [1,2.3,4,5]print(changeme(list))

print(list)

运行结果:

list= [1, 2, 3, 4, 5, 6]

[1, 2, 3, 4, 5, 6] #被调函数有返回值,可以打印出东西来

[1, 2, 3, 4, 5, 6] #列表的可变性,在执行调用函数时,列表以发生变化

4.函数的嵌套

除了 自定义和执行函数外,还可以在函数中相互嵌套调用,即在某个函数的代码中调用其他函数,这就是函数的嵌套.

实例代码:

1 defa1(a,b):2 return a+b3 defa2(c):4 returnc5 defa3(x,y,z):6 result = a1(x,y)-a2(z)7 returnresult8 print(a3(1,2,3))9 #运行结果:

10 0

代码说明:

1.自定义a1()函数,并创建形式参数a和b

2.函数a1返回a+b的结果

3.自定义a2()函数,并创建形式参数c

4.函数a2返回c的结果

5.自定义a3()函数,并创建形式参数x,y,z

6.将函数a1的运行结果减去函数a2的运行结果,并把结果赋值给result.

7,函数a3()执行完结果,返回运算结果result的值

8.打印a(1,2,3)的执行结果.

任意函数都能调用任意函数,没有上下级等级关系.但这不利于代码的可读性.为了让代码更清晰,利于对代码进行修改,设立一个主函数,并在这个函数下定义它需要调用的子函数,这样主次关系就会更加明确,而且子函数不会被其他函数调用,避免了代码调用混乱的结果.

实例代码:

1 defa(x,y,z):2 defa1(a,b):3 return a+b4 defa2(c):5 returnc6 result = a1(x,y)-a2(z)7 returnresult8 print(a(1,2,3))9 #运行结果:

10 0

1 defa1(a,b):2 c = a+b3 defa2(x):4 x=x*x5 returnx6 returna2(c)7 print(a1(1,2))8 #运行结果:

9 9

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值