💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 5.1 print 和 import 的更多信息 ## 5.1.1 使用逗号输出 ![](https://box.kancloud.cn/d71a7ae20f461854cf1b5b12f2102605_399x233.png) ## 5.1.2 把某件事作为另一件事导入 ![](https://box.kancloud.cn/f821720a7be620a7071bbb0cbfd9d6d3_321x108.png) # 5.2 赋值魔法 ## 5.2.1 序列解包 ![](https://box.kancloud.cn/94174468c8e5846b0328334ef5db41c8_182x90.png) ![](https://box.kancloud.cn/2116db6be6ed8221a07f62e079ceb069_469x178.png) ![](https://box.kancloud.cn/c38770a331b712888b8fa05ce8874402_386x114.png) ## 5.5.2 链式赋值   链式赋值(chained assignment)是将同一个值赋给多个变量的捷径。 ~~~ x = y = somefunction() x = somefunction() x = y x = somefunction() y = somefunction() # 注上下两个赋值不一定是等价的 ~~~ ## 5.2.3 增量赋值 ![](https://box.kancloud.cn/e8c9fad7babf6980a17d9f1c6931215b_139x81.png) # 5.3 语句块:缩排的乐趣 ![](https://box.kancloud.cn/70151bcf944893632bc647a7cd0ab98d_235x174.png) # 5.4 条件和条件语句 ## 5.4.1 这就是布尔变量的作用 ![](https://box.kancloud.cn/31958655e9cc548126d543a08da655bb_331x262.png) ## 5.4.2 条件执行和if语句 ![](https://box.kancloud.cn/8c20abd37b569fb1302e72090957b24e_353x96.png) ## 5.4.3 else子句 ![](https://box.kancloud.cn/59800572b6bfebd85af72f42392154f1_365x116.png) ## 5.4.4 elif子句 ![](https://box.kancloud.cn/6a3799e1a895a2d664b9ac208f68a849_304x139.png) ## 5.4.5 嵌套代码块 ![](https://box.kancloud.cn/e53c5e07bc9d3f4ffdd83c55f068d883_383x178.png) ## 5.4.6 更复杂的条件 1.比较运算符 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 容器(例如,序列)的成员 2.相等运算符 ![](https://box.kancloud.cn/0b2fd4f82954d6eff194a24523412d17_319x121.png) 3.is:同一性运算符 ![](https://box.kancloud.cn/e82ff8cc4d3045ba5e5868ec0eff296e_211x138.png) ![](https://box.kancloud.cn/060fb52d667d6e98eff9876b3bc90836_161x157.png) 4.in:成员资格运算符 ![](https://box.kancloud.cn/bba95e8bb07d7aed971a37535c4d5913_456x120.png) 5.字符串和序列比较 ![](https://box.kancloud.cn/de8c27f41294c0324387cbbc6e87018a_326x119.png) 6.布尔运算符 ![](https://box.kancloud.cn/9b7d3f516519c17953dd805bf80d4d47_467x281.png) ## 5.4.7 断言(assert) ![](https://box.kancloud.cn/fe7042c574abad3ee1acd631e3a16f76_452x183.png) # 5.5 循环 ## 5.5.1 while循环 ![](https://box.kancloud.cn/16aa31285dab0a626c4ac2a9e7e720ba_259x135.png) ## 5.5.2 for循环 ![](https://box.kancloud.cn/1b62586753738453efd01b9cd1ae0af6_430x422.png) ## 5.5.3 循环遍历字典元素 ![](https://box.kancloud.cn/bc3f9e4f2da3ca8bcf977b8e53bd0f10_369x205.png) ## 5.5.4 一些迭代工具 1.并行迭代 ![](https://box.kancloud.cn/aea466cf7f5ceb4a6e1459bbc29b39ed_497x326.png) 2.编号迭代   enumerate(strings):这个函数可以在提供索引的地方迭代索引-值对。 3.翻转和排序迭代   reversed 和 sorted。它们同列表 reverse 和 sort 方法类似。 ![](https://box.kancloud.cn/4b99f31f49b3bbee29ef2a7a15c89809_546x123.png) ## 5.5.5 跳出循环 1.break ![](https://box.kancloud.cn/2dd46c76fa9d4c4868080bd286013c45_295x205.png) 2.continue 3. while True/break 习语 ## 5.5.6 循环中else子句   当在循环内使用break 语句时,通常是因为‘找到’了某物或者因为某事“发生”了。在跳出时做一些事情是很简单的(比如print n),但是有些时候想要在没有跳出之前做些事情。那么怎么判断呢?可以使用布尔变量,在循环前设定为False,跳出后设定为True。然后再使用if语句查看 循环是否跳出了: ~~~ borke_out = False for x in seq: do_somthing(x) if condition(x): broke_out = True break do_something_else(x) if not broke_out: print "I didn't break out!" ~~~   上面方法太复杂了,换成: ![](https://box.kancloud.cn/600417ecd2be53ed70b4905e30b40cda_289x147.png) # 5.6 列表推导式----轻量级循环   列表推导式(list comprehension)是利用其它列表创建新列表。 ![](https://box.kancloud.cn/386213e22574a7b00bcca9275d35ac80_775x203.png) # 5.7 三人行   pass、del 和 exec ## 5.71 什么都没发生   有的时候,程序什么事情都不用做。这种情况不多,但是一旦出现,就应该让 pass 语句出马。 ![](https://box.kancloud.cn/345ef7b612bf57e3096fd4e0f1652c6d_289x101.png) ## 5.7.2 使用 del 删除 ![](https://box.kancloud.cn/7fad53df9a58e400cc4c305def514ce9_600x385.png) ## 5.7.3 使用 exec 和 eval 执行和求值字符串   有些时候可能会需要动态地创造Python代码,然后将其作为语句执行或作为表达式计算,这可能近似于“黑暗魔法”----在此之前,一定要慎之又慎,仔细考虑。 1.exec   执行一个字符串的语句 ![](https://box.kancloud.cn/1b24878e51ce1b6c2aba880733d8c07d_592x534.png) ![](https://box.kancloud.cn/87b379e0468969daa7b2b60da0e915ef_596x586.png)   潜在的破坏性代码并不会覆盖sqrt函数,原来的函数能正常工作,而通过exec赋值的变量sqrt只在它的作用域内有效。 ![](https://box.kancloud.cn/46fc17bb5fb614f93f43584af61586d7_596x283.png)   注意,如果需要将scope 打印出来的话,会看到其中包含很多东西,因为内建的 __builtins__ 字典自动包含所有的内建函数和值。 2.eval   eval(用于“求值”)是类似于exec的内建函数。exec 语句会执行一系列 Python 语句,而 eval 会计算 Python 表达式(以字符串形式书写),并且返回结果值,(exec 语句并不返回任何对象,因为它本身就是语句) ![](https://box.kancloud.cn/9d939fd2ffcc4132bae9573e07ad207e_479x195.png) ![](https://box.kancloud.cn/8b96aba62b2d212251abbbccb15af890_407x215.png)   eval(raw_input) 《===》 input() # 5.8 总结 * chr(n):当传入序号n时,返回n所代表的包含一个字符的字符串,(0=< n < 256) * eval(source[, globals[, locals]]):将字符串作为表达式计算,并且返回值 * enumerate(seq):产生用于迭代的(索引,值)对 * ord(c):返回单字符字符串的int值 * range([start,] stop[, step]):创建整数的列表 * reversed(seq):产生seq中值的反向版本,用于迭代 * sorted(seq[, cmp][, key][, reverse]):返回seq中值排序后的列表 * xrange([start,] stop[, step]):创造xrange对象用于迭代 * zip(seq1, seq2...):创造用于并行迭代的新序列