一、条件循环和其他语句
1、print和import的更多信息。
1.1、使用逗号输出 //print() 打印多个表达式是可行的,用逗号隔开。
在脚本中,两个print语句想在一行输出,那么第一个结束的位置添加一个逗号(,)。注意只有脚本中有效,交互式对话框是看不到效果的。
1.2、想把某件事做另一件事导入。
从模块中导入函数的时候:
import somemodule 或者 from somemodule import somefunction, anotherfunction,yetanotherfunction 或者 from somedule import *只有确定自己想要导入给模块的功能的时候,才能使用最后一种。
如果有两个模块有相同的函数名,可以在语句末尾加上 as ,给该句或者整个模块提供模板
2、赋值魔法
2.1、序列解包(sequence unpacking)或可选代解包 //将多个值得序列解开,然后放到变量的序列中。
当方法或者函数返回的是元组或其他序列或其他可迭代对象尤其有用。它允许寒素返回一个以上的值,并打包成元组,然后通过赋值语句很容易访问。 注意 解包序列中的元素数量必须和放置在赋值号=左边的变量数量完全一致。不然会报错。(在3.0版本中,赋值好左边的变化可以少于右边,在其中的变量后面加星号(*),可以把多个变量赋值给这个带星号的变量(也就是赋值成列表[1,2,3])。)
2.2、链式赋值 //将同一个值复制给多个变量。x=y=somefunction()。 这里 x=y=somefuntion() 不等于 x=somefuntion(),y=somefunction()
2.3、增量赋值 // x=x+1; (augment assignment)增量赋值x +=1;对于 *、/、%等标准运算符都有用。
3、语句块:缩排的乐趣
在语句块中条件为真(条件语句)是执行或者执行多次(循环语句)的一组语句。在代码前放置空格来缩进的语句即可创建语句块。注意推荐的语句块是4个空格。
4、条件和条件语句
4.1、布尔变量的作用
真值也叫布尔值:在布尔表达式中会被解释器看作假的: False None 0 "" () {} {} //虽然这些都为假,但是他们却不相等。其他的一切都为真。
标准的真值是 True和False,但是一些语言,如c和python2.3,把0和1看作真值。事实上True和False只不过是0和1华丽的说法。看起来不一样,作用相同。
4.2、条件执行和if语句
if else elif
4.3、比较运算符
x==y x<y x>y x>=y x<=y x!=y //基本判断。注意:x不等于y.也可是使用x <>y,但是不推荐这么写。
x is y //x和y是同一个对象
x is not y //x和y不是同一个对象
x in y //x是y容器(例如:序列)的成员
x not in y //x不是是y容器(例如:序列)的成员
4.3.1、is:同一性运算符
使用 == 运算符判定两个对象是否相等,使用is判定两者是否等同(同一个对象)。注意:请不要,使用is运算符比较类似数值和字符串这类不可变值。因python内部操作这些对象的方式原因,结果不可预测。
4.4、断言
if 语句有一个非常优秀的近亲 断言(assert)。断言,确保程序中的某一个语句一定为真,如果为假,主动抛出异常。(在检查和调试某段代码的时候非常有用。)
可以添加字符串,用来解释断言。
5、循环
while for 注意:能使用for的地方尽量不要使用while。
5.1、遍历字典
5.2、一些迭代工具
1、并行迭代
程序可以同时迭代两个序列。zip函数可以用来进行并行迭代。zip函数的功能:把两个压缩在一起,然后返回一个元组列表。
2、编号迭代
有时候迭代序列中项同时,还想知道项的索引。
3、反转和排序迭代
两个很有用的寒素:reversed()反转和sorted()排序
注意reversed()函数返回的是序列,不能进行索引,分片等操作,例子中已经给出需要先转换成list。
5.3、跳出循环
break //终止循环 其中range(),前两个参数是开始和结束,第三个参数是间隔给元素,如果是负数倒序。
continue //结束本次循环,接这继续下个循环。
while True/break习语 // while True部分实现了永远不停的循环,而if break实现了有满足条件结束循环。
5.4、循环中的else子句
因为100以内有最大平方根的数字是81,但是这里只有100-82所以到程序跑完循环也没执行break语句,这个时候执行了else子句。在while和for循环中使用continue、break的语句,break语句。
6、列表推导式,-轻量级循环
列表推导式(list comprehension)是利用其他列表创建新列表(类似数学术语中的集合推导式)的一种方式。
得到名字首字母相同的男孩女孩的新集合。但是上述方法不高效,龟叔推荐这样列表推导式不用尝试所有男女的组合,只要检查字典的首字母即可。
7、三人行
介绍三个语句,pass、del、exec。
1、pass 当子句什么也不做的时候,如果空着程序会报错的。这个时候可以使用pass if name=='zhang' #子句没想好 pass即可,接着写下面的语句。
2、del del 删除的只是名称,不能删除值,python有垃圾回收机制,在没有使用的时候自动删除。
3、使用 exec和eval 执行和求值字符串
有时候需要python动态创建语句和表达式。这些未知的语句和表达式,近视“黑魔法”使用要十分的慎重。因可能造成非常严重的安全漏洞。
1、exec //执行字符串的语句。python3.0版本以后成为函数。
简单的执行exec语句绝对不是好事,通常给它指定命名空间。这样简单的执行就会出现问题。
1.1、指定命名空间: in <scope>.其中的<scope>就是起放置代码字符串命名空间的作用的字典。
2、eval(用于求值)是类似exec的内置函数。exec语句会执行一系列的Python语句,而eval会计算python表达式,并返回结果值。