[关闭]
@wuqi0616 2017-12-27T06:56:45.000000Z 字数 5542 阅读 789

(一)基础知识笔记

Python程序设计基础


1.1IDLE常用快捷键

快捷键 功能说明
Alt+P 浏览历史命令(上一条)
Alt+N 浏览历史命令(下一条)
Ctrl+F6 重启Shell,之前定义的对象和导入的模块全部消失
F1 打开Python帮助文档
Alt+/ 自动补全前面曾经出现过的单词,如果之前有多个单词具有相同前缀,则在多个单词中循环选择
Ctrl+] 缩进代码块
Ctrl+[ 取消代码缩进
Alt+3 注释代码块
Alt+4 取消代码块注释

1.2Python基础

语言基础:

1.2.1对象模型

Python内置对象

对象类型 示例
数字 1234,3.14,3+4j
字符串 ‘swfu’,“I’m student”, '''Python'''
列表List [1,2,3],['a','b',['c',2]]
字典Dict {1:'food',2:'taste',3:'import'}
元祖Tuple (2,-5,6)
文件 f=open('data.dat','r')
集合 set('abc'),{'a','b','c'}
布尔型 True,False
空类型 None
编程单元类型 函数(使用def定义)类(使用class)定义

1.2.2Python变量

1.2.3Python数字

Python用地址存值,变量指向地址。

1.2.4字符串

转义字符

转义字符 含义
\n 换行符
\t 制表符
\r 回车
\' 单引号
\" 双引号
\\ 一个\
\ddd 3位八进制数对应的字符
\xhh 2位十六进制数对应的字符

注意:在字符串界定符前面加字符r或R表示原始字符串,用于正则表达式,简化文件路径。

1.2.5运算符与表达式

Python支持大多数算术运算符、关系运算符、逻辑运算符以及位运算符。

特有运算符

运算符示例 功能
x//y 求整商
x**y 幂运算
x < y;x<=y;x>y;x>=y 大小比较,集合包含关系比较
x or y 逻辑或
x and y 逻辑与
not x 逻辑非
x in y;x not in y 成员测试运算符
x is y;x is not y 对象实体同一性测试(地址)
|、^、&、<<、>>、~ 位运算
&、|、^ 集合交集、并集、对称差集

注意:%运算符可以对整数和浮点数计算余数,但是浮点数精确度影响误差。

1.2.6常用内置函数

Python常用内置函数

函数 功能简要 注意事项
chr(x),ord(x) 返回ASCII编码为x的字符,返回一个字符x的编码
cmp(x,y) 比较两者大小,小于返回负数;等于返回0,大于返回正数
dir() 指定对象的成员列表
eval(s[,globals[,locals]]) 计算字符串中表达式的值并返回 eval(s,g,l),g为globals参数,l为locals参数
filter(function or None,sequence) 返回序列中使函数值为True的元素,否则返回值为True的元素 比如求公倍数
input([提示内容字符串]) 接受键盘输入的内容,返回字符串
int(x[,d]) 返回数字的整数部分,或者把d进制的字符串x转换为十进制返回
len(obj) 返回对象包含的元素个数,列表,元祖,集合,字典,字符串等
list([x])、set([x])、tuple([x])、dict([x]) 把对象转换为列表、集合、元祖或字典返回,或生成空X
map(函数,序列) 将单参数函数映射至序列中的每个元素,返回结果列表
max(x)、min(x)、sum(x)
hex(x)、oct(x)
range([start,]end[,step]) 返回一个等差数列不包括终值 Python2.x中 xrange()返回可迭代对象,惰性求值,在处理大数据或较大循环时它效率更高
reduce(函数,序列) 接受2个参数以累积的方式从左到右依次应用于序列中每个元素,返回单个值 用作阶乘reduce(lambda x,y:x*y,range(1,n))
reversed(列表或元祖) 返回逆序后的迭代器对象 第二次为空列表
round(x[,小数位数]) 对x进行四舍五入
str(obj) 将对象转换为字符串 repr()这个只做显示用
sorted(列表[,cmp[,key[,reverse]]]) 返回排序后的列表 sort()还是在原列表改,sorted()在新列表改,cmp为对比,key为特征,reverse是否逆序)
zip(seq1[,seq2[...]]) 返回[(seq1[0],seq2[0]...),(...)]
open(name[,mode[,buffering]]) 以指定模式打开文件并返回文件对象

新手实用

  1. dir(x)##查看指定模块中包含的所有成员或者指定对象类型所支持的操作
  2. help(x)##返回指定模块或函数的说明文档、退出按q

1.2.7对象的删除

Python具有自动内存管理功能,解释器会跟踪所有值,一旦发现某个值不再有任何变量指向,将会自动删除该值。

1.2.8基本输入输出

输入:
1.python2.x内置函数input()
返回用户输入的对象:

2.python2.x还有:
raw_input()
返回字符串
输出:
1.python2.x
print 语句

  1. #输出到IDLE
  2. for i in range(10):
  3. print i,
  4. #输出到制定文件
  5. fp=open(r'C:\mytest.txt','a+')
  6. print>>fp,"hello,world"
  7. fp.close()

2.python3.x
print 函数

  1. #输出到IDLE
  2. for i in range(1020):
  3. print(i,end='')
  4. #输出到制定文件
  5. fp=open(r'C:\mytest.txt','a+')
  6. print('hello,world!',file=fp)
  7. fp.close()

1.2.9模块导入与使用

Python在启动时,仅加载了很少一部分模块,需要时由程序员显式加载。

导入模块次序:

1.3Python代码编写规范

1缩进:

行尾冒号以及下一行的缩进表示一个代码块的开始,而缩进结束则表示一个代码块结束了。
注意:在编写时,同一个级别的代码块缩进量必须相同。

2注释:

3模块导入一个import一次只能导入一个模块
4行句太长行尾使用续行符“\”表示下面紧接一行还是当前语句,一般建议使用括号
5空格使用增加可读性

6异常处理提高程序容错性和健壮性
7软件可测试性
http://www.python.org/dev/peps/pep-0008
PyChecker(http://pychecker.sf.net)可以检查python程序中的错误,提示代码复杂性和不规范之处。
Pylint(http://www.logilab.org/projects/pylint)可以用来检查模块是否符合编码规范,检查代码行长度、检查变量名是否符合语法规则、检查声明的接口是否全部实现,等。

1.4Python文件名

1.5Python脚本的name属性

用法:
当编写一个包含大量可被其他程序利用的函数的模块,而不希望该模块可以直接运行,则可以在程序文件中添加以下代码:

  1. if __name__=='__main__':
  2. print('Please use me as a module.')

程序直接执行时会得到提示,而使用import 语句将其作为模块导入后可以使用其中的类、方法、常量或其他成员。

1.6编写自己的包

包是Python用来组织命名空间和类的重要方式,可以看作是包含大量Python程序模块的文件夹

1.7 import this

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than right now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注