函数这个概念也许承载了太多的信息量,不过别担心。只要坚持做这些练习,对照上个练习中的检查点检查一遍这次的联系,你最终会明白这些内容的。

有一个你可能没有注意到的细节,我们现在强调一下:函数里边的变量和脚本里边的变量之间是没有连接的。下面的这个练习可以让你对这一点有更多的思考:# -*- coding:utf-8 -*-

def cheese_and_crackers(cheese_count,boxes_of_crackers): #创建奶酪和咸饼干函数,参数为奶酪数量,咸饼干盒数

print"You have %d cheese!" % cheese_count

print "You have %d boxes of crackers!" % boxes_of_crackers

print "Man that's enough for a party!"

print "Get a blanket."

print "We can just give the function number directly:"  #输出

cheese_and_crackers(20,30)  #函数的参数值

print "OR,we can use variable from our script"  #输出

amount_of_cheese = 10  #10赋值给amount_of_cheese

amount_of_crackers = 50  #50赋值给amount_of_crackers

cheese_and_crackers(amount_of_cheese,amount_of_crackers) #函数的参数

print "We can even do math inside too:" #输出

cheese_and_crackers(10+20,5+6)  #函数的参数分别为(30,11)

print "And we can combine the two, variables and math:" #输出内容

cheese_and_crackers(amount_of_cheese+100,amount_of_crackers+1000)  #amount_of_cheese值加100,amount_of_crackeres值加1000

通过这个练习,你看到我们给我们的函数 cheese_and_crackers 很多的参数,然后在函数里把它们打印出来。我们可以在函数里用变量名,我们可以在函数里做运算,我们甚至可以将变量和运算结合起来。

从一方面来说,函数的参数和我们的生成变量时用的 = 赋值符类似。事实上,如果一个物件你可以用 =将其命名,你通常也可以将其作为参数传递给一个函数

结果:# -*- coding:utf-8 -*-

def cheese_and_crackers(cheese_count,boxes_of_crackers): #创建奶酪和咸饼干函数,参数为奶酪数量,咸饼干盒数

print"You have %d cheese!" % cheese_count

print "You have %d boxes of crackers!" % boxes_of_crackers

print "Man that's enough for a party!"

print "Get a blanket."

print "We can just give the function number directly:"

cheese_and_crackers(20,30)

print "OR,we can use variable from our script"

amount_of_cheese = 10

amount_of_crackers = 50

cheese_and_crackers(amount_of_cheese,amount_of_crackers)

print "We can even do math inside too:"

cheese_and_crackers(10+20,5+6)

print "And we can combine the two, variables and math:"

cheese_and_crackers(amount_of_cheese+100,amount_of_crackers+1000)

加分习题

1. 倒着将脚本读完,在每一行上面添加一行注解,说明这行的作用。

2. 从最后一行开始,倒着阅读每一行,读出所有的重要字符来。

3. 自己编至少一个函数出来,然后用 10 种方法运行这个函数。# -*- coding:utf-8 -*-

def people_count(girl,boy):

print "有%s个女孩" % girl

print "有%s个男孩" % boy

print "总共有%s个人" % (girl+boy)

print "谢谢"

print "第一种方法"

people_count('38','48')

print "第二种方法"

girl_count = 10

boy_count = 20

people_count(girl_count,boy_count)

print "第三种方法"

people_count(88+1,99+1)

print "第四种方法"

people_count(girl_count+1,boy_count+1)

print "第五种方法"

girl = 11

boy = 22

people_count(girl,boy)

常见问题回答

怎么能有 10 种不同的方式运行一个函数呢?

信不信由你,理论上有无穷多种方法运行一个函数。在这里,试着按我在 8-12 行的方式运行,当

然你可以随意创新。

有没有办法可以分析这个函数的功能以便我理解?

有很多方法,最简单的一个是在每一行代码上面添加注解,另外一个方法是大声朗读代码,还有一个方法就是把代码打印出来,用笔画一些图示,并写一些注解说明。

怎样处理用户输入的数字,例如我想让用户输入克力架和奶酪的数量?

记住使用 int() 把 raw_input() 的值转为整数。

第 13 和 14 行创建的变量会不会改变函数中的变量?

不会。这些变量是在函数之外的,当它们被传递到函数中以后,函数会为这些变量创建一些临时的版本,当函数运行结束后,这些临时变量就被丢弃了,一切又回到了从前。继续阅读本书,后面你会更清楚这些概念。

把全局变量(如 13 、 14 行)的名称和函数变量的名称取成一样的,这样做是不是不好?

是的,因为这样的话你就无法确定哪个是哪个了。有时候你可能会必须使用同一个变量名,有时候你会不小心使用了一样的变量名,不论如何,只要有可能,还是尽量避免变量名称相同吧。

第 12-19 行是不是覆写了函数 cheese_and_crackers?

没有,完全没有。这只是函数调用而已。基本上就是这里会跳转到函数的第一行,然后等函数运行完后再回到先前的位置。并没有把原函数怎么地。

函数的参数个数有限制吗?

