ホームページ >バックエンド開発 >Python チュートリアル >Pythonプログラミング入門(1) 基本構文の紹介
Python是当今日趋流行的一种脚本语言,它比Java更简单,比php更强大,并且还适用于做桌面应用的开发,在ubuntu中,更加是必须的一种脚本引擎,所以有必要去学习一下,这里的文章只针对有一定编程基础,最好是比较熟悉php或javascript的用户,如果没任何基础的新手建议找更详细的教程去学习。
Python的变量是不需要定义的,这方面和php一样,它比javascript还是宽松,不过它是用缩进作为段落标识的,作为习惯了C语言风格语法的人,可能一开始会很不习惯使用,但细一想,其实也是很正常,很合理的。虽然Python在面向过程/面向对象方面也是很宽松,但实际上一般的程序都是一个主入口,然后不断调用其它类库或函数,所以用缩进的方式并无不妥,那样一方面要求用户写代码时要规范,另一方面反向省去了多余的{}。
与C语言风格相比,Python主要语法特点而下:
1、变量、字符串
在python中,所有变量都是对象,数组其实是一个链表,并且可以进行相应的链表操作。
1.1 对于普通数据类型,定义/赋值方法都是一样的,这里不作介绍,python的字符串方面有些特别,这里介绍一下。
python对字符串用 [']["] 括起含义是一样的,同样对特殊字符使用 [\] 进行转义
不过它有一个很特别的语法就是:[''']三引号,它用于括起分多行的字符串,实际是这也可以作为它的多行注解,如:
这样的语法很有趣吧。
需要特别注意的是,如果源码里有中文的,一定要在源码的第一行定义:
# -*- 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
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来对集合中的每一个元素进行操作
结果为:
['tttyyyuuu', 'cat', 'tttyyyuuu']
2.4. break / continue
这两个的用法和其它C语法类的语言相同
2.5. while / pass
while True:
pass #什么也不做
2.6. is
用来比较两个变量是否指向同一内存地址(也就是两个变量是否等价) 而 == 是用来比较两个变量是否逻辑相等
2.7. del
用于删除元素
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
用于异常处理
raise用于抛出异常,可以为自定义的异常类
这里需要特别注意的是 try 语句内部不应该有完成某个操作的语法,而是需要写在
else: 后面,这和其它语言是很不同的,例如在 try 后面写个 print 它是不会显示任何东西的。
惯例是以Error结尾的类,同类的异常一般派生自同一个基类(如Exception)
基类异常可以匹配派生类异常
2.9 函数的定义
def 函数名(参数列表):
函数代码
return 返回值(可选)
结果为:['aaa', '1','2','3']
默认参数:
其中在后面的参数,允许初始化一个默认值,如:def myfunc(a, b=0, c='aaa') :
参数关键字:
python的函数还有一个变态的使用方法,就是调用时可以不按参数顺序,而是直接用 key=value这样的键值对表示参数,如:
myfunc(c='ggggg', a=0)
可变参数:
用 *key 表示,也是必须在参数表未尾
如:
关于类和包的定义,在第三章会专门介绍,这里先不作说明。
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 |
<< | 左に移動 | 数値のビットを特定の数値だけ左にシフトします (各数値はメモリ内でビットまたは 2 進数、つまり 0 と 1 として表されます) | 2 <<2 は 8 になります。 ——2をビットで表すと10 |
>> | 右に移動 | 数値のビットを特定の数値だけ右にシフトします | 11 >> 1 は 5 になります。 ——11 はビットで 1011 と表されます。右に 1 ビット移動すると、101、つまり 10 進数の 5 が得られます。 |
& | ビット単位 AND | 数値のビット単位の AND | 5 と 3 は 1 を取得します。 |
| | ビット単位 OR | 数値のビット単位 OR | 5 | 3 は 7 になります。 |
^ | ビットごとの XOR | 数値のビット単位の XOR | 5 ^ 3 は 6 になります |
~ | ビットごとに反転 | x のビット単位の反転は -(x+1) | ~5 は 6 になります。 |
< | は | 未満ですx が y より小さいかどうかを返します。すべての比較演算子は、true の場合は 1 を返し、false の場合は 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 を返します。 |
!= | は | と等しくありません2 つのオブジェクトが等しいかどうかを比較します | x = 2; y = 3; x != y は True を返します。 |
ではありません | ブール値「not」 | x が True の場合、False を返します。 x が False の場合、True を返します。 | x = True; y でない場合は False を返します。 |
と | ブール値の「AND」 | x が False の場合、x と y は False を返し、それ以外の場合は y の計算値を返します。 | x = False; y = True; x が False であるため、False を返します。ここで、Python は、この式の値が False でなければならないことを認識しているため (x が False であるため)、y を評価しません。この現象を短絡計算といいます。 |
または | ブール値「または」 | x が True の場合は True を返し、それ以外の場合は y の計算値を返します。 | x = True; y = False; x または y は True を返します。短絡計算もここに適用されます。 |