读书笔记:
1.函数定义的第一行叫做头部,剩下的叫做函数体。函数头部的末尾必须有一个冒号,函数体必须是相对函数头部有缩进的,距离行首相对于函数头要有四个空格的距离。函数体可以有任意长度的语句。
2.在函数定义完毕的结尾,必须输入一行空白行。定义函数会创建一个函数类的对象,有type函数。
3.
fruitful function: A function that returns a value.
有返回值函数:返回一个值作为返回值的函数。
module: A file that contains a collection of related functions and other definitions.
模块:包含一系列相关函数以及其他一些定义的文件。
dot notation: The syntax for calling a function in another module by specifying the module name followed by a dot (period) and the function name.
点符号:调用某一个模块的某一函数的语法形式,就是模块名后加一个点,也就是英文的句号,再加函数名。
练习1:
写一个名叫right_justify的函数,形式参数是名为s的字符串,将字符串打印,前面流出足够的空格,让字符串最后一个字幕在第70列显示。
>>> right_justify('monty') monty
提示:使用字符拼接和重复来实现。另外Python还提供了内置的名字叫做len的函数,可以返回一个字符串的长度,比如len('monty')的值就是5了。
练习2:
你可以把一个函数对象作为一个值赋给一个变量或者作为一个实际参数来传递给其他函数。比如,do_twice就是一个把其他函数对象当做参数的函数,它的功能是调用对象函数两次:
def do_twice(f):
f()
f()
下面是另一个例子,这里用了do_twice来调用一个名叫print_spam的函数两次。
def print_spam():
print('spam')
do_twice(print_spam)
1.把上面的例子写成脚本然后试一下。
2.修改一下do_twice这个函数,让它接收两个实际参数,一个是函数对象,一个是值,调用对象函数两次,并且赋这个值给对象函数作为实际参数。
3.把print_twice这个函数的定义复制到你的脚本里面,去本章开头找一下这个例子哈。
4.用修改过的这个do_twice来调用print_twice两次,用字符串『spam』传递过去作为实际参数。
5.定义一个新的函数,名字叫做do_four,使用一个函数对象和一个值作为实际参数,调用这个对象函数四次,传递这个值作过去为对象函数的一个形式参数。这个函数体内只要有两个语句就够了,而不是四个。
code:
def do_twice(f,x):
f(x)
f(x)
def do_four(f,x):
do_twice(f,x)
do_twice(f,x)
def print_spam(x):
print('spam'+x)
def print_twice(bruce):
print(bruce)
print(bruce)
do_twice(print_spam,'pppppp')
do_twice(print_twice,'spam')
do_four(print_spam,'pppppp')
answer:
spampppppp
spampppppp
spam
spam
spam
spam
spampppppp
spampppppp
spampppppp
spampppppp