取决于 Python 的版本和你的操作系统,不过就算有限,限值也是很大的。实际应用中, 5 个参数

就不少了,再多就会让人头疼了。

可以在函数中调用函数吗?

可以。后面的习题中你会用这一技巧写一个游戏。

python函数作为参数例题_笨办法学Python 习题 19: 函数和变量相关推荐

  1. 笨办法学python pdf 第三版_笨办法学python第三版

    笨办法学python第三版pdf电子书是一本Python学习参考书,是美国程序员Zed A.Shaw编著,通过简单通俗的方法,结合内部的集体,让程序员学懂python,适用于初级学习python编程的 ...

  2. python转义例题_笨办法学Python记录--习题37 异常,lambda,yield,转义序列

    为什么使用异常 错误处理.事件通知.特殊情况处理.退出时的行为.不正常的程序流程. 简单的示例 在没有任何定义x变量的时候: print x print 1 将会抛出NameError异常: Name ...

  3. 笨办法学python第五版_笨办法学python PDF下载|笨办法学python第五版 电子版附目录_最火软件站...

    笨办法学Python第五版PDF电子版是专门为初学Python的朋友准备的一款电子图书资料,可以帮助你更好的学习Python编程知识,该电子书每章节都附带了常见问题回答以及练习题目,能够帮助学习者快速 ...

  4. 笨办法学python在线阅读_笨办法学python全集.pdf

    TableofContents 笨办法学Python 1.1 序言 1.2 前言 1.3 简介 1.4 练习0.安装和准备 1.5 练习1.第一个程序 1.6 练习2.注释和井号"#&quo ...

  5. python必看经典书籍:笨办法学python

    书评: 感谢作者和译者,很好的手把手的一个新手编程体验书,消除编程物质恐惧感,在线看的liam huang翻译的版,不确定看的是第几版,有一些加分题没有做,第五十题黑手党外星人飞船做起来有点压力,准备 ...

  6. python从属关系编号_笨办法学Python 习题 42: 对象、类、以及从属关系

    有一个重要的概念你需要弄明白,那就是"类 (class)" 和"对象 (object)" 的区别.问题在于, class 和object 并没有真正的不同.它们 ...

  7. 笨办法学python第五版_笨办法学Python(五)

    习题 5: 更多的变量和打印 我们现在要键入更多的变量并且把它们打印出来.这次我们将使用一个叫"格式化字符串(format string)"的东西. 每一次你使用 " 把 ...

  8. 笨办法学python3进阶篇下载_笨办法学Python 3 进阶篇

    书名:"笨办法"学Python 3:进阶篇 定价:59.0 ISBN:9787115505392 作者: 泽德·A. 肖 版次:第1版 出版时间:2020-06 内容提要: 本书是 ...

  9. python描述器 有限状态机_笨办法学 Python · 续 练习 30:有限状态机

    练习 30:有限状态机 每当你阅读一本关于解析的书,都有一个可怕的章节,关于有限状态机(FSM).他们对"边"和"节点"进行了详细的分析,每个可能的" ...

最新文章

  1. Spring MVC 基于AnnotationFormatterFactory接口实现自定义的规则
  2. mysql.ini环境配置_MySQL配置文件mysql.ini参数详解
  3. mysql 连接编码_连接Mysql编码问题
  4. Dstream如何应用RDD特有算子?
  5. cad刷新快捷键_47个CAD快捷键+50个技巧,了解这些CAD操作,你就偷着乐吧
  6. 一个基于.NET Core3.1的开源项目帮你彻底搞懂WPF框架Prism
  7. python拟合优度R^2
  8. QT设置选中的文字加下划线
  9. 由内而外的云计算之路 英特尔现身说法
  10. Microsoft edge浏览器下载速度太慢怎么办?今天我手把手教你提速
  11. node.js的卸载与安装
  12. SIP与P2P的技术携手创造奇迹?
  13. configure: error: C++ preprocessor /lib/cpp fails sanity check
  14. ASP.NET MVC预览4-使用Ajax和Ajax.Form
  15. emac接口与phy交互
  16. wireshark手机抓包分析(一)
  17. http协议中,get和post的区别
  18. 基于PyTorch深度学习无人机遥感影像目标检测、地物分类及语义分割
  19. 洛谷----P6183 [USACO10MAR] The Rock Game S
  20. 人像抠图 + OpenGL ES

热门文章

  1. 程序员在35-40岁之后真的就是死胡同吗?
  2. PHP的内存与CPU获取
  3. mysql备份命令和还原命令_mysql数据备份和还原命令
  4. fortify安装_Rjava的安装
  5. PHP各种数据类型转换
  6. thinkphp5 获取当前的域名
  7. git ssh配置完后拉取代码_Git中SSH key配置秘钥生成和如何拉取代码
  8. php提交后清楚表单缓存,PHP提交表单后如何控制缓存 | 学步园
  9. 苹果菠萝笔html5游戏在线玩,苹果菠萝笔游戏
  10. Linux多进程拷贝fork,浅析linux中fork函数