跟着笨方法学python个教程学习,边学边做习题边记录。
新手学python-笨方法学python-ex18-命名、变量、代码、函数 - 学习记录
课程内容:
标题包含的内容够多的吧?
接下来我要教你“函数(function)”了!咚咚锵!说到函数,不一样的人会对它又不一样的理解和使用方法,不过我只会教你现在能用的最简单的使用方式。
函数可以做三样事情:
1.它们给代码片段命名,就跟“变量”给字符串和数字命名一样。
2.它们可以接受参数,就跟你的脚本接受argv一样
3.通过使用#1和#2,它们可以让你创建“微型脚本”或者“小命令”
你可以使用def新建函数。我将让你创建四个不同的函数,它们工作起来和你的脚本一样。然后我会演示给你各个函数之间的关系。
# this one is like your scripts with argv
def print_two(*args):
arg1, arg2 = args
print "arg1: %r, arg2: %r" % (arg1, arg2)
# ok, that *args is actually pointless, we can just do this
def print_two_again(arg1, arg2):
print "arg1: %r, arg2: %r" % (arg1, arg2)
# this is just take one argument
def print_one(arg1):
print "arg1: %r" % arg1
# this on takes no arguments
def print_none():
print "I got nothing."
print_two("Zed","Shaw")
print_two_again("Zed","Shaw")
print_one("First!")
print_none()
让我们把你的第一个函数print_two拆解一下,这个函数和你写脚本的方式差不多,因此你看上去应该会觉得比较眼熟:
1.首先我们告诉Python创建一个函数,我们使用到的命令是def,也就是“定义(define)”的意思。
2.紧接着def的是函数的名称。本例中它的名称是“print_two”,但是名字可以随便取,就叫“peanuts”也没关系。但最好函数的名称能够体现出函数的功能来。
3.然后我们告诉函数我们需要*args(asterisk args),这和脚本的argv非常相似,参数必须放在圆括号()中才能正常工作。
4.接着我们用冒号: 结束本行,然后开始下一行缩进。
5.冒号以下,使用4个空格缩进的行都是属于print_two这个函数的内容。其中第一行的作用是将参数解包,这和脚本参数解包的原理差不多。
6.为了演示它的工作原理,我们把解包后的每个参数都打印出来,这和我们在之前脚本练习中所作的类似。
函数print_two的问题是:它并不是创建函数最简单的方法。在Python函数中我们可以跳过整个参数解包的过程。直接使用()里边的名称作为变量名。这就是print_two_again实现的功能。
接下来的例子是print_one,它向你演示了函数如何接受单个参数。
最后一个例子是print_none,它向你演示了函数可以不接受任何参数。
Warning
如果你不太能看懂上面的内容也别气馁。后面我们还有更多的练习向你展示如何创建和使用函数。现在你只要把函数理解成“迷你脚本”就可以了。
运行上面的脚本:
$python ex18.py
arg1: 'Zed', arg2: 'Shaw'
arg1: 'Zed', arg2: 'Shaw'
arg1: 'First!'
I got nothin'.
$
你应该已经看出函数是怎样工作的了。注意到函数的用法和你以前见过的exists、open,以及别的“命令”有点类似了吧?
其实我只是为了让你理解才叫它们“命令”,它们的本质其实就是函数。也就是说,你也可以在自己的脚本中创建你自己的“命令”。
加分习题:
为自己写一个函数注意事项以供后续参考。你可以写在一个索引卡片上随时阅读,直到你记住所有的要点为止。注意事项如下:
函数定义是以 def 开始的吗?
函数名称是以字符和下划线 _ 组成的吗?
函数名称是不是紧跟着括号 ( ?
括号里是否包含参数?多个参数是否以逗号隔开?
参数名称是否有重复?(不能使用重复的参数名)
紧跟着参数的是不是括号和冒号 ): ?
紧跟着函数定义的代码是否使用了 4 个空格的缩进 (indent)?
函数结束的位置是否取消了缩进 (“dedent”)?
当你运行(或者说“使用 use”或者“调用 call”)一个函数时,记得检查下面的要点:
调运函数时是否使用了函数的名称?
函数名称是否紧跟着 ( ?
括号后有无参数?多个参数是否以逗号隔开?
函数是否以 ) 结尾?
按照这两份检查表里的内容检查你的练习,直到你不需要检查表为止。
最后,将下面这句话阅读几遍:
“‘运行函数(run)’、‘调用函数(call)’、和 ‘使用函数(use)’是同一个意思”
定义一个函数试试看:
def newsum(a,b):
print " a = %d , b = %d " % (a, b)
print "a + b = %d + %d = " %(a, b ), a+b
newsum(1,2)
运行该函数:
$ex18-0.py
a = 1 , b = 2
a + b = 1 + 2 = 3
$
至此,笨方法学Pythonex18-命名、变量、代码、函数这一小节的学习结束了。