3.9 小结
函数是代码逻辑分组的主要方式。因为函数中的变凉存在于它们自己的局部作用域内,所以一个函数中的代码不能直接影响其他函数中变量的值,对于调试代码是很有帮助的。
函数是很好的工具,帮助你组织代码。你可以认为他们是黑盒。他们以参数形式输入,以返回值形式产生输出。他们内部的代码不会影响其他函数中的变量。
3.10 习题
注:删除线文字为我答题时对答案,下面为题目对应参考答案。
-
为什么在程序中加入函数会有好处?
减少复制步骤,可以组织代码,进行逻辑分组。
函数减少了重复的代码。这让程序更短,更容易阅读,更容易修改。 -
函数中的代码在何时执行:在函数定义时还是在函数被调用时。
函数调用时。 -
什么语句创建一个函数
def 函数名(参数名称)
def 语句创建(或定义了)一个函数。 -
一个函数和一次函数调用有什么区别?
函数:对目标问题的一个逻辑集合
函数调用:解决目标问题的动态过程。
函数包含 def 语句 和 def 子句 中的代码。函数调用让程序执行转到函数内,函数调用求值为该函数的返回值。 -
Python 程序中有多少全局作用域?多少局部作用域?
全局作用域:1个
局部作用域:有几个函数就有几个局部作用域
在调用函数时,创建了一个全局函数和一个局部作用域。 -
当函数调用返回时,局部作用域中的变量发生了什么?
局部变量被销毁
函数的返回时,局部作用域销毁,其中所有的变量被遗忘了。 -
什么是返回值,返回值可以作为函数的一部分吗?
函数执行的目标值,可以。
返回值就是函数调用求值的结果。像所有值一样,返回值可以作为表达式的一部分。 -
如果函数没有返回语句,对它调用的返回值是什么?
None
如果函数没有 return语句,它的返回值就是 None。 -
如何强制函数中的一个变量指的是全局变量?
global 变量名
Global 语句强制函数中的一个变量引用该全局变量。 -
None 的数据类型是什么?
number
None 的数据类型是 NoneType。 -
import areallyourpetsnamederic 语句做了什么?
引入 ** 模块
import 语句导入了 areallyourpetsnamederic 模块(不是真正的 Python 模块 )。 -
如果在名为 spam 的模块中,有一个名为bancon()的函数,在引入 spam 后如何调用它?
1)若为 import spam
spam.bacon()
该函数可以用 spam.bacon()调用。 -
如何防止程序在遇到错误时崩溃
加入异常处理函数
将可能导致错误的代码行放在一个 try 子句中。 -
try 子句中发生了什么?except 子句发生了什么?
可能发生错误的语句
执行的输出
可能导致的错误放在 try 子句中。
发生错误时要执行的代码放在 except 子句中。
小练习
#3.4 关键字参数和 print()
print ('hello',end='')
print ('world')
print('dog','tag','cat',sep = ',')
def spam():
print (eggs)
spam()
eggs = 4
print(eggs)
#3.8 猜数字
import random
secretNumber = random.randint(1,20)
print('I am thinking of a number between 1 and 20')
#Ask the player to guess 6 times
for guessesTaken in range (1,7):
print ('take a guess')
guess = int(input())
if guess < secretNumber:
print('Your guess is too low')
elif guess > secretNumber:
print('Your guess is too high')
else:
break #This condition is the correct guess!
if guess == secretNumber:
print('Good job!You guessed my number in '+ str(guessesTaken) + ' guesses!')
else:
print('Nope. The number I was thinking of was ' + str(guessesNumber))
#3.11 collatz 序列
import sys
def collatz(number):
print(number)
if number == 1:
sys.exit()
elif number % 2 == 0:
collatz(number//2)
else :
collatz(3*number+1)
try:
num = int(input('Enter Number: '))
collatz(num)
except:
print('valueError')