Python程序设计入门(1)基本语法简介


Posted in Python onJune 13, 2014

Python是当今日趋流行的一种脚本语言,它比Java更简单,比php更强大,并且还适用于做桌面应用的开发,在ubuntu中,更加是必须的一种脚本引擎,所以有必要去学习一下,这里的文章只针对有一定编程基础,最好是比较熟悉php或javascript的用户,如果没任何基础的新手建议找更详细的教程去学习。

Python的变量是不需要定义的,这方面和php一样,它比javascript还是宽松,不过它是用缩进作为段落标识的,作为习惯了C语言风格语法的人,可能一开始会很不习惯使用,但细一想,其实也是很正常,很合理的。虽然Python在面向过程/面向对象方面也是很宽松,但实际上一般的程序都是一个主入口,然后不断调用其它类库或函数,所以用缩进的方式并无不妥,那样一方面要求用户写代码时要规范,另一方面反向省去了多余的{}。
与C语言风格相比,Python主要语法特点而下:

1、变量、字符串
    在python中,所有变量都是对象,数组其实是一个链表,并且可以进行相应的链表操作。
1.1 对于普通数据类型,定义/赋值方法都是一样的,这里不作介绍,python的字符串方面有些特别,这里介绍一下。
python对字符串用 [']["] 括起含义是一样的,同样对特殊字符使用 [\] 进行转义
不过它有一个很特别的语法就是:[''']三引号,它用于括起分多行的字符串,实际是这也可以作为它的多行注解,如:

# -*- coding: gb18030 -*-
'''
单独使用三引号,字符串因为没有使用,就相当于注解了
下面是给一个变量赋值
'''
str = ''' 我是一个三引号,\'oh!\'我可以换行,
          换行了,照样OK '''
print str

这样的语法很有趣吧。
需要特别注意的是,如果源码里有中文的,一定要在源码的第一行定义:
# -*- coding: gb18030 -*-

当然,你也可以使用utf-8编码,这看你是在linux还是在windows下调试了。

1.2 此外关于变量方面,有几个内置类型是有必要了解的,它们是:None、True、False (注意:python的变量是严格区分大小写的)

None 是表示没定义的变量,至于True/False这个谁都知道了吧,呵呵。

注解:除了用 ''' 作多行注解之外,也可以用 # 作为单行注解,这是linux下的脚本语言的常规做法了。

续行:python 中对于太长的行,可以用 \ 表示未结束,这和linux的shell的通用做法是一致的。

1.3 数组定义:
arr = ['a', 'b', 'c']
等同于
arr = []
arr += ['a']
arr += ['b']
arr += ['c']
#遍历方法:
for i in range(0, len(arr)):
    print arr[i], "\n"
python的数组实际不是数组,而是一个list对象,如果要参考它的用法,可以参考这个对象的方法。
需要注意的是,python的数组实际是一个链表,因此定义后不能像php之类语言一样,直接在后面追加元素,而是需要用操作链表的方法操作。在上述例子中:如果用 arr[2] = 'ccccc' 可以改变第三个元素的值,但如果用 arr[3] = 'dddd' 增加一个元素是会指错的,应该用:arr.append('ddddd') 或 arr.insert(任意位置, 'dddd') 增加元素

对于多维数组,定义方式为: arr = [[]] * 3 它定义的是:[[], [], []],也可以用 arr = [[] for i in range(3)]

对于数组和字符串等常用操作,后面会有一章专门介绍,这里就不在列举更多的使用方法。

2、区块的定义(如语句、函数等)

Python的区块的格式都是

区块代码:
    区块内部的代码

它怎么判断区块结束呢?它不同VB、Dephi之类,区块都是有结束标志的,它没有,它是纯粹根据缩进来识别的,这样虽然有点怪异,不过习惯了会觉得也是挺好的。

区块基本定义语法:

2.1. if / elif / else

x=int(raw_input("Please enter an integer:")) #获取行输入
if x>0:
    print '正数'
elif x==0:
    print '零'
else:
    print '负数'

Python中没用三问运算符,不过可以用 (满足条件的值 if 满足条件 else 未满足条件的值) 替代
如: str = ('ok' if 1>2 else 'not ok')
最终结果是: str == 'not ok'

这里需要说明的一个地方是,python中没有 !、&& 和 || 运算符,而是用 not、and、or

2.2. in
in判断 一个数 是否在 一个集合(如:元组,列表等) 中
if 'yes' in  ('y','ye','yes'):
    print  'ok'
与之相对应的还有 not in

2.3. for ... in
python中没有类似C 中的for循环,而是使用for...in来对集合中的每一个元素进行操作

a=['cat','door','example']
for x in a:
    print x

等同于:
for i in range( 0, len(a) ):
    print a[i]

如果要修改a的内容,请用a的副本循环 (否则不安全),如:

a=["cat","tttyyyuuu"]
for x in a[:]:
    if len(x)>6: a.insert(0,x)
print a

结果为:
['tttyyyuuu', 'cat', 'tttyyyuuu']

2.4. break / continue

这两个的用法和其它C语法类的语言相同

for i in range(10):
    if 2==i: continue #结束当前循环,进入下一步循环
    if 6==i: break #跳出循环
    print i

结果为:
0
1
3
4
5

2.5. while / pass
while True:
    pass #什么也不做

2.6. is
用来比较两个变量是否指向同一内存地址(也就是两个变量是否等价) 而 == 是用来比较两个变量是否逻辑相等

a = [1,2]
b = [1,2]
>>> a is b
False
>>> a == b
True

2.7. del

用于删除元素

a=[1,2,3,4,5,6]
del a[0]
a
>>>[2,3,4,5,6]
del a[2:4]
a
>>>[2,3,6]
del a[:]
a
>>>[]
del a
a
#抛出异常
>>>NameError: name 'a' is not defined

2.8. try ... except ... finally / raise

用于异常处理

try:
    x=int(raw_input("请输入数字:"))
except ValueError: #可以同时捕获多个异常,写法如except(RuntimeError,ValueError):
    print "您输入不是数字" #当输入非数字时
except: #省略异常名,可以匹配所有异常,慎用
    pass
else: #当没有异常时
    print 'result=', x
finally: #和Java中类似。一般用于释放资源,如文件,网络连接。
   print 'finish'

raise用于抛出异常,可以为自定义的异常类

这里需要特别注意的是 try 语句内部不应该有完成某个操作的语法,而是需要写在
else: 后面,这和其它语言是很不同的,例如在 try 后面写个 print 它是不会显示任何东西的。

惯例是以Error结尾的类,同类的异常一般派生自同一个基类(如Exception)

class MyError(Exception):
    def __init__(self,value):
        self.value=value
    def __str__(self):
        return reper(self.value)

基类异常可以匹配派生类异常

try:
    raise Exception("spam","egg")
except Exception,inst: #inst为该异常类的实例,为可选项
    print type(inst) #异常的类型
    print inst

2.9 函数的定义

def 函数名(参数列表):
    函数代码
    return 返回值(可选)

def get_arr(arr):
    arr.insert(0, 'aaa')
    return arrarr = ['1','2','3']
new_arr = get_arr(arr)
print new_arr
 

结果为:['aaa', '1','2','3']

默认参数:
其中在后面的参数,允许初始化一个默认值,如:def myfunc(a, b=0, c='aaa') :

参数关键字:
python的函数还有一个变态的使用方法,就是调用时可以不按参数顺序,而是直接用 key=value这样的键值对表示参数,如:
myfunc(c='ggggg', a=0)

可变参数:
用 *key 表示,也是必须在参数表未尾
如:

def fprintf(file, format, *args):
    file.write(format % args)

关于类和包的定义,在第三章会专门介绍,这里先不作说明。

3、附注——Python的运算符

运算符 名称 说明 例子
+ 两个对象相加 3 + 5得到8。'a' + 'b'得到'ab'。
- 得到负数或是一个数减去另一个数 -5.2得到一个负数。50 - 24得到26。
* 两个数相乘或是返回一个被重复若干次 的字符串 2 * 3得到6。'la' * 3得到'lalala'。
** 返回x的y次幂 3 ** 4得到81(即3 * 3 * 3 * 3)
/ x除以y 4/3得到1(整数的除法得到整数结 果)。4.0/3或4/3.0得到1.3333333333333333
// 取整除 返回商的整数部分 4 // 3.0得到1.0
% 取模 返回除法的余数 8%3得到2。-25.5%2.25 得到1.5
左移 把一个数的比特向左移一定数目(每个 数在内存中都表示为比特或二进制数字,即0和1) 2
>> 右移 把一个数的比特向右移一定数目 11 >> 1得到5。——11按比特表示为1011,向右移动1比特后得到101,即十进制的5。
& 按位与 数的按位与 5 & 3得到1。
| 按位或 数的按位或 5 | 3得到7。
^ 按位异或 数的按位异或 5 ^ 3得到6
~ 按位翻转 x的按位翻转是-(x+1) ~5得到6。
小于 返回x是否小于y。所有比较运算符返 回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 5
> 大于 返回x是否大于y 5 > 3返回True。如果两个操作数都是数字,它们首先被转换为一个共同的类型。否则,它总是返回False。
小于等于 返回x是否小于等于y x = 3; y = 6; x
>= 大于等于 返回x是否大于等于y x = 4; y = 3; x >= y返回True。
== 等于 比较对象是否相等 x = 2; y = 2; x == y返回True。x = 'str'; y = 'stR'; x == y返回False。x = 'str'; y = 'str'; x == y返回True。
!= 不等于 比较两个对象是否不相等 x = 2; y = 3; x != y返回True。
not 布尔“非” 如果x为True,返回False。 如果x为False,它返回True。 x = True; not y返回False。
and 布尔“与” 如果x为False,x and y返回False,否则它返回y的计算值。 x = False; y = True; x and y,由于x是False,返回False。在这里,Python不会计算y,因为它知道这个表达式的值肯定是False(因为x是False)。这个现象 称为短路计算。
or 布尔“或” 如果x是True,它返回True, 否则它返回y的计算值。 x = True; y = False; x or y返回True。短路计算在这里也适用。

 

Python 相关文章推荐
python自动安装pip
Apr 24 Python
Python中os和shutil模块实用方法集锦
May 13 Python
用Python制作在地图上模拟瘟疫扩散的Gif图
Mar 31 Python
在Django框架中编写Context处理器的方法
Jul 20 Python
python类:class创建、数据方法属性及访问控制详解
Jul 25 Python
python删除服务器文件代码示例
Feb 09 Python
Python定义一个跨越多行的字符串的多种方法小结
Jul 19 Python
python学习之hook钩子的原理和使用
Oct 25 Python
Django单元测试工具test client使用详解
Aug 02 Python
python matplotlib包图像配色方案分享
Mar 14 Python
python 实现ping测试延迟的两种方法
Dec 10 Python
解决pytorch 保存模型遇到的问题
Mar 03 Python
Python对两个有序列表进行合并和排序的例子
Jun 13 #Python
用Python输出一个杨辉三角的例子
Jun 13 #Python
Python 的 with 语句详解
Jun 13 #Python
python学习笔记:字典的使用示例详解
Jun 13 #Python
Python urlopen()函数 示例分享
Jun 12 #Python
python教程之用py2exe将PY文件转成EXE文件
Jun 12 #Python
Python struct模块解析
Jun 12 #Python
You might like
php采集速度探究总结(原创)
2008/04/18 PHP
php 保留小数点
2009/04/21 PHP
PHP扩展开发入门教程
2015/02/26 PHP
php实现将上传word文件转为html的方法
2015/06/03 PHP
thinkphp3.2点击刷新生成验证码
2016/02/16 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
2016/05/17 PHP
PHP封装的非对称加密RSA算法示例
2018/05/28 PHP
TP5框架简单登录功能实现方法示例
2019/10/31 PHP
JavaScript 继承详解(二)
2009/07/13 Javascript
在模板页面的js使用办法
2010/04/01 Javascript
JavaScript 的继承
2011/10/01 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
2015/02/26 Javascript
jQuery实现复选框批量选择与反选的方法
2015/06/17 Javascript
bootstrap使用validate实现简单校验功能
2016/12/02 Javascript
JS实现全屏的四种写法
2016/12/30 Javascript
JS HTML图片显示Canvas 压缩功能
2017/07/21 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
python爬虫教程之爬取百度贴吧并下载的示例
2014/03/07 Python
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
2016/08/15 Python
import的本质解析
2017/10/30 Python
Java与Python两大幸存者谁更胜一筹呢
2018/04/12 Python
python使用turtle库绘制时钟
2020/03/25 Python
python中dir()与__dict__属性的区别浅析
2018/12/10 Python
python实现连连看辅助之图像识别延伸
2019/07/17 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
2019/08/26 Python
Django Form and ModelForm的区别与使用
2019/12/06 Python
关于ZeroMQ 三种模式python3实现方式
2019/12/23 Python
HTML5中的nav标签学习笔记
2016/06/24 HTML / CSS
Charles & Colvard官网:美国莫桑石品牌
2019/06/05 全球购物
可爱的童装和鞋子:Fabkids
2019/08/16 全球购物
Berghaus官网:户外服装和设备,防水服
2020/01/17 全球购物
2014三八妇女节活动总结范文四篇
2014/03/09 职场文书
承租经营合作者协议书
2014/10/01 职场文书
《蟋蟀的住宅》教学反思
2016/02/17 职场文书