Python源代碼的文件以“py”為擴(kuò)展名,由Python程序解釋,不需要編譯
Python源文件經(jīng)編譯后生成的擴(kuò)展名為“pyc”的文件
編譯方法
import py_compile py_compile.compile("hello.py")
經(jīng)過(guò)優(yōu)化的源文件,擴(kuò)展名為“.pyo”
python -O -m py_compile hello.py
變量是計(jì)算機(jī)內(nèi)存中的一塊區(qū)域,變量可以存儲(chǔ)規(guī)定范圍內(nèi)的值,而且值可以改變。
變量名有字母、數(shù)字、下劃線組成。
數(shù)字不能開(kāi)頭
不可以使用關(guān)鍵字
a a1 a_ a_1
是變量聲明和定義的過(guò)程
a = 1 ld(a)
#!/usr/bin/python import sys running = True while running: try: t = int(raw_input()) p = int(raw_input()) except EOFError: break print 'operator + result ', t + p print 'operator - result ', t - p print 'operator * result ', t * p print 'operator / result ', t / p
賦值運(yùn)算符
x = 3, y = 'abcde' #等于 x += 2 #加等于 x -= 2 #減等于 x *= 2 #乘等于 x /= 2 #除等于 x %= 2 #求余等于
算術(shù)運(yùn)算符
x + y #加法 x - y #減法 x * y #乘法 x / y #實(shí)數(shù)除法 x // y #整數(shù)除法 x % y #求余 x**y #求冪
關(guān)系運(yùn)算符
x < y #大于 x > y #小于 x <= y #小于等于 x >= y #大于等于 x != y #不等于 x == y #完全等于
邏輯運(yùn)算符
and #與 or #或 not #非
表達(dá)式是將不同數(shù)據(jù)(包括變量、函數(shù))用運(yùn)算符按一定規(guī)則連接起來(lái)的一種式子
在常規(guī)表達(dá)式中,存在著多個(gè)運(yùn)算符,比如:1+2*3-1/2*3/2
,那么就存在著計(jì)算優(yōu)先度的問(wèn)題
一般的,運(yùn)算符存在高低級(jí)別,在同一個(gè)表達(dá)式中,高優(yōu)先級(jí)的運(yùn)算符:比如:1*2+3*3 = 11
而不是15
對(duì)于同級(jí)別的運(yùn)算符,按從左到右處理。例如:8*4/2*3 = 48
運(yùn)算符優(yōu)先級(jí)由低到高是:
Lambda 邏輯或:or 邏輯與:and 邏輯非:not 成員測(cè)試:in not in 同一性測(cè)試:is is not 比較:< <= > >= != == 按位或:| 按位異或:^ 按位與:& 移位:<< >> 加法與減法:+ - 乘法、除法與取余:* / % 正負(fù)號(hào):+x -x 按位翻轉(zhuǎn):~x 指數(shù):**
123
和"123"
一樣嗎
() [] {}
計(jì)算機(jī)是用來(lái)輔助人們的,在程序設(shè)計(jì)中也映射了現(xiàn)實(shí)世界的分類,以便于抽象的分析。
數(shù)字
字符串
列表
元組
字典
整型
長(zhǎng)整形
浮點(diǎn)型
復(fù)數(shù)型
整數(shù)int表示的范圍-2147483648到2147483647。例如:0,100,-100
int的范圍示例:
num=2147483647 type(num) #
long的范圍很大很大,幾乎可以說(shuō)任意大的整數(shù)均可以存儲(chǔ)。
為了區(qū)分普通整數(shù)和長(zhǎng)整數(shù),需要在整數(shù)后加L或小寫(xiě)l。例如:51856678L, -0x22345L
num = 11 type(num) #
例如:0.0, 12.0, -18.8, 3e+7
示例:
num = 0.0 type(num) #
Python對(duì)復(fù)數(shù)提供內(nèi)嵌支持,這是其他大部分軟件所沒(méi)有的
復(fù)數(shù)舉例: 3.14j, 8.32e-36j
示例:
>>> num=3.14j >>> type(num) <type 'complex'> >>> num 3.14j >>> print num 3.14j
使用引號(hào)定義的一組可以包含數(shù)字、字母、符號(hào)(非特殊系統(tǒng)符號(hào))的集合。
Strval='This is a test' Strval="This is a test" Strval="""This is a test"""
三重引號(hào)(docstring)通常用來(lái)制作字符串,在面向?qū)ο髸r(shí)詳解
列表、元組和字符串都是序列
序列的兩個(gè)主要特點(diǎn)是索引操作符和切片操作符。
索引操作符讓我們可以從序列中抓取一個(gè)特定項(xiàng)目。
切片操作符讓我們能夠獲取序列的一個(gè)切片,即一部分序列。
索引同樣可以是負(fù)數(shù),位置是從序列尾開(kāi)始計(jì)算的。
因此,shoplist[-1]表示序列的最后一個(gè)元素,而shoplist[-2]抓取序列的倒數(shù)第二個(gè)項(xiàng)目
切片操作符是序列名后跟一個(gè)方括號(hào),方括號(hào)中有一對(duì)可選的數(shù)字,并用冒號(hào)分割。
shoplist[1:3]返回從位置1開(kāi)始,包括位置2,但是停止在位置3的一個(gè)序列切片,因此返回一個(gè)含有兩個(gè)項(xiàng)目的切片。shoplist[:]返回整個(gè)序列的拷貝。你可以用負(fù)數(shù)做切片。負(fù)數(shù)用在從序列尾開(kāi)始計(jì)算的位置。例如,shoplist[:-1]會(huì)返回除了最后一個(gè)項(xiàng)目外包含所有項(xiàng)目的序列切片
注意這與你使用的索引操作符十分相似。記住數(shù)是可選的,而冒號(hào)是必須的。
切片操作符中的第一個(gè)數(shù)(冒號(hào)之前)表示切片開(kāi)始的位置,第二個(gè)數(shù)(冒號(hào)之后)表示切片到哪里結(jié)束。如果不指定第一個(gè)數(shù),Python就從序列首開(kāi)始。如果沒(méi)有指定第二個(gè)數(shù),則Python會(huì)停止在序列尾。
注意:返回的序列從開(kāi)始位置開(kāi)始,剛好在結(jié)束位置之前結(jié)束。即開(kāi)始位置是包含在序列切片中的,而結(jié)束位置被排斥在切片外。
len()
:求序列的長(zhǎng)度
+
:連接兩個(gè)序列
*
:重復(fù)序列元素
in
:判斷元素是否在序列中
max()
:返回最大值
min()
:返回最小值
cmp(tuple1, tuple2)
:比較兩個(gè)序列值是否相同
元組和列表十分類似,只不過(guò)元組和字符串一樣是不可變的,即你不能修改元組。
元組通過(guò)圓括號(hào)中用逗號(hào)分割的項(xiàng)目定義。
元組通常用在使語(yǔ)句或用戶定義的函數(shù)能夠安全地采用一組值的時(shí)候,即被使用的元組的值不會(huì)改變。
創(chuàng)建元組
一個(gè)空的元組由一對(duì)空的圓括號(hào)組成,如:myempty=()
含有單個(gè)元素的元組,singleton=(2)
一般的元組
zoo=('wolf', 'elephant', 'penguin') new_zoo=('monkey', 'dolphin', zoo)
元組操作
元組和字符串一樣屬于序列類型,可通過(guò)索引和切片操作。
元組值亦不可變
list是處理一組有序項(xiàng)目的數(shù)據(jù)結(jié)構(gòu),即你可以在一個(gè)列表中存儲(chǔ)一個(gè)序列的項(xiàng)目。
列表是可變類型的數(shù)據(jù)。
列表的組成:用[]表示列表,包含了多個(gè)以逗號(hào)分隔開(kāi)的數(shù)字,或者子串。
list1=['Simon', 'David', 'Clotho'] list2=[1,2,3,4,5] list3=["str1", "str2", "str3", "str4"]
取值
切片和索引
list[]
添加
list.append()
刪除
del(list[])
list.remove(list[])
修改
list[]=x
查找
var in list
示例:
>>> list1=['jack', 20, 'male'] >>> list1 ['jack', 20, 'male'] >>> list1.append('USA') >>> list1 ['jack', 20, 'male', 'USA'] >>> list1.remove('USA') >>> list1 ['jack', 20, 'male'] >>> help(list1.remove) >>> list1[1]=22 >>> list1 ['jack', 22, 'male'] >>> 22 in list1 True
對(duì)象和類,更好的理解列表。
對(duì)象=屬性+方法
列表是使用對(duì)象和類的一個(gè)例子
當(dāng)你使用變量i并給它賦值時(shí)候,比如整數(shù)5,你可以認(rèn)為你創(chuàng)建了一個(gè)類(類型)int的對(duì)象(實(shí)例)i。
help(int)
類也有方法,即僅僅為類而定義的函數(shù)。
Python為list類提供了append方法,這個(gè)方法讓你在列表尾添加一個(gè)項(xiàng)目。
mylist.append('an item')列表mylist中增加字符串。注意,使用點(diǎn)號(hào)來(lái)使用對(duì)象的方法。
僅在該類的對(duì)象可以使用這些功能。
例如:
類也有變量,僅為類而定義的變量
僅在該類的對(duì)象可以使用這些變量/名稱
通過(guò)點(diǎn)號(hào)使用,例如mylist.field。
字典是Python中唯一的映射類型(哈希表)。
字典對(duì)象是可變的,但是字典的鍵必須使用不可變的對(duì)象,并且一個(gè)字典中可以使用不同類型的鍵值。
keys()或者values()返回鍵列表或值列表。
items()返回包含鍵值對(duì)的元值。
示例:
>>> dict={'name': 'jack', 'age' : 30, 'gender':'male' } >>> dict['name'] 'jack' >>> dict['age'] 30 >>> dict['gender'] 'male' >>> dict.keys() ['gender', 'age', 'name'] >>> dict.values() ['male', 30, 'jack'] >>> dict.items() [('gender', 'male'), ('age', 30), ('name', 'jack')]
dict = {}
使用工廠方法dict()
fdict=dict(['x',1], ['y',2])
內(nèi)建方法:fromkeys(),字典中的元素具有相同的值,默認(rèn)為None
ddict={}.fromkeys(('x','y'), -1) #
直接使用key訪問(wèn):key不存在會(huì)報(bào)錯(cuò),可以使用has_key()或者in和not in判斷,但是has_key方法即將廢棄。
循環(huán)遍歷:for key in dict1.keys():
使用迭代器:for key in dict1:
直接用鍵值訪問(wèn)更新;內(nèi)建的update()
方法可以將整個(gè)字典的內(nèi)容拷貝到另一個(gè)字典中。
del dict1['a']
:刪除字典中鍵值為a的元素
dict1.pop('a')
:刪除并且返回鍵為'a'的元素
dict1.clear()
:刪除字典所有元素
del dict1
:刪除整個(gè)字典
type(), str(), cmp()
(cmp很少用于字典的比較,比較依次是字典的大小、鍵、值)
* 例如:
dict(zip(('x','y'),(1,2))) dict(x=1,y=2) #
使用字典生成字典比用copy慢,因此這種情況下推薦使用copy()
len()
:返回序列的大小
hash()
: 用于判斷某個(gè)對(duì)象是否可以做一個(gè)字典的鍵,非哈希類型報(bào)TypeError錯(cuò)誤
dict.clear()
: 刪除字典中的所有元素
dict.fromkeys(seq, val=None)
: 以seq中的元素為鍵創(chuàng)建并返回一個(gè)字典,val為制定默認(rèn)值
dict.get(key, default=None)
: 返回key的value,如果該鍵不存在返回default指定的值
dict.has_key(key)
:判斷字典中是否存在key,建議使用in或not in代替
dict.items()
:返回健值對(duì)元組的列表
dict.keys()
:返回字典中鍵的列表
dict.iter*()
: iteritems(), iterkeys(), itervalues()返回迭代子而不是列表
dict.pop(key[,default])
:同get(),區(qū)別是若key存在,刪除并返回dict[key],若不存在則返回default,未指定值,拋出KeyError異常
dict.setdefault(key, default=None)
:同set(),若key存在則返回其value,若key不存在,則dict[key]=default
dict.update(dict2)
:將dict2中的鍵值對(duì)添加到字典dict中,如果有重復(fù)則覆蓋,原字典不存在的條目則添加進(jìn)來(lái)。
dict.values()
:返回字典中所有值的列表
if語(yǔ)句
一個(gè)字符串是否為空的
一個(gè)運(yùn)算結(jié)果是否為零
一個(gè)表達(dá)式是否可用
True:表示非空的量(比如:string, tuple, set, dictonary等),所有非零數(shù)
False:表示0,None,空的量等。
Python的if語(yǔ)句類似其他語(yǔ)言。if語(yǔ)句包含一個(gè)邏輯表達(dá)式,使用表達(dá)式比較,在比較的結(jié)果的基礎(chǔ)上作用出決定。
if expression: statement
注:Python使用縮進(jìn)作為其語(yǔ)句分組的方法,建議使用4個(gè)空格代替縮進(jìn)。
邏輯值(bool)用來(lái)表示諸如:對(duì)與錯(cuò),真與假,空與非空的概念
邏輯值包含了兩個(gè)值:
作用:主要用于判讀語(yǔ)句中,用來(lái)判斷
else語(yǔ)句
語(yǔ)法
if expression: statement else: statement
如果條件表達(dá)式if語(yǔ)句解析為0或false值。else語(yǔ)句是一個(gè)可選的語(yǔ)句,并最多只能有一個(gè)else語(yǔ)句。
elif語(yǔ)句
語(yǔ)法
if expression: statement elif expression2: statement elif expression3: statement else: statement
elif語(yǔ)句可以讓你檢查多個(gè)表達(dá)式為真值,并執(zhí)行一個(gè)代碼塊,elif語(yǔ)句是可選的。可以有任意數(shù)量的elif。
嵌套的if...elif...else構(gòu)造
if expression1: statement if expression2: statement else: statement else: statement
使用邏輯運(yùn)算符and、or、not
if expression1 and expression2: statement else: statement
循環(huán)是一個(gè)結(jié)構(gòu),導(dǎo)致一個(gè)程序重復(fù)一定次數(shù)。
條件循環(huán)也是如此。當(dāng)條件變?yōu)榧伲h(huán)結(jié)束。
for循環(huán):
在Python for循環(huán)遍歷序列,如一個(gè)列表或一個(gè)字符。
for循環(huán)語(yǔ)法:
for iterating_var in sequence: statements
注:如果一個(gè)序列包含一個(gè)表達(dá)式列表,它是第一個(gè)執(zhí)行。
然后,該序列中的第一項(xiàng)賦值給迭代變量iterating_var。接下來(lái),執(zhí)行語(yǔ)句塊。列表中的每個(gè)項(xiàng)目分配到iterating_var,代碼塊被執(zhí)行,直到整個(gè)序列被耗盡。
注:格式遵循代碼塊縮進(jìn)原則
例子:
for letter in 'python': print 'Current Letter: ', letter fruits=['banana', 'apple', 'mango'] for fruit in fruits: print 'Current fruit: ', fruit
迭代序列指數(shù)(索引):
遍歷每個(gè)項(xiàng)目的另一種方法是由序列本身的偏移指數(shù)(索引)
例子
fruits=['banana', 'apple', 'mango'] for index in range(len(fruits)): print 'Current fruit: ', fruits[index]
注:‘迭代’,指重復(fù)執(zhí)行一個(gè)指令。
循環(huán)結(jié)構(gòu)是用于迭代多個(gè)項(xiàng)的for語(yǔ)句,迭代形式可以循環(huán)序列的所有成員。
range(i,j[,步進(jìn)值])
如果所創(chuàng)建的對(duì)象為整數(shù),可以用range
i為初始數(shù)值
j為終止數(shù)值,但不包括在范圍內(nèi),步進(jìn)值為可選參數(shù),不選的話默認(rèn)是1
i不選擇的話默認(rèn)為0
例子:
sum = 0 for num in range(1, 101, 1): sum += num print sum
dic={'name': 'jack', 'age': 20, 'gender':'male'} for key in dic: val = dic[key] print key,val for key,val in dic.items(): print key, val
for x in range(10): if x == 1: pass if x == 2: continue if x == 5: break; else print 'end'
while循環(huán),直到表達(dá)式變?yōu)榧佟1磉_(dá)的是一個(gè)邏輯表達(dá)式,必須返回一個(gè)true或false值
語(yǔ)法:
while expression: statement
注:遵循代碼塊縮進(jìn)原則
while x != 'q': x = raw_input('please input something, q for quit: ') if not x: break else: print 'end'
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com