python中的f函数_05-python中函数的使用

函数:就是让程序模块化,把具有独立功能的代码块当成一个整体封装成一个函数

首先打印一个佛主看看:

print("_ooOoo_")print("o8888888o")print("88 . 88")print("(| -_- |)")print("O\\ = /O")print("____/`---'\\____")print(". ' \\| |// `.")print("/ \\||| : |||// \\")print("/ _||||| -:- |||||- \\")print("| | \\\\\\ - /// | |")print("| \\_| ''\\---/'' | |")print("\\ .-\\__ `-` ___/-. /")print("___`. .' /--.--\\ `. . __")print(".""'< `.___\\__/___.' >'"".")print("| | : `- \\`.;`\\ _ /`;.`/ - ` : | |")print("\\ \\ `-. \\_ __\\ /__ _/ .-` / /")print("======`-.____`-.___\\_____/___.-`____.-'======")print("`=---='")print(" ")print(".............................................")print("佛祖镇楼 BUG辟易")print("佛曰:")print("写字楼里写字间,写字间里程序员;")print("程序人员写程序,又拿程序换酒钱。")print("酒醒只在网上坐,酒醉还来网下眠;")print("酒醉酒醒日复日,网上网下年复年。")print("但愿老死电脑间,不愿鞠躬老板前;")print("奔驰宝马贵者趣,公交自行程序员。")print("别人笑我忒疯癫,我笑自己命太贱;")print("不见满街漂亮妹,哪个归得程序员?")

那么这个时候我们想打印很多遍佛主的话,总不能一直复制粘贴,所以我们需要定义一个打印佛主函数:

defprint_fozhu():  #首先在开始定义打印佛主的函数,函数名为print_fozhuprint("_ooOoo_")print("o8888888o")print("88 . 88")print("(| -_- |)")print("O\\ = /O")print("____/`---'\\____")print(". ' \\| |// `.")print("/ \\||| : |||// \\")print("/ _||||| -:- |||||- \\")print("| | \\\\\\ - /// | |")print("| \\_| ''\\---/'' | |")print("\\ .-\\__ `-` ___/-. /")print("___`. .' /--.--\\ `. . __")print(".""'< `.___\\__/___.' >'"".")print("| | : `- \\`.;`\\ _ /`;.`/ - ` : | |")print("\\ \\ `-. \\_ __\\ /__ _/ .-` / /")print("======`-.____`-.___\\_____/___.-`____.-'======")print("`=---='")print(" ")print(".............................................")print("佛祖镇楼 BUG辟易")print("佛曰:")print("写字楼里写字间,写字间里程序员;")print("程序人员写程序,又拿程序换酒钱。")print("酒醒只在网上坐,酒醉还来网下眠;")print("酒醉酒醒日复日,网上网下年复年。")print("但愿老死电脑间,不愿鞠躬老板前;")print("奔驰宝马贵者趣,公交自行程序员。")print("别人笑我忒疯癫,我笑自己命太贱;")print("不见满街漂亮妹,哪个归得程序员?")

print_fozhu()    #然后在下面调用print_fozhu函数

print_fozhu()

带有参数的函数

首先我们来定义一个函数来计算两个数的总和:

defsum():  #表示定义一个函数,函数名为sum

a= 20b= 30sum= a+bprint("%d+%d=%d"%(a,b,sum))

sum()  #在下面调动这个函数

这样会不会有点太死板了,我们希望能够从键盘输入a和b去获取这两个数的总和,那么需要怎么做呢?

defsum(a,b):  #在上面定义搞一个函数,函数名为sum,并且携带两个参数a,b,用来接收的叫做形参

sum= a+bprint("%d+%d=%d"%(a,b,sum))

num1= int(input("第1个值:")) #input键盘输入的值是字符串类型,需要用int()转换成整形

num2= int(input("第2个值:"))

sum(num1,num2)  #在调用sum函数时,等于把num1和num2传到sum()函数里去,调用时的传的参数叫做实参

root@test:~/codes# python3 01-带有参数的函数-input.py

第1个值:    10

第2个值:50

10+50=60

return的作用:所谓“返回值”,就是程序中函数完成一件事情后,最后给调用者的结果

比如:我给了我的朋友22块钱,让他帮我去买一包烟,然后朋友买完回来了把烟交给我,这个烟就是返回值

其次,在获取键盘输入时,也是这种道理:

In [1]: name = input("Name:")

Name:laowang

In [2]: name

Out[2]: 'laowang'  #相当于才从键盘获取了一个值,然后拿给了name

