写脚本不熟练的程序员不是好程序员----小话python(1)

news/2024/11/24 13:36:29/

作者:陈曦

日期:2012-6-30 11:18:06 

环境:[Mac 10.7.1 Lion Intel-based i3,支持64位指令  Python 2.7.1  gcc4.2.1] 

转载请注明出处


Q1: 脚本的本质是什么?

A: 它就是一段代码,只不过让对应的解释器执行即可;和它相对应的是编译型代码,需要编译成可执行文件或者目标文件,在指定平台上运行或者使用。


Q2: 为什么写脚本不熟练的程序员不是好程序员?

A: 如果程序员主要写的就是特定类型的脚本,那肯定是这样;如果不是,当主要工作不是写脚本时,程序员要做的不仅仅是写本职工作,还不可避免地需要处理相关的测试和验证工作。例如,访问某个网站一直不通,需要确定此地址是否可访问,服务器返回什么,进而确定问题在于什么。在此时,如果一味希望采用编译型语言来编写这样的代码,实践中的时间和精力是不够的,所以,脚本成了很好地选择。


Q3: 在您所了解的脚本中,最喜欢哪个?

A: 对于windows下批处理,linux shell, mac shell, python, perl, VBScript这些脚本中,最喜欢的就是python.原因在于,它从一方面很像c语言,简洁,很多时候代码很易懂易写;另一方面很像c++,支持面向对象的处理。


Q4: 给个mac下python语言的hello代码吧。

A: 首先得确定已经安装了python解释器。

可以看出,已经安装了。如果没有,可以使用macport进行安装。

编写如下代码,保存为hello.py:

print "hello, python!\n"

运行:


Q5: 每次命令行输入python,感觉还挺烦的,有没有更简单的方式?

A: 那么建立一个python的软链接吧,取名为p.只要没有冲突就行。


此时,可以使用p命令代替python.


Q6: 对于创建变量和使用变量呢,这样的代码如何写?

A: 对于创建变量和使用变量,它没有什么很奇怪的语法,不像bash或者perl那样,需要一个$符号,有时还需要$()这种形式。从大二开始学习了bash, 到现在依然会忘记$符号有时该如何处理。python才看1天,就记住了它的处理方式,因为它对变量的声明和定义根本不需要$。

i = 5
print i
i = i + 1
print i
i = '12'
print i

保存为var.py.

运行:


可以看出,它的处理很简洁,i是变量,初始化的时候是i,使用的时候依然是i,很容易看懂。


Q7: 有时,可能需要计算大整数运算结果,如果使用编程语言,比如c语言等等来计算,可能需要编写大整数计算的代码,这可能是个耗时的过程,python可以提供类似的计算功能吗?

A: 是的。python解释器可以提供的一个基本功能就是计算功能, 同时它可以提供直接输入功能,简单明了。如下:


Q8: 可是c语言同样提供了double这样的类型,可以操作很大的数据,上面的过程用c代码同样可以方便实现?

A: 是的,是可以实现,但是如果需要计算一个表达式非要使用c语言,那过程显得太复杂了。


Q9: 有时,需要计算的表达式很多,如果像上面那样一个一个输入,岂不太复杂了?

A: python提供的基本功能就是解释字符串,把表达式放进字符串中,让python来解释即可。


上面的eval可以对字符串参数进行计算。需要计算很多个表达式的时候,我们可以将表达式放在一个文件中:

1+1
2*3
12%3
12**2
14.5+34.5-12.5

保存为expr_cal.  然后编写脚本读取文件中的数据,一行一行计算值:
file = open("expr_cal", "r")
all_lines = file.readlines()
for line in all_lines:
print eval(line)
file.close()

保存为expr_cal.py. 然后执行:

可以看到,上面的代码已经正确地执行了。


Q10: 有时,对于编码问题,很讨厌的一个问题,为了确定某个字符的某种编码的数据是什么,python可以提供简单的方式吗?

A: 是的。如下:

上面可以看到,字符串 “你好” 对应的unicode编码,UTF8编码和GB2312编码对应的数据,方便易查。在出现编码问题的时候,不要慌张,python轻松给出结果。


Q11: 对于复数的运算,python有没有提供对应的实现?

A: 是的。复数运算也很简单和直接:


Q12: 有的时候会忘记平台默认的换行符是什么,有什么方法可以得到吗?

