函数的了解
首先,我们要了解函数是什么,在python3开发的过程中使用函数有什么意义。其次,函数的好处给我们的程序带来什么好处?函数和方法有什么区别等等。不懂没关系,我们一点一点的了解。先了解一下什么是函数。在python中,一切皆是对象,函数也是对象,函数的作用就是不在使用重复的代码,利用函数的参数可以重复使用函数的功能。举例例子:我们计算一下两个整数的和,只需要传入两个整数参数即可,调用一下函数就会返回两个参数的和。看下面的例子:
#!/usr/bin/python3 #coding:utf-8 #~~~~~~~~~~~~www.wulaoer.org 吴老二个人博客~~~~~~~ def num(wulaoer,wolf): wulaoer += wolf return wulaoer wulaoer = 23 wolf = 27 print("两个整数的和为:",num(wulaoer,wolf))
输出结果:
两个整数的和为: 50
两个变量和随意取,变量的值这里没有做一个整数判断,所以如果是浮点数也是可以的,只要把变量名传到函数中就会计算两个变量的和,下面尝试一下,修改一下变量名和变量的值。
#!/usr/bin/python3 #coding:utf-8 #~~~~~~~~~~~~www.wulaoer.org 吴老二个人博客~~~~~~~ def num(wulaoer,wolf): wulaoer += wolf return wulaoer wu = 23.8 laoer = 27.2 print("两个整数的和为:",num(wu,laoer))
输出结果:
两个整数的和为: 51.0
传入的是浮点数,返回的也是一个浮点数。所以,函数的作用就是调用频频的相同功能。这里要注意,函数名必须是del开头,不建议使用大写。因为在python中,python的类是实用的大写,为了规范,不建议函数大写。在函数的最后一行有一个return,就是结束函数,返回一个函数的值,如果我们不加return,调用函数返回为None,看下面的例子:
#!/usr/bin/python3 #coding:utf-8 #~~~~~~~~~~~~www.wulaoer.org 吴老二个人博客~~~~~~~ def num(wulaoer,wolf): wulaoer += wolf print(wulaoer) wu = 23.8 laoer = 27.2 print("两个整数的和为:",num(wu,laoer))
输出结果:
51.0 两个整数的和为: None
这时,我们调用的函数num已经不在是一个值,而是一个None,返回的值没有赋值给函数。这个时候如果我们还需要利用这个函数取调用其他的函数时,这个函数就不能作为一个参数传入到新的函数中进行调用了。在举个例子,上面已经创建了一个两个数和的函数,我们在创建一个函数,乘以2,这时,我们把num函数作为一个参数,放到新的函数中,看下面的例子:
#!/usr/bin/python3 #coding:utf-8 #~~~~~~~~~~~~www.wulaoer.org 吴老二个人博客~~~~~~~ def num(wulaoer,wolf): wulaoer += wolf print(wulaoer) return wulaoer def area(laoer): laoer = laoer * 2 return laoer wu = 23.8 laoer = 27.2 print("两个整数的和为:",num(wu,laoer)) print("整数和乘以2",area(num(wu,laoer)))
输出结果:
51.0 两个整数的和为: 51.0 51.0 整数和乘以2 102.0
如果我们把num函数的renturn注释掉,看一下会有什么错误。
51.0 两个整数的和为: None 51.0 Traceback (most recent call last): File "/path/wulaoer.py", line 17, in <module> print("整数和乘以2",area(num(wu,laoer))) File "/path/wulaoer.py", line 11, in area laoer = laoer * 2 TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'
这里的提示已经很明显了,所以建议如果定义的函数如果还需要调用,就需要实用return进行结束函数,这个是习惯。
函数的参数
上面已经了解了什么是函数,我们也举了几个函数的例子,我们应该发现,上面的例子中,我们调用的函数都需要传入一个参数进去的,在传入的参数中,我们使用了参数,这是我们知道传入的参数是几个,如果我们传入多个参数,或者不传参数,又会怎么样?所以python给函数做了几种不同传参方式,分别是:必要传参,关键字传参,默认传参,不定长传参等。
#!/usr/bin/python3 #coding:utf-8 #~~~~~~~~~~~~www.wulaoer.org 吴老二个人博客~~~~~~~ def num(wulaoer,wolf): wulaoer += wolf print(wulaoer) return wulaoer wu = 23.8 laoer = 27.2 print("两个整数的和为:",num())
输出结果:
Traceback (most recent call last): File "/path/wulaoer.py", line 12, in <module> print("两个整数的和为:",num()) TypeError: num() missing 2 required positional arguments: 'wulaoer' and 'wolf'
提示的大概意思也能看明白了,在调用的时候没有传参数。
关键字传参:关键字传参就是在传入参数的时候,函数需要使用参数的值进行计算,比如上面的求和函数。传入的参数顺序和调用的顺序可以颠倒,不过不太建议,如果有需要使用的时候也可以这样使用,看下面的例子:
#!/usr/bin/python3 #coding:utf-8 #~~~~~~~~~~~~www.wulaoer.org 吴老二个人博客~~~~~~~ def wulaoer(wulaoer,wolf): print("网站名称:",wulaoer) print("网站年来:",wolf) wulaoer(wolf=0.8,wulaoer="www.wulaoer.org")
输出结果:
网站名称: www.wulaoer.org 网站年来: 0.8
之所以传参的变量位置变化之后,打印的参数不变,是因为在调用函数的时候,定义的参数名字和调用的参数名字一样,如果我们使用调用函数参数和定义函数的参数名不一样时,函数就会根据定义的函数顺序进行打印函数的变量。两者不一样,所以在调用函数时已经函数传参时,尽量顺序一致。
默认传参:就是函数创建时,已经定义了默认参数,如果在调用函数时,不传默认参数的变量,函数会使用默认的参数。看下面的例子:
#!/usr/bin/python3 #coding:utf-8 #~~~~~~~~~~~~www.wulaoer.org 吴老二个人博客~~~~~~~ def wulaoer(wulaoer, wolf = 0.9 ): print ("网站名称:",wulaoer) print ("网站年来:", wolf) wulaoer(wulaoer="www.wulaoer.org")
输出结果:
网站名称: www.wulaoer.org 网站年来: 0.9
传入一个参数的时候,会自动使用默认参数,这里注意,如果传入的一个参数名称不是wulaoer,就是其他的任何一个变量名的参数,都会自动把定义的默认参数添加到函数中,如果不想使用默认参数,就需要在申明的变量中赋值后加到调用的函数中,这样就会覆盖掉原来的参数。
不定长传参:意思时传入的参数,个数不确定,有可能是传一个参数,也有可能是传两个参数,也可能是传三个参数。先下面的例子:
#!/usr/bin/python3 #coding:utf-8 #~~~~~~~~~~~~www.wulaoer.org 吴老二个人博客~~~~~~~ def wulaoers(wulaoer, *var ): print ("网站名称:",wulaoer) print ("网站年来:", var) wulaoer="www.wulaoer.org" wolf = 27 python3 = 3 devops = 8 wulaoers(wulaoer,wolf,python3,devops)
输出结果:
网站名称: www.wulaoer.org 网站年来: (27, 3, 8)
第一个参数自动加到函数中调用的变量中,不过后面的*var变量是多个参数,这里定义的多个参数都传到函数中打印出来的是一个tuple(元组),在传参数的时候不能在调用函数的时候赋值,不然会报错,如下:
wulaoers(wul,wolf=2,python3=2,devops=2)
输出结果:
Traceback (most recent call last): File "/path/wulaoer.py", line 29, in <module> wulaoers(wul,wolf=2,python3=2,devops=2) TypeError: wulaoers() got an unexpected keyword argument 'wolf'
如果想在调用函数的时候也把参数传入进去,就需要实用两个*,这样调用**var,看下面的例子:
#!/usr/bin/python3 #coding:utf-8 #~~~~~~~~~~~~www.wulaoer.org 吴老二个人博客~~~~~~~ def wulaoers(wulaoer, **var ): print ("网站名称:",wulaoer) print ("网站年来:", var) wul="www.wulaoer.org" wolf = 27 python3 = 3 devops = 8 wulaoers(wul,wolf=27,python3=3,devops=8)
输出结果:
网站名称: www.wulaoer.org 网站年来: {'python3': 3, 'devops': 8, 'wolf': 27}
使用**var返回的是一个字典,和上面*var返回的(元组)不太一样。在参数中传入的参数可以单独使用"*",不过需要注意,"*"后面传入的参数必须使用关键字传入,看下面的例子:
#!/usr/bin/python3 #coding:utf-8 #~~~~~~~~~~~~www.wulaoer.org 吴老二个人博客~~~~~~~ def wulaoers(wulaoer, wolf, *, devops ): print ("网站名称:",wulaoer) print ("网站年来:", wolf,devops) wul="www.wulaoer.org" wolf = 27 python3 = 3 devops = 8 wulaoers(wul,wolf,devops=8)
输出结果:
网站名称: www.wulaoer.org 网站年来: 27 8
这就是函数的基本作用和用法,函数是在以后学习的过程中会频繁的用到,所以需要多了解一下基本知识点。函数详细的划分了匿名函数,迭代函数,递归函数等等,后面会针对函数的划分详细在单独说明。这里就先把函数的基础介绍到这了。
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