python作为一种编程语言,诞生于1990年左右,算是一门比较年轻的语言(也算是90后吧),它是面向对象的,但不同于JAVA\C#那么严格要求一切皆对象,更接近于C++,是面向过程和面向对象的结合;它是解释型语言,但是也可以编译成 .pyc 跨平台的字节码文件(由类似于JAVA 的 .class 文件,由python虚拟机来执行),.pyc 文件有几个好处,一是可以简单的隐藏源码,二是提高载入速度,三是跨平台。
编译:python -m py_compile test.py 会生成 test.pyc 文件
python -O -m py_compile test.py 会生成 test.pyo 文件,就是 .pyc 的简单优化。
批量编译一个文件夹中所有的 .py 文件,可以使用 python -m compileall dirname
在 windows 下执行 .py/.pyc 文件时,默认会有闪现一个dos窗口,如果不要这个窗口,可以将 .py/.pyc 的文件后缀改成 .pyw 即可。
其实这种改动,并没有本质上的区别,真正的区别在于 .py/.pyc 文件默认调用 python.exe 来执行,而 .pyw 文件默认调用 pythonw.exe 执行,仅此而已。(w 表示窗口)
python 也有动态链接库,如 linux 下的 .so 或 windows 下的 .dll。
可以通过 python -m pdb test.py 来调试python程序,方法基本与gdb相同。
python 的用武之地
由于本人并非python开发者,所知有限,欢迎补充。
1、服务器维护脚本,比 shell 脚本可强大得多。
2、服务端程序
3、胶水程序,如游戏开发中的任务脚本等
4、WEB开发,如 django \web.py 等
5、手游开发,如 cocos-2dx 就有 python 版。
6、桌面应用开发,如 wxpython等等。
7、云,如 openstack
优点:
1、代码风格优雅(见仁见智了)
2、一次编写,随处运行(这句话不是JAVA的特权)
3、即写即运行
4、由于胶水特性,性能要求高的地方可以使用c/c++来编写。
5、简单易学,所以接下来,不必紧张,请愉快的学习它吧
6、开源
7、庞大的标准库
缺点:
1、tab 与 空格带来的噩梦
2、性能,不过可以通过胶水特性弥补
3、python2 与 3之间的抉择
IDE
交互式解释器:windows\linux
源码执行:windows\linux
与 perl\php\lua\ruby 的对比
最近的语言使用排行榜。
python是蟒蛇的意思,如华蟒的由来。
不必紧张,请保持愉快,python是一门简单且功能强大的语言。
弱类型,但是大小写敏感。
int long float str bool
字符串是不可变的
注释
#!/usr/bin/python #coding:utf-8
chmod +x test.py
分号的用武之地:
python可以不使用分号,唯一必须要使用分号的场所为将多行语句写在同一行的时候,如:
i=3;j=4
但推荐一行只写一个语句。将多行写成一行是不被推荐的,但有时却需要把一行写成多行,则需要使用行连接符号 \,如:
print i
另外,列表、元组可以不需要行连接符号,即可拆成多行书写,如:
mytuple=(3,
4,5,)
转义符 \
同一层次的语句必须要有相同的缩进。
不要混用制表符和空格来缩进。
SyntaxError: invalid syntax
int/int == int,如 3/2 的结果是1,同 c/c++,如果要得到浮点结果,则两数字至少要有一个是浮点数,如 3.0/2 或 3/2.0 即可。也可以 from __future__ import division ,或以 python -Qnew 的方式启动python交互解释器。
关于 import 与 include
str 与 repr(``)
input 与 raw_input
原始字符串 r
------------------------------------------------
序列和映射:
列表类似于其它语言中动态可变的数组,如 c++的vector,java的 arraylist ,索引也是从0开始,但不同的是,python的列表索引还可以从反向开始,最后一个元素为-1,倒数第二个为-2……
六种序列:列表、元组、字符串、Unicode字符串、buffer对象和 xrange对象。
元组用作配置文件的情况非常常见。
通用序列操作:
分片操作,如果熟知 go 语言,会有助于理解。
字符串是不可变的,更类似于 tuple。
格式化字符串,%s,%d,%f,%%
模板字符串
print ‘ab‘,‘cd‘ 会输出 ab cd,中间会自带空格,如果不需要空格 print ‘ab‘,‘\bcd‘ 即可,或 print ‘ab‘+‘cd‘
i = int() --> i = 0
b = bool() --> b = False
强制类型转换
str\unicode\basestring
print isinstance(‘a‘,basestring) 仅适用于 str 和 unicode
下面不仅适用于str和unicode,且适用于 UserString ,不过比较慢
def isStringLike(obj): try:obj+‘‘ except:return False else: return True print isStringLike(3)