那么,我们现在来举一个例子来说明return的作用:

defget_wendu():    #这里定义一个获取温度的函数get_wendu

wendu= 22    #定义一个wendu变量

print("当前的室温是%d"%wendu)defget_wendu_huashi():  #定义一个获取华氏温度的函数get_wendu_huashi

wendu= wendu + 2  #假设华氏温度=温度+2

print("当前的室温(华氏)是%d"%wendu)

get_wendu_huashi()  #调用刚刚定义的函数,get_wendu_huashi

让我们看一下运行结果:

Traceback (most recent call last):

File "02-获取温度.py", line 10, in

get_wendu_huashi()

File "02-获取温度.py", line 7, in get_wendu_huashi

wendu = wendu + 2

UnboundLocalError: local variable 'wendu' referenced before assignment  #这句话表示在声明变量wendu之前就已经对其调用,定位到错误的地方了

让我来解释一下:在函数中定义的变量,只允许在当前函数中使用,在其他函数里不能用,而且函数中不允许直接调用结果那么意思就是在get_wendu中定义的变量wendu,到了get_wendu_huashi中却不认识这个wendu变量

让我们来看一下修改后的代码:

defget_wendu():

wendu= 22

print("当前的室温是%d"%wendu)returnwendu  #在这里我们使用了return函数,那么意味着我们可以把这个值、这个结果返回到调用的地方defget_wendu_huashi(wendu):  #wendu是形参,用来接收的

wendu= wendu + 2

print("当前的室温(华氏)是%d"%wendu)

result=get_wendu()  #return时需要有个容器来把结果存放起来,然后再传入时,把这个结果给存进去

get_wendu_huashi(result)  #在调用get_wendu_huashi函数时,把result这个变量作为实参给传送到函数里去

运行结果如下:

root@test:~/codes# python3 !$

python3 02-获取温度.py

当前的室温是22

当前的室温(华氏)是24

大功告成.....

总结:如果在一个函数中有了return,那么就意味着这个函数可以把一个值,一个结果返回到调用的地方,return时需要有个东西把结果存放起来,然后在传入时把这个东西存进去

如果一个函数想要有多个return,可以写多个return,但是函数一旦运行到return,函数就会结束,如下:

In [1]: deftest():    #定义一个test函数

...: a= 11     #变量a...: b= 22     #变量b...:returna

...:returnb

...:

In [2]: a =test()  #调用test函数,并把它的结果赋值给a

In [3]: a

Out[3]: 11In [4]: b =test()  #调用test函数,并把他的结果赋值给b

In [5]: b

Out[5]: 11

那么为什么a和b的值是一样的呢?我们来看一下流程:

1.定义了一个test函数

2.在test函数中定义了两个变量a和b,并分别复制a = 11,b = 22

3.使用return返回a的值和b的值

4.调用test函数,并把它赋值给了a

5.然后开始进入函数,a = 11,b = 22,然后return a,结果赋值给了a,此时的a等于11,程序结束

6.到了b = test(),进入函数,a = 11,b = 22,然后return a,结果被赋值给了b,此时b等于11,所以a和b的结果是一样的

为什么呢?因为在函数中,每调用一次函数就从函数从头开始做,可以写多个return,但是当进入函数时,一看见return程序就会结束,所以a和b的结果是一样的了

修改程序如下:

In [6]: deftest():

...: a= 11...: b= 22...:returna,b

...:

In [7]: a,b =test()

In [8]: print(a)11In [9]: print(b)22

函数的类型

函数可以根据有没有参数,有没有返回值,可以相互结合

(1)无参数,无返回值

(2)无参数,有返回值

(3)有参数,无返回值

(4)有参数,有返回值

函数的嵌套使用

指在一个函数被调用的过程里,又调用了一个函数,举例说明一下:

deftest1():pass

deftest2():print("-----2-1-----")print("-----2-2-----")deftest3():print("-----3-1-----")

test2()  #在函数里面调用test2函数print("-----3-2-----")

test3()  #调用test3函数

程序运行结果如下:

-----3-1-----

-----2-1-----

-----2-2-----

-----3-2----

defprint_line():  #定义一个函数,打印40个*print("*"*40)defprint_5_lines():  #定义一个函数,打印5行

i=0while i<5:

print_line()  #又签到调用了print_line函数

i+= 1print_5_lines()

程序运行结果如下:

root@test:~/codes#python3 04-函数的嵌套调用2.py

****************************************

****************************************

****************************************

****************************************

***************************************

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值