国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2019-11-25 18:22:25
字體:
供稿:網(wǎng)友

Python是當(dāng)今日趨流行的一種腳本語言,它比Java更簡單,比php更強(qiáng)大,并且還適用于做桌面應(yīng)用的開發(fā),在ubuntu中,更加是必須的一種腳本引擎,所以有必要去學(xué)習(xí)一下,這里的文章只針對有一定編程基礎(chǔ),最好是比較熟悉php或javascript的用戶,如果沒任何基礎(chǔ)的新手建議找更詳細(xì)的教程去學(xué)習(xí)。

Python的變量是不需要定義的,這方面和php一樣,它比javascript還是寬松,不過它是用縮進(jìn)作為段落標(biāo)識的,作為習(xí)慣了C語言風(fēng)格語法的人,可能一開始會(huì)很不習(xí)慣使用,但細(xì)一想,其實(shí)也是很正常,很合理的。雖然Python在面向過程/面向?qū)ο蠓矫嬉彩呛軐捤桑珜?shí)際上一般的程序都是一個(gè)主入口,然后不斷調(diào)用其它類庫或函數(shù),所以用縮進(jìn)的方式并無不妥,那樣一方面要求用戶寫代碼時(shí)要規(guī)范,另一方面反向省去了多余的{}。
與C語言風(fēng)格相比,Python主要語法特點(diǎn)而下:

1、變量、字符串
    在python中,所有變量都是對象,數(shù)組其實(shí)是一個(gè)鏈表,并且可以進(jìn)行相應(yīng)的鏈表操作。
1.1 對于普通數(shù)據(jù)類型,定義/賦值方法都是一樣的,這里不作介紹,python的字符串方面有些特別,這里介紹一下。
python對字符串用 [']["] 括起含義是一樣的,同樣對特殊字符使用 [/] 進(jìn)行轉(zhuǎn)義
不過它有一個(gè)很特別的語法就是:[''']三引號,它用于括起分多行的字符串,實(shí)際是這也可以作為它的多行注解,如:

復(fù)制代碼 代碼如下:
# -*- coding: gb18030 -*-
'''
單獨(dú)使用三引號,字符串因?yàn)闆]有使用,就相當(dāng)于注解了
下面是給一個(gè)變量賦值
'''
str = ''' 我是一個(gè)三引號,/'oh!/'我可以換行,
          換行了,照樣OK '''
print str

這樣的語法很有趣吧。
需要特別注意的是,如果源碼里有中文的,一定要在源碼的第一行定義:
# -*- coding: gb18030 -*-

當(dāng)然,你也可以使用utf-8編碼,這看你是在linux還是在windows下調(diào)試了。

1.2 此外關(guān)于變量方面,有幾個(gè)內(nèi)置類型是有必要了解的,它們是:None、True、False (注意:python的變量是嚴(yán)格區(qū)分大小寫的)

None 是表示沒定義的變量,至于True/False這個(gè)誰都知道了吧,呵呵。

注解:除了用 ''' 作多行注解之外,也可以用 # 作為單行注解,這是linux下的腳本語言的常規(guī)做法了。

續(xù)行:python 中對于太長的行,可以用 / 表示未結(jié)束,這和linux的shell的通用做法是一致的。

1.3 數(shù)組定義:
arr = ['a', 'b', 'c']
等同于
arr = []
arr += ['a']
arr += ['b']
arr += ['c']
#遍歷方法:
for i in range(0, len(arr)):
    print arr[i], "/n"
python的數(shù)組實(shí)際不是數(shù)組,而是一個(gè)list對象,如果要參考它的用法,可以參考這個(gè)對象的方法。
需要注意的是,python的數(shù)組實(shí)際是一個(gè)鏈表,因此定義后不能像php之類語言一樣,直接在后面追加元素,而是需要用操作鏈表的方法操作。在上述例子中:如果用 arr[2] = 'ccccc' 可以改變第三個(gè)元素的值,但如果用 arr[3] = 'dddd' 增加一個(gè)元素是會(huì)指錯(cuò)的,應(yīng)該用:arr.append('ddddd') 或 arr.insert(任意位置, 'dddd') 增加元素

對于多維數(shù)組,定義方式為: arr = [[]] * 3 它定義的是:[[], [], []],也可以用 arr = [[] for i in range(3)]

對于數(shù)組和字符串等常用操作,后面會(huì)有一章專門介紹,這里就不在列舉更多的使用方法。

2、區(qū)塊的定義(如語句、函數(shù)等)

