### Python研究笔记知识点详解 #### 一、字符串与语句处理 1. **自然字符串**:在Python中,可以通过在字符串前添加`r`来创建一个原始字符串(raw string),这意味着字符串中的所有字符都不会被转义。例如,`r"\n"`将被视为`\`和`n`两个字符而不是换行符。 2. **分号分隔语句**:在Python中,虽然不常见,但可以在同一行内使用分号`;`来分隔多条语句。例如: ```python a = 1; b = 2 ``` 3. **续行字符**:当一条语句太长需要换行时,可以在句尾使用反斜杠`\`来明确表示该语句未结束,需要在下一行继续。另外,某些特定的语法结构如括号内的内容也可以自动跨行,无需使用续行字符。例如: ```python a = (1 + 2 + 3) ``` 4. **缩进风格**:Python非常重视代码的格式,特别是缩进。推荐使用2或4个空格作为缩进单位,并在整个项目中保持一致。不推荐使用制表符进行缩进,因为它可能导致代码格式上的混乱。 #### 二、运算符结合性 5. **算术运算符结合性**:算术运算符默认按照从左到右的方式结合,例如`a + b + c`等同于`(a + b) + c`。这种结合顺序有助于避免一些常见的编程错误。 6. **赋值运算符结合性**:赋值运算符(如`= `)默认从右向左结合,例如`a = b = c`等同于`a = (b = c)`。这使得可以方便地给多个变量赋相同的值。 #### 三、序列类型 7. **`range()`函数**:`range()`函数用于生成一个整数序列,例如`range(1, 5)`会生成一个包含1到4的序列,即`[1, 2, 3, 4]`。 8. **函数参数解析顺序**:在Python中,函数参数的传递顺序是从左至右。因此,在定义带有默认参数值的函数时,如果同时存在非默认参数和默认参数,则必须确保默认参数出现在后面,否则会导致语法错误。例如,`def func(a, b=5)`是合法的,而`def func(a=5, b)`则是非法的。 #### 四、文档字符串(Docstrings) 9. **函数文档字符串**:通常情况下,Python的函数、类或模块的第一个逻辑行会包含一个由三个单引号或双引号包围的字符串,这个字符串被称为文档字符串(Docstring)。文档字符串用来描述该函数的作用,可以通过`func.__doc__`或`help(func)`获取这些文档字符串。例如: ```python def func1(): '''Here's a docstring.''' print(func1.__doc__) help(func1) ``` #### 五、模块与类的定义 10. **模块与类的加载顺序**:当导入一个模块时,Python会从上到下执行该模块中的所有代码。因此,对于类的定义和使用,必须确保类在其被引用之前已经定义好。而在函数体内部定义的类或函数不受此限制,因为它们会在运行时动态查找。 #### 六、脚本文件结构 11. **Python脚本文件开头示例**:典型的Python脚本文件开头可能包含指定解释器路径、编码声明、简短的注释以及主程序入口检查等内容。例如: ```python #!/usr/bin/python # -*- coding: utf-8 -*- """ test.py This is a temporary script file. """ if __name__ == '__main__': print('This program is being run by itself') else: print('I am being imported from another module') ``` #### 七、模块属性查询 12. **查询模块属性**:可以使用`dir()`函数来查看一个模块的属性。例如,`import sys`后,`dir(sys)`会列出`sys`模块的所有属性。同样地,`dir()`还可以用于查询当前命名空间下的属性。 #### 八、数据结构 13. **列表、元组和字典**: - **列表**(List):是一种可变的数据结构,支持索引操作。 - **元组**(Tuple):是一种不可变的数据结构,也支持索引操作。 - **字典**(Dictionary):是一种可变的数据结构,支持键值对访问。 示例代码如下: ```python list = ['apple', 'mango', 'carrot', 'banana'] tuple = ('wolf', 'elephant', 'penguin') tuple2 = ("x", tuple) dic = {'zhangsan': '[email protected]', 'lisi': '[email protected]'} print("zhangsan's email is %s" % dic['zhangsan']) dic['cc'] = '[email protected]' del dic['lisi'] for name, email in dic.items(): print('Contact %s at %s' % (name, email)) ``` #### 九、对象的持久化 14. **对象序列化与反序列化**:可以使用Python的标准库`pickle`或更快的`cPickle`来实现对象的持久化。例如: ```python import cPickle as p shoplistfile = 'shoplist.data' shoplist = ['apple', 'mango', 'carrot'] file_f = file(shoplistfile, 'w') p.dump(shoplist, file_f) file_f.close() del shoplist file_f = file(shoplistfile) ``` 以上内容涵盖了Python编程中的一些基础概念和实践技巧,适合初学者和有一定经验的开发者参考学习。





























