1 序言
面向读者
本文适合有经验的程序员尽快进入Python2.x世界.特别地,如果你掌握Java和Javascript,不用1小时你就可以用Python快速流畅地写有用的Python程序.
Python3.x用户请参考:http://www.cnitblog.com/yunshichen/archive/2009/04/01/55924.html
(
由于Django不支持python3, 所以为了你的发展潜力, 建议你学习python2.x
)
为什么使用Python
假设我们有这么一项任务:简单测试局域网中的电脑是否连通.这些电脑的ip范围从192.168.0.101到192.168.0.200.
思路:用shell编程.(Linux通常是bash而Windows是批处理脚本).例如,在Windows上用ping ip 的命令依次测试各个机器并得到控制台输出.由于ping通的时候控制台文本通常是"Reply from ... " 而不通的时候文本是"time out ... " ,所以,在结果中进行字符串查找,即可知道该机器是否连通.
实现:Java代码如下:
String cmd
=
"
cmd.exe ping
"
;
String ipprefix
=
"
192.168.10.
"
;
int
begin
=
101
;
int
end
=
200
;
Process p
=
null
;
for
(
int
i
=
begin;i
<
end;i
++
){
p
=
Runtime.getRuntime().exec(cmd
+
i);
String line
=
null
;
BufferedReader reader
=
new
BufferedReader(
new
InputStreamReader(p.getInputStream()));
while
((line
=
reader.readLine())
!=
null
)
{
//
Handling line , may logs it.
}
reader.close();
p.destroy();
}
这段代码运行得很好,问题是为了运行这段代码,你还需要做一些额外的工作.这些额外的工作包括:
-
编写一个类文件
-
编写一个main方法
-
将之编译成字节代码
-
由于字节代码不能直接运行,你需要再写个小小的bat或者bash脚本来运行.
当然,用C/C++同样能完成这项工作.但C/C++不是跨平台语言.在这个足够简单的例子中也许看不出C/C++和Java实现的区别,但在一些更为复杂的场景,比如要将连通与否的信息记录到网络数据库.由于Linux和Windows的网络接口实现方式不同,你不得不写两个函数的版本.用Java就没有这样的顾虑.
同样的工作用Python实现如下:
import subprocess
cmd
=
"
cmd.exe
"
begin
=
101
end
=
200
while
begin
<
end:
p
=
subprocess.Popen(cmd,shell
=
True,stdout
=
subprocess.PIPE,
stdin
=
subprocess.PIPE,
stderr
=
subprocess.PIPE)
p.stdin.write(
"
ping 192.168.1.
"
+
str(begin)
+
"
\n
"
)
p.stdin.close()
p.wait()
print
"
execution result: %s
"
%
p.stdout.read()
对比Java,Python的实现更为简洁,你编写的时间更快.你不需要写main函数,并且这个程序保存之后可以直接运行.另外,和Java一样,Python也是跨平台的.
有经验的C/Java程序员可能会争论说用C/Java写会比Python写得快.这个观点见仁见智.我的想法是当你同时掌握Java和Python之后,你会发现用Python写这类程序的速度会比Java快上许多.例如操作本地文件时你仅需要一行代码而不需要Java的许多流包装类.各种语言有其天然的适合的应用范围.用Python处理一些简短程序类似与操作系统的交互编程工作最省时省力.
Python应用场合
足够简单的任务,例如一些shell编程.如果你喜欢用Python设计大型商业网站或者设计复杂的游戏,悉听尊便.
2 快速入门
2.1 Hello world
安装完Python之后(我本机的版本是2.5.4),打开IDLE(Python GUI) , 该程序是Python语言解释器,你写的语句能够立即运行.我们写下一句著名的程序语句:
print
"
Hello,world!
"
并按回车.你就能看到这句被K&R引入到程序世界的名言.
在解释器中选择"File"--"New Window" 或快捷键 Ctrl+N , 打开一个新的编辑器.写下如下语句:
print
"
Hello,world!
"
raw_input(
"
Press enter key to close this window
"
);
保存为a.py文件.按F5,你就可以看到程序的运行结果了.这是Python的第二种运行方式.
找到你保存的a.py文件,双击.也可以看到程序结果.Python的程序能够直接运行,对比Java,这是一个优势.
2.2 国际化支持
我们换一种方式来问候世界.新建一个编辑器并写如下代码:
print
"
欢迎来到奥运中国!
"
raw_input(
"
Press enter key to close this window
"
);
在你保存代码的时候,Python会提示你是否改变文件的字符集,结果如下:
# -*- coding: cp936 -*-
print
"
欢迎来到奥运中国!
"
raw_input(
"
Press enter key to close this window
"
);
将该字符集改为我们更熟悉的形式:
# -*- coding: GBK -*-
print
"
欢迎来到奥运中国!
" # 使用中文的例子
raw_input(
"
Press enter key to close this window
"
);
程序一样运行良好.
2.3 方便易用的计算器
用微软附带的计算器来计数实在太麻烦了.打开Python解释器,直接进行计算:
a
=
100.0
b
=
201.1
c
=
2343
print (a
+
b
+
c)
/
c
2.4 字符串,ASCII和UNICODE
可以如下打印出预定义输出格式的字符串:
print
"""
Usage: thingy [OPTIONS]
-
h Display
this
usage message
-
H hostname Hostname to connect to
"""
字符串是怎么访问的?请看这个例子:
word
=
"
abcdefg
"
a
=
word[
2
]
print
"
a is:
"
+
a
b
=
word[
1
:
3
]
print
"
b is:
"
+
b # index
1
and
2
elements of word.
c
=
word[:
2
]
print
"
c is:
"
+
c # index
0
and
1
elements of word.
d
=
word[
0
:]
print
"
d is:
"
+
d # All elements of word.
e
=
word[:
2
]
+
word[
2
:]
print
"
e is:
"
+
e # All elements of word.
f
=
word[
-
1
]
print
"
f is:
"
+
f # The last elements of word.
g
=
word[
-
4
:
-
2
]
print
"
g is:
"
+
g # index
3
and
4
elements of word.
h
=
word[
-
2
:]
print
"
h is:
"
+
h # The last two elements.
i
=
word[:
-
2
]
print
"
i is:
"
+
i # Everything except the last two characters
l
=
len(word)
print
"
Length of word is:
"
+
str(l)
请注意ASCII和UNICODE字符串的区别:
print
"
Input your Chinese name:
"
s
=
raw_input(
"
Press enter to be continued
"
);
print
"
Your name is
:
"
+
s;
l
=
len(s)
print
"
Length of your Chinese name in asc codes is:
"
+
str(l);
a
=
unicode(s,
"
GBK
"
)
l
=
len(a)
print
"
I'm sorry we should use unicode char!Characters number of your Chinese \
name
in
unicode
is
:
"
+str(l);
2.5 使用List
类似Java里的List,这是一种方便易用的数据类型:
word
=
[
'
a
'
,
'
b
'
,
'
c
'
,
'
d
'
,
'
e
'
,
'
f
'
,
'
g
'
]
a
=
word[
2
]
print
"
a is:
"
+
a
b
=
word[
1
:
3
]
print
"
b is:
"
print b # index
1
and
2
elements of word.
c
=
word[:
2
]
print
"
c is:
"
print c # index
0
and
1
elements of word.
d
=
word[
0
:]
print
"
d is:
"
print d # All elements of word.
e
=
word[:
2
]
+
word[
2
:]
print
"
e is:
"
print e # All elements of word.
f
=
word[
-
1
]
print
"
f is:
"
print f # The last elements of word.
g
=
word[
-
4
:
-
2
]
print
"
g is:
"
print g # index
3
and
4
elements of word.
h
=
word[
-
2
:]
print
"
h is:
"
print h # The last two elements.
i
=
word[:
-
2
]
print
"
i is:
"
print i # Everything except the last two characters
l
=
len(word)
print
"
Length of word is:
"
+
str(l)
print
"
Adds new element
"
word.append(
'
h
'
)
print word
2.6 条件和循环语句
# Multi
-
way decision
x
=
int
(raw_input(
"
Please enter an integer:
"
))
if
x
<
0
:
x
=
0
print
"
Negative changed to zero
"
elif x
==
0
:
print
"
Zero
"
else
:
print
"
More
"
# Loops List
a
=
[
'
cat
'
,
'
window
'
,
'
defenestrate
'
]
for
x
in
a:
print x, len(x)
2.7 如何定义函数
# Define and invoke function.
def sum(a,b):
return
a
+
b
func
=
sum
r
=
func(
5
,
6
)
print r
# Defines function with
default
argument
def add(a,b
=
2
):
return
a
+
b
r
=
add(
1
)
print r
r
=
add(
1
,
5
)
print r
并且,介绍一个方便好用的函数:
# The range() function
a
=
range(
5
,
10
)
print a
a
=
range(
-
2
,
-
7
)
print a
a
=
range(
-
7
,
-
2
)
print a
a
=
range(
-
2
,
-
11
,
-
3
) # The 3rd parameter stands
for
step
print a
2.8 文件I/O
spath
=
"
D:/download/baa.txt
"
f
=
open(spath,
"
w
"
) # Opens file
for
writing.Creates
this
file doesn
'
t exist.
f.write(
"
First line 1.\n
"
)
f.writelines(
"
First line 2.
"
)
f.close()
f
=
open(spath,
"
r
"
) # Opens file
for
reading
for
line
in
f:
print line
f.close()
2.9 异常处理
s
=
raw_input(
"
Input your age:
"
)
if
s
==
""
:
raise Exception(
"
Input must no be empty.
"
)
try
:
i
=
int
(s)
except ValueError:
print
"
Could not convert data to an integer.
"
except:
print
"
Unknown exception!
"
else
: # It
is
useful
for
code that must be executed
if
the
try
clause does not raise an exception
print
"
You are %d
"
%
i,
"
years old
"
finally
: # Clean up action
print
"
Goodbye!
"
2.10 类和继承
class
Base:
def __init__(self):
self.data
=
[]
def add(self, x):
self.data.append(x)
def addtwice(self, x):
self.add(x)
self.add(x)
# Child extends Base
class
Child(Base):
def plus(self,a,b):
return
a
+
b
oChild
=
Child()
oChild.add(
"
str1
"
)
print oChild.data
print oChild.plus(
2
,
3
)
2.11 包机制
每一个.py文件称为一个module,module之间可以互相导入.请参看以下例子:
# a.py
def add_func(a,b):
return
a
+
b
# b.py
from a import add_func # Also can be : import a
print
"
Import add_func from module a
"
print
"
Result of 1 plus 2 is:
"
print add_func(
1
,
2
) # If
using
"
import a
"
, then here should be
"
a.add_func
"
module可以定义在包里面.Python定义包的方式稍微有点古怪,假设我们有一个parent文件夹,该文件夹有一个child子文件夹.child中有一个module a.py . 如何让Python知道这个文件层次结构?很简单,每个目录都放一个名为_init
_.py 的文件.该文件内容可以为空.这个层次结构如下所示:
parent
--
__init_.py
--
child
--
__init_.py
--
a.py
b.py
那么Python如何找到我们定义的module?在标准包sys中,path属性记录了Python的包路径.你可以将之打印出来:
import sys
print sys.path
通常我们可以将module的包路径放到环境变量PYTHONPATH中,该环境变量会自动添加到sys.path属性.另一种方便的方法是编程中直接指定我们的module路径到sys.path 中:
import sys
sys.path.append(
'
D:\\download
'
)
from parent.child.a import add_func
print sys.path
print
"
Import add_func from module a"
</di
分享到:
相关推荐
"1小时入门"则是一种快速掌握Python的方式,通过精心设计的教学内容,让学习者在短时间内理解Python的核心概念。这种教程通常注重实践,通过简单的实例来引导学习者动手编写代码,从而更快地掌握编程思维。 "简明...
"Python入门教程 超详细1小时学会Python" 是一个专为初学者设计的教程,旨在帮助你在短短一小时内快速掌握Python的基础知识。 教程可能涵盖以下内容: 1. **安装Python环境**:首先,你需要安装Python解释器,通常...
Python是一种广泛使用的编程语言,尤其适合初学者和小学生学习。它以其简洁易懂的语法和丰富的库支持而备受青睐。在“小学生python入门-极度舒适的全套Python入门教程”中,主要介绍了以下几个核心知识点: 1. **...
【清华大学Python全套教程】是由清华大学教授倾力打造的,涵盖了超过600小时的教学内容,总计445份PDF文档,旨在为学习者提供全面且深入的Python学习资源。这套教程针对不同层次的学习者,无论你是初学者还是有一定...
### Python入门新手教程知识点梳理 #### 一、Python语言简介 - **定义**: Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。 - **特点**: - **高级语言**: 相比C语言、Java等其他语言,Python代码...
"OpenCV-Python中文教程" OpenCV-Python中文教程是基于OpenCV官方教程的中文翻译版,旨在帮助读者快速掌握OpenCV-Python的使用。该教程涵盖了OpenCV-Python的基础知识、图像处理、视频处理、绘图函数等方面的内容。...
"Python 入门教程:超详细 1 小时学会 Python" 本教程旨在让读者快速熟悉 Python 语言的基本特性和功能,通过实践示例和简洁的解释,让读者在短时间内掌握 Python 的基础知识。 1. Python 基础知识 Python 是一种...
该教程是一份非常适合Python初学者使用的入门资料,内容覆盖广泛,从Python的基本语法到高级特性均有涉及,旨在帮助学习者快速掌握Python的基础知识,并能够利用这些知识进行简单的编程实践。此外,教程还介绍了...
Python 入门教程超详细 1 小时学会 Python Python 是一种高级的、解释型的编程语言,广泛应用于人工智能、数据科学、网络开发等领域。下面是 Python 入门教程的详细知识点: 1. Python 的优点 Python 比其他语言...
这篇超详细的Python入门教程旨在帮助新手在1小时内快速掌握Python的基本概念和应用。 首先,Python的适用性体现在它能够轻松地处理各种任务,如系统管理、Web开发、科学计算等。在上述示例中,对比了使用Java和...
一小时入门python3网络爬虫,入门教程,实战利器。。。
Python是一种计算机程序设计语言。你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaScript语言等等。 那Python是一种什么语言? 首先...
如果有志于成为一名专业的软件架构师,每天能抽出半小时来学习Python,那么廖雪峰Python教程将是一个极佳的选择。教程的目标用户是从未写过程序的电脑使用者,但有志于通过系统学习,逐渐成长为软件架构师的初学者。...
在"Python.zip"压缩包中,你将找到一系列针对Python初学者的实例和教程资源,这将帮助你在1小时内快速上手Python编程。这个“超级无敌Python教程”强调实践,让你通过实例学习,以加深对Python的理解。 首先,...
总结来说,这个压缩包提供的教程是一条高效学习Python的路径,通过6小时的学习,你可以掌握Python的核心概念,进一步提升到高级主题,甚至涉足Python在实际项目中的应用,如网站开发和机器学习。无论你是编程新手...
Python 入门教程 1 小时学会 Python 在这个 Python 入门教程中,我们将学习如何使用 Python 完成一些简单的任务。首先,我们将学习为什么选择 Python,並讨论 Python 的优点。然后,我们将学习使用 Python 完成一些...
### Python入门教程知识点详解 #### 一、Python的使用场景及优势 - **场景描述**:文档中的示例提到了一个具体的场景——检测局域网内的计算机是否连通。这里通过对比不同编程语言(如Java、C/C++)来演示Python在...
Python入门教程 超详细1小时学会Python 作者: 字体:[增加 减小] 类型:转载 本文适合有经验的程序员尽快进入Python世界.特别地,如果你掌握Java和Javascript,不用1小时你就可以用Python快速流畅地写有用的Python...
《Python阮一峰:Fishshell入门教程》 Python开发者在日常工作中经常需要与命令行交互,而Shell作为命令行的接口,其重要性不言而喻。常见的Shell有Bash和zsh,但本文作者阮一峰推崇的是Fish Shell,认为它在易用性...