python的基本语法和语言_Python基本语法
1. 定義常量:
因?yàn)镻ython的常量相對其他語言,可能略顯麻煩。不僅僅只是單靠const就可以完成常量定義的。在Python中定義常量需要用對象的方法來創(chuàng)建。
我們需要在Lib的目錄下創(chuàng)建一個(gè)const.py的文件,lib目錄下主要是放一些模塊的東西。
class_const(object):class ConstError(TypeError):pass
def __setattr__(self, name, value):if self.__dict__.has_key(name):raise self.ConstError, "Can't rebind const (%s)" %name
self.__dict__[name]=valuedef __delattr__(self, name):if name in self.__dict__:raise self.ConstError, "Can't unbind const (%s)" %nameraiseNameError, nameimportsys
sys.modules[__name__] = _const()
這就是一個(gè)定義常量對象的方法,Python定義常量首先需要有對象的概念,所以上面我們已經(jīng)簡單了解了對象的定義了。至于上面這個(gè)const類呢,大家略看一下就可以了,這種東西百度搜索Python定義常量一大堆。我們只需要在lib文件夾下面建立一個(gè)const.py的文件,將上述代碼拷貝到const.py文件里。這樣使用常量就很方便了。
#encoding=utf-8
import const #導(dǎo)入常量文件
const.value=3 #聲明常量
print(const.value)
const.avc=4
print(const.avc)
const.avc=5 #試圖改變常量的值,報(bào)錯(cuò)
2.? 數(shù)的類型:
整數(shù)型(int) 例:0、6、-2、2015、-203
長整型(long) 例:56990l、-12694l、938476l
浮點(diǎn)型(float) 例:7.5325、9.434、6.66
布爾型(bool) 例:True、False
復(fù)數(shù)型(complex) 例:6+4j、-5+12j、98+9j
complex()函數(shù)可以使用參數(shù)real(實(shí)部) + imag(虛部)*j方式創(chuàng)建一個(gè)復(fù)數(shù)。也可以轉(zhuǎn)換一個(gè)字符串的數(shù)字為復(fù)數(shù);或者轉(zhuǎn)換一個(gè)數(shù)字為復(fù)數(shù)。如果第一個(gè)參數(shù)是字符串,第二個(gè)參數(shù)不用填寫,會(huì)解釋這個(gè)字符串且返回復(fù)數(shù);不過,第二個(gè)參數(shù)不能輸入字符串方式,否則會(huì)出錯(cuò)。real和imag參數(shù)可以輸入數(shù)字,如果imag參數(shù)沒有輸入,默認(rèn)它就是零值,這 個(gè)函數(shù)就相當(dāng)于int()或float()的功能。如果real和imag參數(shù)都輸入零,這個(gè)函數(shù)就返回0j。有了這個(gè)函數(shù),就可以很方便地把一個(gè)列表轉(zhuǎn) 換為復(fù)數(shù)的形式。
注意:當(dāng)想從一個(gè)字符串的復(fù)數(shù)形式轉(zhuǎn)換復(fù)數(shù)時(shí),需要注意的是在字符串中間不能出現(xiàn)空格,比如寫成complex(‘1+2j’),而不是寫成complex(‘1 +2j’), 否則會(huì)返回ValueError異常。
#encoding=utf-8
print(complex(1)) #第二個(gè)參數(shù)不填,默認(rèn)為0j
print(complex("2")) #第一個(gè)參數(shù)為字符串,第二個(gè)參數(shù)不用填寫,填寫報(bào)錯(cuò)
print(complex('2'))print(complex('''2'''))print(complex("""2"""))print(complex("2+3j")) #“ 2+3j ”中加號的兩邊不能有空格否則報(bào)錯(cuò),錯(cuò)誤寫法"2+ 3j","2 + 3j","2 +3j"
print(complex(3,4))
array= [1,3,5,7]for i inarray:print(complex(i,i+1))
結(jié)果:
(1+0j)
(2+0j)
(2+0j)
(2+0j)
(2+0j)
(2+3j)
(3+4j)
(1+2j)
(3+4j)
(5+6j)
(7+8j)
3. 字符串類型:
單引號字符串:'hello'
雙引號字符串:"hello"
三引號字符串:"""hello"""或'''hello'''
注:三引號包含的字符串可由多行組成,一般可表示大段的敘述性字符串。在使用時(shí)基本沒有差別,但雙引號和三引號("""...""")中可以包含單引號, 三引號('''...''')可以包含雙引號,而不需要轉(zhuǎn)義。
#encoding=utf-8
str0='str0 "str0" """str0"""' #單引號中使用雙引號會(huì)被保留下來,不需要轉(zhuǎn)義,但是不能使用單引號
print("str0 {0}".format(str0))
str1="str1 'str1' '''str1'''" #同理雙引號中使用單引號也會(huì)被保留下來,但是不能使用雙引號
print("str1 {0}".format(str1))
str2="""str2 "str2" 'str2'
str2
str2""" #使用三引號可以保留下格式來 但是要保證前后對稱
print("str2 {0}".format(str2))
str3="""str3
str3
str3""" #使用三引號可以保留下格式來
print("str3 {0}".format(str3))
結(jié)果:
str0 str0 "str0" """str0"""str1 str1'str1' '''str1'''str2 str2"str2" 'str2'str2
str2
str3 str3
str3
str3
4. 轉(zhuǎn)義符和換行符:
#encoding=utf-8
str='I\'m wms' #轉(zhuǎn)義字符和別的語言差不多,都是用 \
print(str)
str="下面換行\(zhòng)n真換了" #換行符使用 \n
print(str)
結(jié)果:
I'm wms
下面換行
真換了
5. 自然字符串和字符串重復(fù):
自然字符串字面意思理解就是將字符串保留本身的格式,而不受轉(zhuǎn)義的影響。
字符串重復(fù)字面意思理解就是將字符串重復(fù)輸出。
#encoding=utf-8
str=r'I\'m wms' #自然字符串輸出,字符串前加上 r
print(str)
str="下面換行\(zhòng)n真換了" #非自然字符串輸出就會(huì)解釋轉(zhuǎn)義字符
print(str)
str="重復(fù)輸出,"*3 #重復(fù)輸出3次
print(str)
結(jié)果:
下面換行
真換了
重復(fù)輸出,重復(fù)輸出,重復(fù)輸出,
6. 子字符串:
索引運(yùn)算符從0開始索引
切片運(yùn)算符[x:y]是指從第x下標(biāo)開始到第y-1下標(biāo)
#encoding=utf-8
str='test index's1=str[0] #獲取索引為0的子字符串
print("s1: {0}".format(s1))
s2=str[8] #如果索引超過字符串長度,則報(bào)錯(cuò)
print("s2: {0}".format(s2))
s3=str[:3] #冒號前的參數(shù)不填,表示索引從0開始到冒號后的x-1位
print("s3: {0}".format(s3))
s4=str[3:6] #索引從冒號前一位到后一位減一的子字符串
print("s4: {0}".format(s4))
結(jié)果:
s1: t
s2: e
s3: tes
s4: t i
7.? 數(shù)據(jù)類型:
基本數(shù)據(jù)類型:基本數(shù)據(jù)類型就是之前我們講到的數(shù)和字符串,這里就不介紹了。
列表:python里沒有數(shù)組的概念,列表和數(shù)組的概念很接近。列表是用來存儲一連串元素的容器,用[]表示。
元組:同樣元組合數(shù)組的概念也很接近,用()表示。另外元組只能讀取不能修改。
集合:
格式:set(元素),python的set是一個(gè)無序不重復(fù)元素集。
功能:
建立關(guān)系
消除重復(fù)元素
字典:Python中的字典也叫關(guān)聯(lián)數(shù)組,用{}表示。例: dictionary={'name':'toutou',"age":"26","sex":"male"} ps:是不是覺得有點(diǎn)兒像json?
#encoding=utf-8#列表
person=["張三","王五","李四"] #大小在聲明的時(shí)候就確定了
person[2]="lisi" #能改變已有索引處的值#person[3]="趙六" #該索引超出列表范圍,報(bào)錯(cuò)
print(person[2])#元組
names=("張三","王五","李四")#names[2]="lisi" #元組不允許修改
print(names[0])#集合
x=set('12333的') #此處的字符串并不代表將字符串整個(gè)存入,而是將其全部拆分成一個(gè)一個(gè)的字符,并去除重復(fù)項(xiàng),漢子按照編碼拆分
x.add("456")
x.add("de")
x.add("的")#x.remove('44') #要移除的不存在,則報(bào)錯(cuò)
x.remove('de')
x.discard("dfd") #要移除的元素存在則移除,不存在也不報(bào)錯(cuò)
printx
y=set("3456")print "x:{0}".format(x)print "y:{0}".format(y)#交集
print "交集: {0}".format(x&y) #x&y = x.intersection(y) #兩個(gè)集合中都存在的元素#并集
print "并集:{0}".format(x|y) #x|y = x.union(y) #將兩個(gè)集合中的元素合并,去除重復(fù)項(xiàng)#差集
print "差集(x-y):{0}".format(x-y) #x-y = x.difference(y) #以"-"右邊的集合為主,去除兩個(gè)集合交集中的元素
print "差集(y-x):{0}".format(y-x)
x.pop()#隨機(jī)刪除一個(gè)元素
x.clear() #清空set集合#字典
dictionary = {"name":"wms",'age':23,'sex':"男"}print dictionary["name"]
dictionary["school"]='tianjin' #向字典中添加項(xiàng)目
print dictionary["age"]print dictionary["school"]
結(jié)果:
lisi
張三
set(['\x84', '\xe7', '\xe7\x9a\x84', '456', '1', '3', '2', '\x9a'])
x:set(['\x84', '\xe7', '\xe7\x9a\x84', '456', '1', '3', '2', '\x9a'])
y:set(['3', '5', '4', '6'])
交集: set(['3'])
并集:set(['\x84', '\xe7', '\xe7\x9a\x84', '456', '1', '3', '2', '5', '4', '6', '\x9a'])
差集(x-y):set(['\x84', '\xe7', '\xe7\x9a\x84', '456', '1', '2', '\x9a'])
差集(y-x):set(['5', '4', '6'])
wms23tianjin
8. 標(biāo)識符:
在日常生活中,標(biāo)示符是用來指定某個(gè)東西、人,要用到它,他或她的名字;在數(shù)學(xué)中解方程時(shí),我們也常常用到這樣或那樣的變量名或函數(shù)名;在編程語言中,標(biāo)識符是用戶編程時(shí)使用的名字,對于變量、常量、函數(shù)、語句塊也有名字;我們統(tǒng)統(tǒng)稱之為標(biāo)識符。
標(biāo)識符命名規(guī)范:
必須只能是字母或下劃線開頭,不能是數(shù)字或者其他字符開頭
除第一個(gè)開頭字符外,其他部分可以是字母或者下劃線或者數(shù)字
標(biāo)識符大小寫敏感,比如name和Name是不一樣的標(biāo)識符
特殊標(biāo)識符:python中的關(guān)鍵字是指系統(tǒng)中自帶的具備特定含義的標(biāo)識符。常用的python關(guān)鍵字主要 有:and,elif,global,or,else,pass,break,continue,import,class,return,for,while... 常用的python關(guān)鍵字很多與其他語言類似的,我們在命名時(shí)應(yīng)盡量避免與關(guān)鍵字重復(fù)。大家也不用擔(dān)心怕不好區(qū)分,其實(shí)也很好區(qū)分,一般的IDE中關(guān)鍵字 是會(huì)顯示出特定顏色的。
9. ?對象:
Python對象類型:Pyhon的內(nèi)置對象:數(shù)字、字符串、列表、元組、字典、集合等等,在Python中,一切都可以看做是對象。
Pickle模塊:在Python中有時(shí)有一些對象需要持久性存儲,并且不丟失這個(gè)對象的類型與數(shù)據(jù),就需要將這些對象進(jìn)行序列化,序列化之后需要使用時(shí),再恢復(fù)為原來的數(shù)據(jù)。這種序列化的過程,就叫pickle(腌制)。
#encoding=utf-8#pickle 模塊化(腌制)
importpickle#dumps(object) 序列化對象
x=["one","two","three"]
y=pickle.dumps(x)print "dumps(x) 序列化為:{0}".format(y)#loads(object) 反序列化
z=pickle.loads(y)print "loads(y) 反序列化為:{0}".format(z)#pickle.dump(object,file,True) 將對象序列化寫入文件#此處的文件名字沒有特殊要求,文件時(shí)存放在項(xiàng)目的根目錄下的
wirteFile = file("test01.txt","wb") #這里的"wb","rb"也可以使用"w","r","wb"表示寫二進(jìn)制文件,"w"表示寫文本
pickle.dump(x,wirteFile,True)
wirteFile.close()#關(guān)閉文件流#pickle.loads(object,file) 將dump存儲在文件中的對象反序列化
readFile = file("test.txt","rb")
temp=pickle.load(readFile)print "從文件中讀取的反序列化對象:{0}".format(temp)
readFile.close()
10. 行與縮進(jìn):
物理行與邏輯行:
物理行:實(shí)際中看到的行。python中一個(gè)物理行一般可以包含多個(gè)邏輯行,在一個(gè)物理行中編寫多個(gè)邏輯行的時(shí)候,用分號隔開。一個(gè)邏輯行后面必 須有一個(gè)分號,注意,在實(shí)際程序中,如果一個(gè)邏輯行占了一個(gè)物理行的最后,這個(gè)邏輯行也可以省略分號。(省略規(guī)則:每個(gè)物理行默認(rèn)自帶一個(gè)分號,so,每 個(gè)物理行的最后一個(gè)邏輯行可以省略分號,故:當(dāng)一個(gè)邏輯行占了一個(gè)物理行的時(shí)候即可省略分號。)
邏輯行:一段代碼意義上的行數(shù)
行連接:行連接相關(guān)講解參見代碼講解圖。
縮進(jìn):在上面, 有朋友提到python語言是"靠縮進(jìn)控制代碼的語言"。的確如此,在python中,邏輯行的起始位置的空白是有語法規(guī)定的,如果空白不對,程序就會(huì)執(zhí) 行出錯(cuò)。(這一點(diǎn)是和其他語言很大的一個(gè)不同點(diǎn)。)一般情況下(if/while..等等后面的邏輯行除外),單獨(dú)的邏輯行起始位置不應(yīng)該有空白。縮進(jìn)的 方法有兩種,可以按空格,也可以按tab鍵。(一般IDE會(huì)自動(dòng)縮進(jìn)。)關(guān)于縮進(jìn)可能剛?cè)腴T起來有點(diǎn)不適應(yīng)或者不習(xí)慣,多試試就好了。
#encoding=utf-8#物理行與邏輯行#以下是2個(gè)物理行
print "物理行1" #每個(gè)物理行結(jié)尾默認(rèn)帶上一個(gè)分號";"
print "物理行2"
#以下是1個(gè)物理行,2個(gè)邏輯行
print "邏輯行1";print "邏輯行2" #此處連著寫兩個(gè)物理行,中間不加分號就報(bào)錯(cuò)#以下是1個(gè)邏輯航,2個(gè)物理行
print '''你說
我是
物理行還是邏輯行?''' #物理行使用三個(gè)引號,換行時(shí)不需要使用行連接符"\"#行連接
print "我是行連"\"接"
結(jié)果:
物理行1
物理行2
邏輯行1
邏輯行2
你說
我是
物理行還是邏輯行?
我是行連接
總結(jié)
以上是生活随笔為你收集整理的python的基本语法和语言_Python基本语法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ios 简书 获取通讯录信息_iOS-授
- 下一篇: python方法重写_python 怎样