Python的區(qū)塊的格式都是

區(qū)塊代碼:
    區(qū)塊內(nèi)部的代碼

它怎么判斷區(qū)塊結(jié)束呢?它不同VB、Dephi之類,區(qū)塊都是有結(jié)束標(biāo)志的,它沒有,它是純粹根據(jù)縮進(jìn)來識別的,這樣雖然有點(diǎn)怪異,不過習(xí)慣了會(huì)覺得也是挺好的。

區(qū)塊基本定義語法:

2.1. if / elif / else

復(fù)制代碼 代碼如下:
x=int(raw_input("Please enter an integer:")) #獲取行輸入
if x>0:
    print '正數(shù)'
elif x==0:
    print '零'
else:
    print '負(fù)數(shù)'

Python中沒用三問運(yùn)算符,不過可以用 (滿足條件的值 if 滿足條件 else 未滿足條件的值) 替代
如: str = ('ok' if 1>2 else 'not ok')
最終結(jié)果是: str == 'not ok'

這里需要說明的一個(gè)地方是,python中沒有 !、&& 和 || 運(yùn)算符,而是用 not、and、or

2.2. in
in判斷 一個(gè)數(shù) 是否在 一個(gè)集合(如:元組,列表等) 中
if 'yes' in  ('y','ye','yes'):
    print  'ok'
與之相對應(yīng)的還有 not in

2.3. for ... in
python中沒有類似C 中的for循環(huán),而是使用for...in來對集合中的每一個(gè)元素進(jìn)行操作

復(fù)制代碼 代碼如下:
a=['cat','door','example']
for x in a:
    print x

等同于:
復(fù)制代碼 代碼如下:
for i in range( 0, len(a) ):
    print a[i]


如果要修改a的內(nèi)容,請用a的副本循環(huán) (否則不安全),如:

復(fù)制代碼 代碼如下:
a=["cat","tttyyyuuu"]
for x in a[:]:
    if len(x)>6: a.insert(0,x)
print a

結(jié)果為:
['tttyyyuuu', 'cat', 'tttyyyuuu']

2.4. break / continue

這兩個(gè)的用法和其它C語法類的語言相同

復(fù)制代碼 代碼如下:
for i in range(10):
    if 2==i: continue #結(jié)束當(dāng)前循環(huán),進(jìn)入下一步循環(huán)
    if 6==i: break #跳出循環(huán)
    print i

結(jié)果為:
0
1
3
4
5

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

2.6. is
用來比較兩個(gè)變量是否指向同一內(nèi)存地址(也就是兩個(gè)變量是否等價(jià)) 而 == 是用來比較兩個(gè)變量是否邏輯相等

復(fù)制代碼 代碼如下:
a = [1,2]
b = [1,2]
>>> a is b
False
>>> a == b
True

2.7. del

用于刪除元素

復(fù)制代碼 代碼如下:
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

用于異常處理

復(fù)制代碼 代碼如下:
try:
    x=int(raw_input("請輸入數(shù)字:"))
except ValueError: #可以同時(shí)捕獲多個(gè)異常,寫法如except(RuntimeError,ValueError):
    print "您輸入不是數(shù)字" #當(dāng)輸入非數(shù)字時(shí)
except: #省略異常名,可以匹配所有異常,慎用
    pass
else: #當(dāng)沒有異常時(shí)
    print 'result=', x
finally: #和Java中類似。一般用于釋放資源,如文件,網(wǎng)絡(luò)連接。
   print 'finish'

raise用于拋出異常,可以為自定義的異常類

這里需要特別注意的是 try 語句內(nèi)部不應(yīng)該有完成某個(gè)操作的語法,而是需要寫在
else: 后面,這和其它語言是很不同的,例如在 try 后面寫個(gè) print 它是不會(huì)顯示任何東西的。

慣例是以Error結(jié)尾的類,同類的異常一般派生自同一個(gè)基類(如Exception)

復(fù)制代碼 代碼如下:
class MyError(Exception):
    def __init__(self,value):
        self.value=value
    def __str__(self):
        return reper(self.value)

基類異常可以匹配派生類異常

復(fù)制代碼 代碼如下:
try:
    raise Exception("spam","egg")
except Exception,inst: #inst為該異常類的實(shí)例,為可選項(xiàng)
    print type(inst) #異常的類型
    print inst

2.9 函數(shù)的定義

def 函數(shù)名(參數(shù)列表):
    函數(shù)代碼
    return 返回值(可選)

