Python学习笔记3:Python基础

来源:互联网 发布:天刀太白捏脸数据女 编辑:程序博客网 时间:2024/06/11 03:10

1、语句和语法
(1)注释(#)
(2)继续( \)
存在两种例外情况,一个语句不使用反斜线也可以跨行:

  • 在使用闭合操作符(小括号,中括号,花括号)时单一语句可跨多行;
  • 使用三引号包括下的字符串也可跨多行。

(3)缩进相同的多个语句构成代码组(:)

if(w==1) and (s==0):    w+=1;    s+=2;

(4)代码组由不同的缩进分隔
缩进4个空格宽度,避免使用制表符。
“悬挂else”(dangling_else)

if(a==b)    print "a";    print "b";

(5)同一行书写多个语句,用分号(;)分隔

import sys;x='foo';sys.stdout.write(x+'\n')

(6)模块
每一Python脚本文件都可看成一个模块。
模块以磁盘文件的形式存在。

2、变量赋值
(1)赋值操作符(=)
Python对象是通过引用传递的。所以在赋值时,不管这个对象是新创建的,还是一个已经存在的,都是将该对象的引用(并不是值)赋值给变量。
y=(x=x+1)不合法的用法,因为Python不像C那样,赋值语句被当成一个有返回值的表达式。
(2)增量赋值
+= -= = /= %= *= <<= >>= &= ^= |=
增量赋值的意义:第一个对象仅被处理一次。
若第一个对象是可变对象会被就地修改。(无需拷贝引用)
若第一个对象是不可变对象,那么和A=A+B一样分配一个新对象。
不支持++x或–x等。
(3)多重赋值
x=y=z=1
(4)多元赋值
x,y,z=1,2,’a string’
或者(x,y,z)=(1,2,’a string’)

3、标识符
(1)关键字(保留字)
Keyword模块:包含关键字列表和iskeyword()函数。
(2)“内建”(built-in)标识符集合
看成适用在任何一级Python代码的全局变量,虽不是关键字,但应看成“系统保留字”,不作它用。built-in是__builtins__模块的成员,在程序开始或在交互解释器中给出>>>提示之前,由解释器自动导入。
Python大小写敏感。
Python不支持重载标识符。
(3)专用下划线标识符
_xxx 不用’from import module import *’导入
xxx 系统定义名字
_xxx 类中的私有变量名

4、基本风格指南
注释
文档__doc__特别变量
缩进
标识符名称
Pythonic:以Python的方式去编写代码,组织逻辑和对象行为。
模块结构和风格

>>>#(1)起始行(Unix)>>>#(2)模块文档(文档字符串)>>>#(3)模块导入>>>#(4)变量定义(全局变量)>>>#(5)类定义>>>#(6)函数定义>>>#(7)主程序

主模块会被直接执行,或由用户通过命令执行,或作为批处理执行,或由Unix cron任务定时执行,或通过Web服务器调用,或通过GUI执行。
绝大部分模块都是用来被别人调用的模块。
导入当前模块,所需的模块是在模块导入时导入的,每个模块仅导入一次;此时函数内部的模块导入代码不会执行,只有函数在执行时,才会导入。模块被导入时,class定义会执行,函数定义会执行。
只有真正需要执行的代码在模块中没有缩进,几乎所有的功能代码都在函数当中。通常只有主程序模块中有大量的顶级可执行代码,所有其它被导入的模块都只应该有很少的顶级执行代码,所有功能代码都应该封装在函数或类的当中。
unittest模块,有时被称为PyUnit,是一个测试框架。

5、内存管理
Python中,无须事先声明变量,但变量同样只有被创建和赋值后才能被使用。
Python中,变量类型也无需声明。因为变量类型和占用内存是在运行时确定的。
引用计数
一个内部跟踪变量,称为一个引用计数器。每个对象各有多少个引用,简称引用计数。
创建对象并将引用赋值给变量,引用计数设置为1。
当对象引用被赋值给其他变量时,或作为参数传递给函数、方法或类实例时,或被赋值为一个窗体对象的成员时,该对象的一个新的引用或称作别名被创建,引用计数加1。
当对象引用被销毁时,引用计数会减少:引用离开其作用范围时,或者当变量赋值给另一个对象的引用时,或者使用del语句删除一个变量,或者当一个对象被移除一个窗口对象时。
引用计数变为0,导致对象“无法访问”或“无法抵达”。
✪注意:任何追踪或调试程序会给一个对象增加一个额外引用,这会推迟该对象被回收的时间。
解释器跟踪对象的引用计数,垃圾收集器负责释放内存。
Python垃圾收集器实际上是一个引用计数器和一个循环垃圾收集器。
将一个经常用到的模块属性替换为一个本地引用。
因为模块是全局变量,而使用局部变量会提高查找速度。因为在全局查找之前,会先查找本地变量。

6、相关模块和开发工具

  • 《Python风格指南》
  • 《Python快速参考指南》
  • 《Python常见问答》

调试器:pdb
记录器:logging
性能测试器:cProfile,profile(过时),hosthot(过时)

0 0
原创粉丝点击