日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python程序設計入門(1)基本語法簡介

系統 1989 0

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 arr

arr = ['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 << 2得到8。――2按比特表示為10
>> 右移 把一個數的比特向右移一定數目 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 < 3返回0(即False)而3 < 5返回1(即True)。比較可以被任意連接:3 < 5 < 7返回True。
> 大于 返回x是否大于y 5 > 3返回True。如果兩個操作數都是數字,它們首先被轉換為一個共同的類型。否則,它總是返回False。
<= 小于等于 返回x是否小于等于y x = 3; y = 6; x <= y返回True。
>= 大于等于 返回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。短路計算在這里也適用。

?


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 苗栗县| 永和县| 永泰县| 邓州市| 苍溪县| 鹿邑县| 大冶市| 绍兴市| 天等县| 蛟河市| 仲巴县| 淮安市| 咸阳市| 博爱县| 绥江县| 涞水县| 赤壁市| 岢岚县| 巴中市| 黄大仙区| 武城县| 汾阳市| 珲春市| 潼关县| 高陵县| 沧源| 论坛| 江都市| 新干县| 九江市| 即墨市| 湖口县| 垣曲县| 岐山县| 荥阳市| 泾阳县| 图们市| 小金县| 苏州市| 新疆| 和龙市|