python中用来占位的语句是_Python Tutorial 实践(3)

今天终于有时间继续推进Python Tutorial的进程了。

本文主要是对官方Python Tutorial的第4节内容进行的分析。第4节主要是对Python中的一些控流程制语句进行了基本的介绍。

Python的if语句和其它语言的意义类似,需要主要的是其采用elif来替代诸如C语言中的else if,这样设计的意图是啥?答案是为了避免过多的缩进,别忘了,Python是靠缩进来划分语句块的。

之后是for语句。Python的for语句可能与一般的高级语言for语句有所不同,其形式为for var in object : 。每一次循环就是遍历object中的一项。如果你有过一些脚本语言编程的经验,对此应该并不陌生。

对于数字的迭代,Python中的range()函数就会起到很大的功效。range()函数可接受1、2或3个参数。如果是一个参数则表示从0至该参数(不包括该参数)的所有数字;若是两个参数则表示这两个参数的数值之间(不包括第二个参数)的所有数字;若是三个参数,则表示从第一个参数的值开始至第二个参数,每相差第三个参数值的所有数字,其中第三个参数可以为负数,这时也就需要第一个参数比第二个参数大。任何不符合以上逻辑的都返回的是空。

接下来大家一起看一段代码:

>>> for n in range(2, 10):

... for x in range(2, n):

... if n % x == 0:

... print n, 'equals', x, '*', n/x

... break

... else:

... # loop fell through without finding a factor

... print n, 'is a prime number'

...

2 is a prime number

3 is a prime number

4 equals 2 * 2

5 is a prime number

6 equals 2 * 3

7 is a prime number

8 equals 2 * 4

9 equals 3 * 3

这是一个查找2-10之前的素数的程序。这里的else字句属于谁呢?根据对齐情况,你就可以看出来,这里的else属于第一个for语句。也就是当内层循环从2至n-1走了完整一遍后,会执行else子句的内容,而如果if条件成立,则会执行break,从而跳出本次循环,也就不执行else子句。对于这点,你可以试着将else去掉,将最后一条print语句与第二个for对齐。这时你会发现,此时会在原有输出不是素数的语句后面,又多了一句 xis a prime number,这就是由于break跳出的是内层循环,所以显然其还会执行外层循环的其它语句,而如果加上else,则else是与内层的for绑定在一起的,相当于出现一个for else语句,所以当break跳出时,显然也就跳出了内层循环的全部,不会执行else语句。(关于以上的解释,如果大家认为不妥,或者有更好地理解方式,欢迎讨论)

当然continue就是结束当前这一次迭代,直接进行下一次迭代,并不是直接跳出本层。

Python中还有空语句pass。该语句不做任何事情,其可以在您还没想好做些什么时用来占位使用,以使你的程序在语法上符合规则。

接下来是有关函数定义的内容。def关键字用来定义函数,基本的介绍在本文中就不多说了,这里想说明一下几点:每当一个函数被调用时,其都会建立一个本地符号表,所有对变量的赋值都会存储在本地符号表中,Python中还有全局的符号表。当某个变量被引用后,其会首先查找本地符号表,之后是全局符号表,再之后是系统内建的名字。在一个函数内,虽然可以对全局变量进行引用,但是不能对一个全局变量直接赋值(除非是对在global语句中定义的变量进行赋值)。

Python中可以对函数名进行重命名,比如有一个函数名叫fib,若执行f = fib,则f也是一个函数,其意义和fib相同。

这里提一下函数和过程的区别。一般来说有返回值的我们认为是函数,否则是一个过程。那么如果我们在Python中定义了一个“没有”返回值的function,我们为什么还叫其函数呢?其实它并不是没有返回值,如果用户没有显式的定义返回值,Python会自动返回None。

关于函数的参数,Python中可以在函数定义时为参数指定默认值,这里也请大家注意一下几点:有默认值的参数只能出现在最后,即有默认值的参数前必须都是没有默认值的,不能两种形式混合在一起;指定的默认值只在定义函数的时候被计算一次,假如为函数指定的默认值是一个变量,那么如果这个变量在函数定义后被修改,也不影响在定义时指定的默认值。需要注意的是,第二点在默认值为一些经常改变的对象是不一样的,也就是对于诸如列表、字典等这样的对象,举个例子:

def f(a, L=[]):

L.append(a)

return L

print f(1)

print f(2)

print f(3)

其输出的结果为:

[1]

[1, 2]

[1, 2, 3]

还有关于参数的很多调用方式:用*操作符可以解包List型变量作为参数;用**操作符可以解包子典型变量作为参数。另外还有Lambda形式的。这里不具体说明了,有兴趣的可以查看相关资料,都比较好理解。

第4节最后介绍了有关文档字符串的内容。在定义一个函数时,我们可以在def语句的下方,在成对的”””内写一些话,来作为对这个函数的一些说明,当我们想查看某个函数的这个说明时,只需执行以下语句:print my_function.__doc__。注意:doc左右是各有两个下划线字符。

OK,以上就是Python Tutorial中第4节的主要内容,欢迎大家积极批评指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值