05-python中函数的使用
2018-06-18 01:48:25来源:未知 阅读 ()
函数:就是让程序模块化,把具有独立功能的代码块当成一个整体封装成一个函数
首先打印一个佛主看看:
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(" 不见满街漂亮妹,哪个归得程序员?")
那么这个时候我们想打印很多遍佛主的话,总不能一直复制粘贴,所以我们需要定义一个打印佛主函数:
def print_fozhu(): #首先在开始定义打印佛主的函数,函数名为print_fozhu 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(" 不见满街漂亮妹,哪个归得程序员?") print_fozhu() #然后在下面调用print_fozhu函数 print_fozhu()
带有参数的函数
首先我们来定义一个函数来计算两个数的总和:
def sum(): #表示定义一个函数,函数名为sum a = 20 b = 30 sum = a+b print("%d+%d=%d"%(a,b,sum)) sum() #在下面调动这个函数
这样会不会有点太死板了,我们希望能够从键盘输入a和b去获取这两个数的总和,那么需要怎么做呢?
def sum(a,b): #在上面定义搞一个函数,函数名为sum,并且携带两个参数a,b,用来接收的叫做形参 sum = a+b print("%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的作用:
def get_wendu(): #这里定义一个获取温度的函数get_wendu wendu = 22 #定义一个wendu变量 print("当前的室温是%d"%wendu) def get_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 <module>
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变量
让我们来看一下修改后的代码:
def get_wendu(): wendu = 22 print("当前的室温是%d"%wendu) return wendu #在这里我们使用了return函数,那么意味着我们可以把这个值、这个结果返回到调用的地方 def get_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]: def test(): #定义一个test函数 ...: a = 11 #变量a ...: b = 22 #变量b ...: return a ...: return b ...: In [2]: a = test() #调用test函数,并把它的结果赋值给a In [3]: a Out[3]: 11 In [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]: def test(): ...: a = 11 ...: b = 22 ...: return a,b ...: In [7]: a,b = test() In [8]: print(a) 11 In [9]: print(b) 22
函数的类型
函数可以根据有没有参数,有没有返回值,可以相互结合
(1)无参数,无返回值
(2)无参数,有返回值
(3)有参数,无返回值
(4)有参数,有返回值
函数的嵌套使用
指在一个函数被调用的过程里,又调用了一个函数,举例说明一下:
def test1(): pass def test2(): print("-----2-1-----") print("-----2-2-----") def test3(): print("-----3-1-----") test2() #在函数里面调用test2函数 print("-----3-2-----") test3() #调用test3函数
程序运行结果如下:
-----3-1-----
-----2-1-----
-----2-2-----
-----3-2----
def print_line(): #定义一个函数,打印40个* print("*"*40) def print_5_lines(): #定义一个函数,打印5行 i = 0 while i<5: print_line() #又签到调用了print_line函数 i += 1 print_5_lines()
程序运行结果如下:
root@test:~/codes# python3 04-函数的嵌套调用2.py **************************************** **************************************** **************************************** **************************************** ***************************************
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Django项目中使用qq第三方登录。 2019-08-13
- Python连载30-多线程之进程&线程&线程使用 2019-08-13
- Python学习日记(十) 生成器和迭代器 2019-08-13
- fetchone函数和fetchall函数返回值的区别 2019-08-13
- 【Python】语法基础 | 开始使用Python 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash