2017-06-24 09:50:14
一、變數
python中的變數名的要求和c++基本一致
(1)只能以字母或者下劃線作為開頭,不能以數字開頭
(2)識別符號的其他部分可以有字母下滑線和數字組成,不允許有特殊字元出現如$等(c++中可以有$,且可以放在首位)
(3)不允許有空格,不允許有-分割
python 中只需要給變數賦值而不需要申明具體的資料型別,這是和c++有區別的地方
id(): 得到變數位址
eval(string s): 在記憶體中尋找 s這個變數名,有的話給出他的值
二、判斷語句利用冒號和縮排完成
冒號必須要加上
if ***x:
elif ***x:
else ***x:
#程式**現中文會報錯,需要加上coding=gbk
需要注意的是python中是沒有switch case語句的
#coding=gbk#出現了syntaxerror:non-utf-8 code 錯誤就是編碼問題,需要加上 coding=gbk
if name=="seu":print("東南大學")else:print("其他大學")
name= input("請輸入學校:")if name=="ucb":print("加州伯克利")else:print("其他大學")
三、迴圈語句
冒號必須要加上
1、while ...:
2、for...in:
for..in是另外乙個迴圈語句,它在一串行的物件上逐一使用佇列中的每個專案。else部分是可選的。如果包含else,它總是在for迴圈結束後執行一次,除非遇到break語句。
for i in range(1,5):print(i)else:print("迴圈結束")
range()生成乙個序列,前開後閉,第三個引數是步長,預設值為1
四、運算子和表示式
與c++不同的地方:
1、乘法* 既可以表示兩個數相乘,若是字串乘以數字則是將字串複製多次
2、冪運算** a**b,表示a的b次冪
3、與或非 用的是英文表示 and or not
4、python不支援++ ,--等自增,自減操作
優先順序:
五、函式
def ***(***,***):
使用def關鍵字進行函式的宣告,形參中可以存在有預設值的存在,值得注意的是,和c++一致只能在末尾的引數有預設值
若要修改外部引數值,需要加上global關鍵字,告訴編譯器這是外部引數。
關鍵引數技術:即直接使用引數名進行賦值操作,避免了引數順序,引數個數的問題,顯得更加方便
def fun(x,y=5,z=10):print("x =",x,"y =",y,"z =",z)
fun(3,z=1)
另外,可以使用return語句返回乙個值,使用pass表示空語句
六、文件字串
可以使用__doc__(注意雙下劃線)呼叫檢視函式或者類中第乙個未被賦值的字串,一般用來解釋函式的功能
def fun(x,y=5,z=10):"這個函式的作用是輸出三個數字。"
print("x =",x,"y =",y,"z =",z)print(fun.__doc__)
七、物件導向程式設計
基本語法:
class ***:
def fun(self):
***x
(1)python中的類中元素在預設情況下都是public的,若要將某個資料宣告成私有資料,則要在資料宣告時在名字前加上兩個下劃線,形如:__privateval。
(2)public的資料不需要在函式外單獨宣告,只需要在__init__函式裡加上就可以。
(3)函式外宣告的資料屬於整個類所有,類似於c++裡的static靜態成員資料,呼叫也是使用類名加上成員訪問操作符
(4)類方法都必須加上self引數,這個和c++中的this指標是統一的,只不過必須要顯示的表示出來
(5)__del__析構函式,在物件結束生命期的時候自動呼叫,也可以使用del 函式顯示呼叫,必須要有self
(6)類初始化使用類名加上(),形如: p=***(***)
(7)析構函式一般不用寫,因為python有自動**機制,如果 自己寫的話有一點需要注意的是,如果析構函式中修改了類的資料成員需要同過self.__class__.***來進行修改,否則會報錯。簡單的理解就是析構是針對當前物件的析構,所以需要通過self來進行呼叫與修改。更深層的理解是由於python**機制的問題,由於**的不可控性,如果只寫乙個del,則會導致出錯。如果將所有的物件都顯示呼叫析構函式,則也不會出錯。不過這樣顯然得不償失。
classperson:
population=0def __init__(self,name):
self.name=name
person.population+=1
defshow(self):print("目前的人口數是%d" %person.population)def __del__(self):#寫成person.population-=1就會報錯
self.__class__.population-=1
print("%s析構函式被執行了" %self.name)
p1=person("a")
p2=person("b")
p1.show()delp1
p2.show()
物件導向中的繼承操作:
classperdata:def __init__(self,name,age):
self.name=name
self.age=agedefshow(self):print("姓名:%s 年齡:%d" %(self.name,self.age))classtecdata(perdata):def __init__(self,name,age,salary):#呼叫父類的初始化函式
perdata.__init__(self,name,age)
self.salary=salarydefshow(self):#呼叫父類相應的函式
perdata.show(self)print("工資為%d" %self.salary)
t=tecdata("timhy",22,1)
t.show()
七、檔案輸入輸出
python中使用file類完成相關檔案的輸入和輸出操作
常用的函式:
.open("路徑",模式)
.read() .readline() 讀檔案
.write(***) 寫檔案
模式『r』(預設模式) 讀;『w』 寫(若原始檔裡已經有內容,則清空從頭開始寫);『a』 結尾新增
f=open("e:\\t.txt",'w')
s='''hello world
hello world
hello world'''f.write(s)
f.close()
fin=open("e:/t.txt")
line=fin.readline();while len(line)!=0:#把結尾的換行符去掉,因為讀取時已經將換行符讀取到了
print(line,end='')
line=fin.readline()
貼一段按行讀取csv檔案並輸出的程式,比c++不知道高到**去了。
fin=open("c:/users/yuan/desktop/ee.txt")
fout=open("e:/ee.txt",'w')
line=fin.readline().split(',');while len(line)==3:
s=line[1]+" "+line[2]
fout.writelines(s)
line=fin.readline().split(',');
fin.close();
fout.close();
由於讀取檔案有風險,可能打不開,所以一般需要進行try-except語句進行控制。不過機制的python提供了with open(...) as f:語句可以非常可靠的開啟檔案
middles函式python python 函式
1.特性 1.1.可擴充套件性 1.2.減少 重複 1.3.程式更容易維護 2.函式的引數與區域性變數 2.1.函式裡面的 arges 元組形式儲存,kwarges 字典方式儲存,可以寫成其他,但是 必須寫 2.2.函式裡面入參可以是預設引數,固定引數,位置引數,關鍵字引數,非固定引數的 3.返回值...
discard函式python Python 集合
python 集合讀書之法,在循序而漸進,熟讀而精思。朱熹 集合的概念無序 不能重複 集合中各元素間是無序的,相同元素在集合中唯一存在.即集合是無序組合,它沒有索引和位置的概念,但可變集合中的元素是可以動態新增或者刪除的 集合的型別可變集合 set 不可變集合 frozenset set 函式 可以...
plsql程式設計語法
普通變數 declare u name varchar2 20 zhang san begin dbms output.put line u name end 獲取使用者輸入 declare u name varchar2 20 aaa begin dbms output.put line hell...