这节课会讲一些之前的课中未提到的关于Python的知识。
print
选项
到目前为止,我们学到的使用打印的方法只有一种,print()
,该方程在同一时间打印出多个东西,用空格将它们分开。事实上,打印还有一些关键字参数,关键字参数可以让你按照自己的需求来做一些变化。
- 若是想把空格分隔符换成其他的字符串
S
,那么就增加sep = «S»
。 - 若要将"行末"字符更换成字符串
S
,那么就增加end = «S»
。
下面的几个例子可以用来简单的向大家展示一下关键字参数。
这些关键字参数必须放在参数列表的最后,否则错误就会出现。如果两个都使用,它们可以以任何顺序排列。
有效变量/函数名
- 名字可以包括字母,数字,和下划线(
_
)字符。 - 每一个名字的第一个字符必须是字母。
- Python能够区分大小写字母。
因此,my_3rd_int
是一个合格的变量名字,但是3rd_int
不是。
递减for
循环& 其他的一些增量
我们曾经展示了for
循环是如何通过递增数字重复的:
通常,必须要通过递减数字(最大到最小)写一个for
循环。为了实现它,我们需要调用一个带有实参名为“步”(step)的range。
想一下,你会注意到range(0, 5)
和range(0, 5, 1)
是一样的:默认增量是1。不管哪一种形式,要注意range(start, stop, step)
会运行到stop
值之前停止。更多信息,可以查看Python manual。
同样,你可以使用string[x:y:2]
来得到由第x, x+2, x+4, ...
位字符组成的子链,或用string [ y: x: -1]来获取string (where y>x)中的一部分颠倒的字符串。
对于一个for
循环,另一种实现递减范围的方法是reversed(range(x, y))
,也就是从y-1
递减到x
。
编写更短的代码
Python里面有几个方式来编写更短的代码;我们在这里讲解几个。
在这个网站上,我们不会常用这些方式,因为有时这些代码更难让人理解。 |
分配运算符
Python里面"x += 1
"意味着"向x
加一"。所以它等同于"x = x + 1
",如下:
同样,也有整数除法(//=
),模(%=
),以及幂(**=
)的运算符。
内联块
我们已经见过在缩进模块代码indented “block”后的一些语句:for, if, else, elif, while, and def,比如:
if x==y: «block» #indented, multiline如果
«block»
只有一行,Python允许另一种代码:
if x==y: «block» #single line下面是一个例子:
但是有一个限制:有冒号的复合的代码块(if
, for
等)不能被用作内联块。比如,if 2>1: if 4>3: print()
会导致句法错误。
多赋值
Python允许将两个赋值语句结合成一个:
现在我们可以只用一行解决swapping exercise!
比较链接
Python可以将几个比较合并成一个:
v1 c1 v2 c2 v3 ...
,其中v
是值,c
是比较,与(v1 c1 v2) and (v2 c2 v3) and...
一样。
[:]
和range()
的默认值
当使用子链运算符[:]
时,你可以忽略开始或/和结尾(对于序列来说也是正确的,我们会在下一节课看到)。第一位索引的默认值是0
(字符串的开始),最后一位索引的默认值是字符串的长度。同样,range(n)
是range(0, n)
的缩写。
None
有一些方程把返还一个值作为主效应,比如abs(x)
。但是另一些方程的作用更有价
值,比如print ( ),仍然返回‘默认’值None:
在这里None
是Python的一个特殊值,它作为一个通用的占位符。如果你下令type(None),你会发现None
有它自己的类型,NoneType
。让我们来看看什么是类型的类型:
在下一个练习中,我们会让你通过使用type 和print 来追踪一个很长的指令的结果。
print(type(print(type(type(print(print()))))))
的结果由4行组成。进行调整,让其变成正确的顺序。- «blank line»
- <class 'NoneType'>
- None
- <class 'type'>
这是目前为止所有的贴士。你现在可以进行下一课的学习啦!