================
1.“r”开头的自然字符串内部不会被转义处理
2.“;”分号允许在同一行写多条语句。
3.句尾的“\”会显示的说明一句语句没写完需要换行;而“方括号,圆括号”等符号是隐式的支持一句接下一行。
4.请坚持2,或4个空格做为缩进,或程序块的划归,保持这个习惯。
5.a+b+c等价于(a+b)+c,表达式默认为左结合(python解释器按左到右解析)。
6.a=b=c等价于a=(b=c),赋值语句默认为右结合(python解析器按右到左解析)。
7.range(1,5)的序列是[1, 2, 3, 4]
8.因为python解释器默认函数调用时,“赋给形参的值”是依赖位置从右往左解析的,所以def func(a, b=5)有效,def func(a=5, b)无效。
9.函数/类/模块的第一个逻辑行,惯例是撰写两对“三个单引号”包含的字符串来提示“函数的功能说明”,第二行一般是空行,从第三行开始是详细的描述。按此规则,你就可以通过“print func1.__doc__”,或直接“help”语句来抓取源码中对这个函数func1的“功能说明”。
>>>def func1(): '''Here's a doc string''';pass
>>>func1.__doc__
>>>def func1(): """Here's a doc string""";pass
>>>help(func1)
备注:三个单引号和三个双引号都可以;用“__doc__”或“help()”都可以。
10.写类的函数时需要先定义后调用,因为在加载模块时类的所有定义都被认为是需执行的,所以应先定义。但函数体内或类方法里面则没这个限制,因为它们会从这个模块的globals()locals()里面来找名字,等于预先扫描收集了一遍,而加载时名字都已经放进去可知可查了。
11.如下是一个py文件的典型开头
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
test.py
This is a temporary script file.
"""
if __name__ == '__main__':
print 'This program is being run by itself'
else:
print 'I am being imported from another module'
# -*- coding: <encoding name> -*- #请根据编码格式填写
#!/usr/local/bin/python #请根据python编译器的位置填写
12.显示模块的属性
$python #回车进入python交互界面>>>
>>> import sys
>>> dir(sys) #显示sys模块属性 ['__displayhook__', '__doc__', ...... 'version_info', 'warnoptions']
>>> dir() #为空则显示当前模块属性 ['__builtins__', '__doc__', '__name__', 'sys']
>>> a = 5 #(为当前模块)增加定义一个属性'a'
>>> dir() #再查当前模块属性则多了个a ['__builtins__', '__doc__', '__name__', 'a', 'sys']
>>> del a #(为当前模块)删除属性a
>>> dir() #['__builtins__', '__doc__', '__name__', 'sys']
剩余9页未读,继续阅读


- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 孤岛型微电网中改进下垂控制策略:'虚拟阻抗与无功均分的应用'
- 医药洁净室温湿度串级PID控制:基于200smart PLC的创新实现与挑战 专业版
- 基于Vuejs框架构建的现代化前端单页面应用项目-包含热重载开发服务器和Webpack生产环境构建配置-通过npm脚本命令实现依赖安装开发调试与生产打包-使用vue-loader.zip
- MATLAB中灰狼算法与改狼算法对23种测试函数的性能探究及应用前景 系统版
- 基于混合决策规则与Wasserstein度量的分布式鲁棒多阶段框架:适应风电渗透下的机组不确定性承诺与调度策略优化
- 电力电子领域Z源逆变器并网闭环仿真的L滤波器动态性能分析与应用
- 单相有源Boost PFC功率因数矫正电路设计原理与应用(220V交流转400V直流,功率200W)
- 基于Abaqus与Matlab蜂群算法耦合的结构优化程序研究及其工程应用 - Abaqus
- 基于配置化数据表格与动态图表展示的交互式数据可视化工具-支持拖拽排序-自定义样式-实时预览-多格式导出-响应式布局-数据绑定-配置驱动-JSON导入导出-Excel兼容-数据筛选-.zip
- 电机控制领域FOC电流环PI参数自整定Simulink仿真模型及其应用
- 一个目标检测图像增强的示例脚本
- 基于遗产算法的多目标分布式电源选址定容策略仿真研究:以投资成本等三目标实现方案验证 - 多目标优化
- BabeLua,一款vs的lua开发软件
- (雷同的那个是营销号)YOLOv8检测模块组合优化改进(成功涨点):添加GAM注意力机制;添加小目标检测头;替换为Wise-IoU损失函数+完整web端展示(实现简单目标跟踪功能)
- 基于MATLAB的LSTM与分位数回归多输入单输出时间序列预测模型
- MATLAB实现电-气-热综合能源系统耦合优化调度模型及其应用 综合能源系统 (2025-08-24)