A: 使用os的linesep可以得到它。如下:

如果在其它平台,可能得到不同的结果。


Q13: 在开发和修复bug过程中,可能需要对某个指定大小文件进行操作,那么如何快速生成一个指定大小的文件?

A: python提供了文件操作接口,可以很方便解决这个问题。如下,生成一个100MB大小的文件,最后一个字节为0:

运行完后,可以找到这样大小的文件:


Q14: 在网络访问过程中,经常需要确定某个网页对应的html数据,而且有时需要对于html的数据进行搜索,有什么比较好的方法?

A: 使用脚本实现是个不错的选择,对于数据的分析比较直接,虽然使用浏览器来查看源代码也是一种方式。如下:

上面读取的数据没有完全显示。


从上面可以看出,其实脚本发挥着很大的作用。工欲善其事必先利其器,python就是一个很好的器。


作者:陈曦

日期:2012-6-30 11:18:06 

环境:[Mac 10.7.1 Lion Intel-based i3,支持64位指令  Python 2.7.1  gcc4.2.1] 

转载请注明出处




http://www.ppmy.cn/news/171769.html

相关文章

C# 多线程二:原子操作Interlocked 互锁的理解和简单示例

一.多线程的线程安全 多线程安全问题原因是在cpu执行多线程时,在执行的过程中可能随时切换到其他的线程上执行,当多个线程同时操作同一个变量时,如果不施加其他措施,可能导致错误数据的出现 二.Interlocked的特点 Interlocked是…

小话 Spring AOP 源码

在上篇 Spring AOP 简单使用 中简单介绍了 AOP 相关概念和使用,这篇将要按照注解驱动的 Spring 来进行 AOP 源码的学习分享,欢迎阅读斧正。 通过下面的源码分析,会了解到 Spring AOP 有两种实现方式,一个是 JDK 自带的&#xff0c…

C语言余数为0输出intact,小话c语言

汇编和c只有一步之近----小话c语言(19) 作者:陈曦 日期:2012-6-810:50:13 环境:[Ubuntu11.04 Intel-based x64 gcc4.5.2 CodeBlocks10.05 AT&T汇编 Intel汇编] 转载请注明出处 Q:举个例子吧。 A:下面的代码的目…

C# 多线程四:互斥量Mutex的简单理解与运用

目录 一. 特点: 1.非静态类继承 2.可以跨进程 二.构造函数 1.Mutex() 2.Mutex(Boolean) 2. Mutex(Boolean, String) 3.Mutex(Boolean, String, Boolean) 三.方法 一. 特点: 1.非静态类继承 Object->MarshalByRefObject->WaitHandle->…

坚持#第369天~知道了惠普打印机和佳能打印机打印不清晰了怎么解决

如何给惠普打印机加碳粉?武汉东丰我看的是别人拆开硒鼓加粉,沈阳这边买的是绘威硒鼓cc388A和绘威碳粉cc388A标配易加粉版适用于东丰惠普M1136打印机,加碳粉步骤:戴上一次性手套,倒废粉口和加粉口磕几下倒干净,然后将碳…

佳能IR2520I远程扫描怎么用

1、首先连网线,在一体机上设置好IP,ping测试正常。 2、安装好Color Network ScanGear 2 Tool后,设置连接成功如图 3、复印机处选择--其它--远程扫描--在线 4、电脑打开windows自带的扫描软件,找不到可以在运行中输入wiaacmgr.exe …

canon 打印机 android,Canon PRINT Inkjet/SELPHY

一款专为匹配佳能打印机扫描仪设计的Canon PRINT Inkjet/SELPHY安卓版app,下载Canon PRINT安卓版即可使用手机远程控制打印操作。 软件介绍 Canon PRINT Inkjet/SELPHY是一款免费应用程序,让安卓智能手机或平板用户享用PIXMA, MAXIFY和SELPHY的打印、扫描…

佳能PIXMAnbsp;MP150/MP170/MP450打印…

佳能PIXMA MP150/MP170/MP450打印机PG-40、CL-41墨盒的加墨方法 佳能PIXMA-IP1200、IP1600、IP2200、IP6210D、IP6220D、MP150、MP170、MP450等均使用的PG-40、CL-41墨盒,都可按照如下加墨方法。 PG-40、CL41墨盒的加墨方法 (1) 黑色的墨盒…