Python是由荷兰数学和计算机科学研究所在20世纪90年代早期设计的,作为一种叫做ABC的语言的替代品。Python的语法和动态类型,以及解释性语言的性质,使它成为一种在大多数平台上快速编写脚本和开发应用程序的编程语言。
目录
为什么要使用PythonPython应用Hello world国际化来支持易用的计算器字符串、ASCII和UNICODE使用列表条件和循环语句如何定义函数文件I/O异常处理类和继承包机制摘要
为什么使用Python
假设我们有这样一个任务:简单测试局域网内的电脑是否联网。这些计算机的ip范围从192.168.0.101到192.168.0.200。
思路:用shell编程。(Linux一般是bash,Windows是批处理脚本)。比如在Windows上,使用ping ip的命令依次测试每台机器,得到控制台输出。因为ping时控制台文本通常是'回复自…',不起作用时是'超时…',所以可以通过搜索结果中的字符串来找出机器是否连接。
实现:Java代码如下:
String cmd=' cmd.exe ping
字符串ipprefix='192.168.10 ';int begin=101int end=200
流程p=nullfor(int I=begin;iendi ){
p=Runtime.getRuntime()。exec(cmd I);
String line=null
buffered reader reader=new buffered reader(new InputStreamReader(p . getinputstream()));
while((line=reader.readLine())!=空)
{
//处理行,可能会记录它。}
reader . close();
p . destroy();
}
这段代码运行良好。问题是,为了运行这段代码,您还需要做一些额外的工作。这些额外工作包括:
写一个类文件。
写一个main方法。
编译成字节码。
因为字节码不能直接运行,所以需要写一点bat或者bash脚本来运行。
当然,C/C也可以完成这个任务。但是C/C不是跨平台语言。在这个足够简单的例子中,C/C和Java实现可能没有什么区别,但是在一些更复杂的场景中,比如记录连接到网络数据库的信息。因为Linux和Windows的网络接口实现不同,所以你要写两个函数的版本。Java就没有这种顾虑。
同样的工作在Python中实现如下:
导入子流程
cmd=' cmd . exe ' begin=101 end=200 while begin end:
p=子流程。Popen(cmd,shell=True,stdout=子进程。管道,
stdin=子流程。管道,
stderr=子流程。管道)
标准写入(' ping 192.168.1 'str(begin) '\n ' '
p.stdin.close()
p .等待()
“打印”执行结果:% s“% p . stdout . read()
相比Java,Python的实现更简单,你的编写时间更快。不需要写主函数,这个程序保存后就可以直接运行了。况且Python和Java一样,是跨平台的。
有经验的C/Java程序员可能会认为用C/Java写比用Python写快。见仁见智。我的想法是,当你同时掌握了Java和Python,你会发现用Python写这样的程序要比用Java快很多。比如操作本地文件时,只需要一行代码,而不是Java中的很多流包装类。每种语言都有其天然的适用范围。用Python处理一些短程序是最经济的工作,类似于和操作系统的交互编程。
Python应用场合
足够简单的任务,比如一些shell编程。如果你喜欢用Python设计大型商业网站或者复杂游戏,请随心所欲。
Hello world
安装Python(我的原生版本是2.5.4)后,打开IDLE(Python GUI),这是一个Python语言解释器,你写的语句马上就可以运行了。我们写了一个著名的程序语句:
打印“你好,世界!”
然后按回车键。可以看到KR引入节目界的这句名言。
选择“文件”-“新窗口”或解释器中的快捷键Ctrl N,打开一个新的编辑器。编写以下语句:
打印“你好,世界!”
raw_input('按回车键关闭此窗口!');
将其保存为. py文件。按F5,可以看到程序的运行结果。这是Python的第二种运行模式。
找到你保存的a.py文件,双击。也可以看到程序结果。计算机编程语言的程序能够直接运行,对比Java,这是一个优势。
国际化支持
我们换一种方式来问候世界。新建一个编辑器并写如下代码:
'打印'欢迎来到奥运中国!'
原始输入('按回车键关闭此窗口!');
在你保存代码的时候,Python会提示你是否改变文件的字符集,结果如下:
# -*-编码:cp936 -*-
'打印'欢迎来到奥运中国!'
原始输入('按回车键关闭此窗口!');
将该字符集改为我们更熟悉的形式:
# -*-编码:GBK -*-
'打印'欢迎来到奥运中国!'# 使用中文的例子
原始输入('按回车键关闭此窗口');
程序一样运行良好。
便易用的计算器
用微软附带的计算器来计数实在太麻烦了。打开计算机编程语言解释器,直接进行计算:
a=100.0
b=201.1
c=2343
打印(阿拉伯文、中文)
字符串,ASCII和UNICODE
可以如下打印出预定义输出格式的字符串:
打印'''用法:东西[选项]
-h显示此用法消息
'-H主机名要连接的主机名'''
字符串是怎么访问的?请看这个例子:
word='abcdefg' a=word[2]
打印" a "是:“答
b=word[1:3]
打印" b "是:" b #索引单词的一和2个元素。
c=word[:2]
print 'c是:' c #索引单词的0和一个元素。
d=word[0:]
打印是:' d #字的所有元素。
e=word[:2] word[2:]
打印' e是:' e #字的所有元素。
f=单词[-1]
打印' f是:' f #这个词的最后一个元素。
g=word[-4:-2]
打印" g "是:" g #索引字的第3和第四个元素。
h=word[-2:]
打印' h是:' h #最后两个元素。
i=word[:-2]
打印我是:‘我#除最后两个字符外的所有内容
l=len(单词)
"打印"字的长度是:"字符串(l)"
请注意美国信息交换标准代码和采用双字节对字符进行编码字符串的区别:
'打印'输入你的中文名字:' s=raw_input('回车未完待续');
'打印'您的姓名是:)的;
l=透镜
你的中文姓名在(同AmericanSecurityCouncil)美国安全委员会代码中的'打印'长度为:' str(l);
a=unicode(s,“GBK”)
l=len(a)
'打印'很抱歉我们应该使用unicode字符!您的中文\姓名在采用双字节对字符进行编码中的字符数是:' str(l);
使用List
类似Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)里的列表,这是一种方便易用的数据类型:
word=['a ',' b ',' c ',' d ',' e ',' f ',' g']
a=word[2]
打印" a "是:“答
b=word[1:3]
打印' b是:'打印b #索引1和单词的2个元素。
c=word[:2]
“打印”c是:“打印c #索引0和单词1元素。
d=word[0:]
打印是:'打印d #字的所有元素。
e=word[:2] word[2:]
打印' e是:'打印e #字的所有元素。
f=单词[-1]
打印' f是:'打印f #字的最后一个元素。
g=word[-4:-2]
打印' g是:'打印g #索引3和单词的四个元素。
h=word[-2:]
“打印”h是:“打印h #最后两个元素。
i=word[:-2]
“打印”I是:“打印i #除最后两个字符外的所有内容
l=len(单词)
"打印"字的长度是:"字符串(l)"
"打印"添加新元素[图片上传中.(图片-b4ced-1616074265420-0)]word。追加(' h ')
打印单词
条件和循环语句
#多向决策
x=int(raw_input('请输入一个整数:'))如果x0:
x=0打印"负数变零“elif x==0:
打印"零"否则:
打印"更多"#循环列表
a=['cat ',' window ',' defense strate ']for x ina:
打印x,镜头(十)
如何定义函数
#定义和调用函数。
定义总和(甲、乙):
返回一个b
func=总和
r=func(5,6)
打印r
#用默认参数定义函数
def add(a,b=2):
返回一个b
r=加法(1)
打印r
r=add(1,5)
打印r
并且,介绍一个方便好用的函数:
范围()函数
a=范围(5,10)
打印一份
a=范围(-2,-7)
打印一份
a=范围(-7,-2)
打印一份
a=范围(-2,-11,-3) #第三个参数代表步长
打印一份
文件I/O
spath=' D:/download/baa。txt ' f=open(spath,' w') #打开文件进行写入。创建此文件的用户不存在f.write('第一行1。\n ')
f.writelines('第一行2。)
f.close()
f=open(spath,' r') #打开文件以读取女:
打印行
f.close()
异常处理
s=原始输入('输入您的年龄:')如果s==' ':
引发异常("输入不能为空。")试试:
i=int(s)
除了值错误:
“打印”无法将数据转换为整数。除了:
未知异常!else: #如果try子句没有引发异常,它对于必须执行的代码很有用
打印'你是%d' % i,'岁'最后:#清理行动
打印“再见!”
类和继承
类别基础:
def __init__(self):
self.data=[]
定义添加(自身,x):
self.data.append(x)
def addtwice(self,x):
self.add(x)
self.add(x)
# Child扩展基类Child(Base):
def plus(自身、a、b):
返回a b
oChild=Child()
oChild.add('str1 ')
打印oChild.data
打印oChild.plus(2,3)
包机制
每个。py文件称为一个模块,模块之间可以相互导入。请看下面的例子:
# a.py
def add_func(a,b):
返回a b
# b.py
从import add_func #也可以是:import a
打印“从模块a导入add_func”
' print ' 1加2的结果是:' print add_func(1,2) #如果使用' import a ',那么这里应该是' a.add_func '
模块可以在包内定义。Python定义包的方式有点奇怪。假设我们有一个父文件夹和一个子文件夹。child中有一个模块a.py。如何让Python知道这种文件层次结构?很简单,每个目录放一个名为_init_.py的文件,这个文件的内容可以是空的。这种层次结构如下:
父母
- __init_。巴拉圭
-孩子
- __init_。巴拉圭
- a.py
碧桂园
那么Python如何找到我们定义的模块呢?在标准包sys中,path属性记录Python的包路径。你可以把它打印出来:
导入系统
打印系统路径
通常,我们可以将模块的包路径放入环境变量PYTHONPATH中,该变量会自动添加到sys.path属性中。另一个方便的方法是在编程中直接将我们的模块路径指定到sys.path中:
导入系统
sys.path.append('D:\\download ')
从parent.child.a导入add_func
打印系统路径
“print”从模块a导入add _ func“print”1加2的结果是:“print add_func(1,2)
总结
你会发现这个教程非常简单。代码中隐式提出了很多Python的特性,包括:Python不需要显式声明数据类型、关键字描述、字符串函数的解释等。我觉得一个熟练的程序员应该对这些概念相当熟悉,这样在你挤出宝贵的一个小时看完这篇简短的教程后,可以通过现有知识的迁移类比尽快熟悉Python,然后尽快用它开始编程。
本文到此为止。希望能帮到你,也希望你能多关注我们的更多内容!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。