Python的一些学习笔记
来源:互联网 发布:windows office 密钥 编辑:程序博客网 时间:2024/04/30 12:44
1、安装Python
Linux/BSD:很爽,不用考虑安装,因为大多Linux/BSD系统都已安装好了Python,判断是否安装$Python-V
Windows:到Python上下载就是了,最新版3.1,不过建议下载3.01。安装跟普通程序安装没区别。
在系统变量中Path中添加Python的安装路径(如:C:\Python30)
2、Python的3.x系列不再向下对2.x系列的兼容
今天下载了Python3.01,发现最简单的一个helloworld程序都无法通过,原来在3.X中print语句被相应print函数替代了,类似的还有exec语句,改为exec()函数。
按照Python的创始人Rossum说法:一直以来,除非要打破向后兼容性,否则很多缺陷和错误都无法修复。因此,Python3000将会作为第一个放弃向后兼容性的Python版本,目的就是要让Python向着最好的语言前进。
具体可以看http://www.infoq.com/cn/news/2009/03/Python-3.0
3、Python 3.0的新特性
Guido说Python3.0最出色的特性便是,“对Unicode的更好的支持,对各种'垃圾'进行清理”。而其中对unicode的全面支持则是变革的一个主要方面。Guido写到:
所有的文本都是Unicode;然而,编码过的Unicode的会以二进制的数据来表示……基于这个哲学来修改的结果是,只使用Unicode的代码清爽了许多,编码和二进制数据都需要为此做出修改。这个修改是正面的,因为在2.x的世界里,大量的bug都是因为以编码的文本和未编码的文本混杂在一起而产生的。
尽管Python2.x也支持Unicode,但是它是通过一个(旧有的)str类型和一个(新的)unicode类型来实现的。在Python3.0之中,所有的字符串都是unicode的(str就是unicode字符串),并引入了一个叫做bytes的新类型来处理字节序列。
Python 3.0的其他修改包括:
- Print是一个函数 ─ print语句已经被一个print()函数所替代。通过关键字参数来替代旧有print语句绝大多数的特殊语法(可以在Python2.6中通过from __future__ import print_function来进行试验)。更多请参阅PEP 3105 ─让print变为函数。
- 用迭代器来替代列表 ─一些知名的API将不再返回列表。而字典的dict.iterkeys()、dict.itervalues()和dict.iteritems()方法将会移除,而你可以使用.keys()、.values()和.items(),它们会返回更轻量级的、类似于集合的容器对象,而不是返回一个列表来复制键值。这样做的优点是,可以直接在键和条目上进行集合操作,而不需要再复制一次。
- 整型数 ─移除了含糊的除法符号('/'),而只返回浮点数。在以前的版本中,如果参数是int或者是long的话,就会返回相除后结果的向下取整(floor),而如果参数是float或者是complex的话,那么就会返回相除后结果的一个恰当的近似。在2.6版本中可以通过from__future__ import division来启用这项特性。更多请参阅PEP 238 ─修改除法操作符。
- 大量的语法修改
4、字符串
自然字串 r"Helloworld
5、Python shell 技巧
tab键 可以实现命令补全
在windows环境下 按 alt + p、alt + n 可以实现命令历史的向前向后浏览。
6、Python中一切都是对象
在 Python中万物皆对象。字符串是对象。列表是对象。函数是对象。甚至模块也是对象。
7、Python的代码块
Python语法中有个比较特别的地方就是python的代码块,Python代码块(“代码块”是指:函数、if
语句、for
循环、while
循环,等等)是通过缩进来定义的。开始缩进表示块的开始,取消缩进表示块的结束。不像其他语言有明显的括号,大括号或关键字(如begin...end)来指示,这意味着空白是重要的,并且要一致。
8、字符串的格式化
Python的字符串的格式化跟 C 类似,它甚至不仅仅是格式化。它也是强制类型转换。Python中的字符串格式化是一把瑞士军刀。它有丰富的选项,不同的格式化格式符和可选的修正符可用于不同的数据类型。
>>> print "A:%-.3f" % 1.5
A: -1.500
9、连接 list 与分割字符串
join 只能用于元素是字符串的list;它不进行任何的强制类型转换。连接一个存在一个或多个非字符串元素的 list 将引发一个异常。
anystring.split
(delimiter,num)
10、几个有用的特别的函数
type函数返回任意对象的数据类型。整型、字符串、列表、字典、元组、函数、类、模块,甚至类型对象都可以作为参数被type
函数接受。
str将数据强制转换为字符串。每种数据类型都可以强制转换为字符串。
dir函数返回任意对象的属性和方法列表,包括模块对象、函数对象、字符串对象、列表对象、字典对象
callable函数,它接收任何对象作为参数,如果参数对象是可调用的,返回True
;否则返回False
。可调用对象包括函数、类方法,甚至类自身。
等等。
11、Python自省
自省是指代码可以查看内存中以对象形式存在的其它模块和函数,获取它们的信息,并对它们进行操作。用这种方法,你可以定义没有名称的函数,不按函数声明的参数顺序调用函数,甚至引用事先并不知道名称的函数。
12、
mapping-expression_r
forelement
insource-list
iffilter-expression_r
]
输出:['a', 'b', 'c', 'b', 'd','d']
13、and 和 or
执行布尔逻辑演算,但是它们并不返回布尔值,而是返回它们实际进行比较的值之一。
例:>>> 'a' and'b'
'b'
14、有趣的lambda 函数
lambda函数是一种风格问题。不一定非要使用它们;任何能够使用它们的地方,都可以定义一个单独的普通函数来进行替换。在一种情况lambda函数是很有用的,即在需要特殊封装的、非重用的代码上,这样避免了代码充斥着大量单行函数。
例:>>> ge = lambdax,y=3: x+y
15、ljust 用空格填充字符串以符合指定的长度
例:
>>> s = 'abc'
>>> s.ljust(10)
'abc
16、在Python中没有switch语句。你可以使用if..elif..else语句来完成同样的工作(在某些场合,使用字典会更加快捷。)
17、关于for循环
在C/C++中,如果你想要写for (int i = 0; i < 5;i++)
,那么用Python,你写成for i inrange(0,5)
。似乎Python的for
循环更加简单、明白、不易出错。
18、global语句可以定义全局变量
19、获取帮助:help(print)
20、if __name__ ==
'__main__'
:
'模块自身运行'
else
:
'模块被其他模块调用'
21、引用模块方法
方法一:import 模块名
方法二:from 模块名 import 模块中的成员
最好采用
22、del
23、当你创建一个对象并给它赋一个变量的时候,这个变量仅仅 参考那个对象,而不是表示这个对象本身!也就是说,变量名指向你计算机中存储那个对象的内存。这被称作名称到对象的绑定。
记住列表的赋值语句不创建拷贝。你得使用切片操作符来建立序列的拷贝。
24、__setitem__与__getitem__是python的专用方法,就是一般有python自身隐含调用的,一般不会去直接在代码中调用
__setitem__ :获得一个字典的值
__getitem__:设置一个字典的值
>>d = {"username":"abc", "password":"123"}
>>d["username"] //python自动转换为d.__getitem__("username")
__getitem__类似
25、
for
i
in
range
(
1
,
5
):
print
i
else
:
print
'The for loop is over'
输出
1
2
3
4
The for loop is over
26、函数内使用外部的变量,可使用gloal关键字声明变量
def
func
():
global
x
//声明使用外部的x变量 print
'x is'
, x
x =
2
print
'Changed local x to'
, x
x =
50
func()
print
'Value of x is'
, x
27、pass
语句在Python中表示一个空的语句块。
28、定义含有单个元素的元组singleton=(2,)
即需要在第一个项后加一个逗号,这是为了表达式中一个带圆括号的对象区分。
29、列表的赋值语句不创建拷贝。你得使用切片操作符来建立序列的拷贝。
30、dictionary理解
a、dictionary类型中的元素是无序的。
b、无法创建含有重复key的dictionary类型。
>>> d={'aa': '11', 'bb': '22', 'aa': '33'}
>>> d
{'aa': '33', 'bb': '22'}
>>>
c、dictionary的key是大小敏感的。
d、dictionary中的值可以存储任何数据类型,如整数、字符串、对象、dictionary等等。
e、dictionary的Key可以是整数、字符串、元祖等
31、Python正则表达式的贪婪/非贪婪模式理解
是针对正则表达中的数量词来说,而python默认是贪婪模式的,总是尝试匹配尽可能多的字符;而非贪婪模式则相反,总是尝试匹配尽可能少的字符(甚至不匹配到)。例如:正则表达式"ab*"如果用于查找"abbbc",将找到"abbb"。而如果使用非贪婪的数量词"ab*?",将找到"a"。
Phper/Pythoner技术联盟群:13734312.
转载请注明出处,并告知。
- Python的一些学习笔记
- Python的一些学习笔记
- 学习python的一些笔记
- python学习的一些笔记
- python的一些学习笔记
- python学习笔记--一些常用的tip
- python的一些笔记
- Python的一些笔记
- Python学习笔记(六)关于日期的一些操作
- python学习笔记: 一些有用的文件操作函数
- Python学习笔记(相比静态语言的一些不同之处)
- python学习笔记2:print的使用中的一些问题
- python学习笔记:python 2与python 3的一些小区别
- python的一些零碎笔记
- Python一些函数的笔记
- Python学习笔记(1)-一些基本概念
- Python学习笔记--一些小细节
- Python的一些学习资源
- 安装、设置与启动MySql绿色版的方法
- strToInt和intToStr的自我定义
- STL总体说明
- HasnMap
- USACO Stringsobits 解题报告
- Python的一些学习笔记
- HashSet
- LINUX下C语言连接mysql
- STL之pair对组
- Qt Meta Object system 学习(一)
- JQGrid 里边Inline编辑时按 Esc 触发什么事件?【答案在这】
- linux进程管理学习笔记
- C++异常机制的实现方式和开销分析
- auto_ptr智能指针