循环与使用场景 while
解决问题的基本思维模式
多用于递归,其他场景,推荐使用for循环。
while condition:
code1
def func(condition):
code2
return condition
func(condition)
else: # 类比if else
print("EOF")
for 与 for else 循环
使用场景
主要用来遍历/循环 序列、集合、字典
a = [[1, 2, 3], [2, 3, 4]]
for x in a:
for y in x:
if x == 4:
break
print(y, end="")
else:
print("end") # 当for`正常`退出,将执行else
以上代码,内部for 的 break 不影响 外部的 for 循环退出
break continue关键字
for 与 range
for i in range(0, 10, 2):
循环重复十次。
for i in range(10, 0, -2): 递减数列
切片:a = [1, 2, 3, 4, 5]
a[4::-1] a[-1:-5:-1]
已经具备用python解决基本问题的能力
新篇章
写出功能代码并不难,难在写出高性能,封装性良好,可复用性高。
逻辑思维能力 -> 抽象能力
代码美与不美
python功能的组织结构:包、模块、类
包:简单理解为文件夹
模块:简单理解成单文件
类:
模块下不仅可以写类、也可以写函数和变量。业务逻辑
类下属函数、变量: 属于类本身的特性,不属于python组织结构
python包与模块的名字
不同包下不同名字的模块,通过模块的命名空间,即包的名字区分。
python包下可以包含子包、模块。
python包文件夹下需要包含init.py文件,init模块名就是包名
模块的导入
python是解释型语言,import需要遵循解析顺序。符合思维逻辑。
py经过编译过后生成pycache文件夹 内含pyc文件,能提升python运行效率.
from import 导入变量
通过from module import constance 的形式可以导入变量或者常量,import后只能跟常量名,不能加模块名,否则无法导入。constance用 * 代替表示导入所有变量或者函数-> 不推荐常用 -> 书写函数all =["str", "str2"], 模块文件开头定义,代表 * 能引入的所有变量。模块内置属性
__init__.py的用法
查找:pycharm显示和隐藏文件夹
from module import constance
导入变量可采用逗号分隔, 导入模块逗号分隔好像不符合规范。
换行:加上\反斜杠 -- 不推荐使用 ->推荐加上括号
当一个包被导入的时候,__init__.py文件会被首先自动被执行,导入包下的模块或者变量、都会执行. -> 可以导入一些公共包,或者公共参数?
但是如果只是导入包 (import pack),除非在init中导入,否则无法使用包下的模块。可以加上__all__属性,from pack import * 将导入all定义的所有模块,不定义导入所有模块。
__init__作用:批量导入模块
# t 下的__init__
import sys
import ..
# 其他文件
import t
print(t.sys.path)
包与模块的几个常见错误
包和模块不会被重复导入! python机制。->入口文件的概念。
-> 即使导入的多个文件看似都导入了某个模块,但是模块实际上只初始化了一次!!!可以编写小型代码进行测试。
要避免循环导入 a 导入 b, b导入a,或者多个模块的循环引用。
一旦导入一个模块,就会执行这个模块的所有代码。
网友评论