復(fù)制代碼 代碼如下:
def get_arr(arr):
    arr.insert(0, 'aaa')
    return arr

arr = ['1','2','3']
new_arr = get_arr(arr)
print new_arr
 

結(jié)果為:['aaa', '1','2','3']

默認(rèn)參數(shù):
其中在后面的參數(shù),允許初始化一個(gè)默認(rèn)值,如:def myfunc(a, b=0, c='aaa') :

參數(shù)關(guān)鍵字:
python的函數(shù)還有一個(gè)變態(tài)的使用方法,就是調(diào)用時(shí)可以不按參數(shù)順序,而是直接用 key=value這樣的鍵值對表示參數(shù),如:
myfunc(c='ggggg', a=0)

可變參數(shù):
用 *key 表示,也是必須在參數(shù)表未尾
如:

復(fù)制代碼 代碼如下:
def fprintf(file, format, *args):
    file.write(format % args)

關(guān)于類和包的定義,在第三章會(huì)專門介紹,這里先不作說明。

3、附注――Python的運(yùn)算符

運(yùn)算符名稱說明例子
+兩個(gè)對象相加3 + 5得到8。'a' + 'b'得到'ab'。
-得到負(fù)數(shù)或是一個(gè)數(shù)減去另一個(gè)數(shù)-5.2得到一個(gè)負(fù)數(shù)。50 - 24得到26。
*兩個(gè)數(shù)相乘或是返回一個(gè)被重復(fù)若干次 的字符串2 * 3得到6。'la' * 3得到'lalala'。
**

返回x的y次冪

3 ** 4得到81(即3 * 3 * 3 * 3)
/x除以y4/3得到1(整數(shù)的除法得到整數(shù)結(jié) 果)。4.0/3或4/3.0得到1.3333333333333333
//取整除返回商的整數(shù)部分4 // 3.0得到1.0
%取模返回除法的余數(shù)8%3得到2。-25.5%2.25 得到1.5
<<左移把一個(gè)數(shù)的比特向左移一定數(shù)目(每個(gè) 數(shù)在內(nèi)存中都表示為比特或二進(jìn)制數(shù)字,即0和1)2 << 2得到8。――2按比特表示為10
>>右移把一個(gè)數(shù)的比特向右移一定數(shù)目11 >> 1得到5。――11按比特表示為1011,向右移動(dòng)1比特后得到101,即十進(jìn)制的5。
&按位與數(shù)的按位與5 & 3得到1。
|按位或數(shù)的按位或5 | 3得到7。
^按位異或數(shù)的按位異或5 ^ 3得到6
~按位翻轉(zhuǎn)x的按位翻轉(zhuǎn)是-(x+1)~5得到6。
<小于返回x是否小于y。所有比較運(yùn)算符返 回1表示真,返回0表示假。這分別與特殊的變量True和False等價(jià)。注意,這些變量名的大寫。5 < 3返回0(即False)而3 < 5返回1(即True)。比較可以被任意連接:3 < 5 < 7返回True。
>大于返回x是否大于y5 > 3返回True。如果兩個(gè)操作數(shù)都是數(shù)字,它們首先被轉(zhuǎn)換為一個(gè)共同的類型。否則,它總是返回False。
<=小于等于返回x是否小于等于yx = 3; y = 6; x <= y返回True。
>=大于等于返回x是否大于等于yx = 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。
!=不等于比較兩個(gè)對象是否不相等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的計(jì)算值。x = False; y = True; x and y,由于x是False,返回False。在這里,Python不會(huì)計(jì)算y,因?yàn)樗肋@個(gè)表達(dá)式的值肯定是False(因?yàn)閤是False)。這個(gè)現(xiàn)象 稱為短路計(jì)算。
or布爾“或”如果x是True,它返回True, 否則它返回y的計(jì)算值。x = True; y = False; x or y返回True。短路計(jì)算在這里也適用。

 

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 巩留县| 湟中县| 天气| 班戈县| 开阳县| 诸暨市| 五家渠市| 唐河县| 汉阴县| 龙南县| 桐乡市| 黄梅县| 万年县| 怀柔区| 剑川县| 来安县| 永寿县| 肇庆市| 襄汾县| 紫阳县| 遵义县| 资源县| 五寨县| 大宁县| 苗栗市| 汉沽区| 鄯善县| 金寨县| 明溪县| 扎赉特旗| 汉寿县| 东莞市| 盐城市| 于都县| 泸州市| 八宿县| 潼南县| 临潭县| 临城县| 承德市| 晋州市|