python基礎認識

Python基礎python

一.    簡介編程

Python是著名的「龜叔」Guido van Rossum在1989年聖誕節期間,爲了打發無聊的聖誕節而編寫的一個編程語言。豆瓣,Google、Yahoo等,甚至NASA(美國航空航天局)都大量地使用Python。數組

二.    優缺點網絡

       優勢:優雅、明確、簡單、跨平臺。app

       缺點:運行速度慢,由於Python是解釋型語言,你的代碼在執行時會一行一行地翻譯成CPU能理解的機器碼,這個翻譯過程很是耗時。不能加密,若是要發佈你的Python程序,實際上就是發佈源代碼。編程語言

三.    應用領域函數

       首選是網絡應用,包括網站、後臺服務等等;其次是許多平常須要的小工具,包括系統管理員須要的腳本任務等等;另外就是把其餘語言開發的程序再包裝起來,方便使用。工具

四.    安裝網站

在Windows上安裝Python,從Python的官方網站下載Python 3.7,特別要注意勾上Add Python 3.7 to PATH,而後點「Install Now」便可完成安裝。安裝成功後,打開命令提示符窗口,敲入python後,會出現兩種狀況:ui

1:你看到提示符>>>就表示咱們已經在Python交互式環境中了,能夠輸入任何Python代碼,回車後會馬上獲得執行結果。如今,輸入exit()並回車,就能夠退出Python交互式環境(直接關掉命令行窗口也能夠)。

a)        2. ‘python’ 不是內部或外部命令,也不是可運行的程序或批處理文件。這是由於Windows會根據一個Path的環境變量設定的路徑去查找python.exe,若是沒找到,就會報錯。若是在安裝時漏掉了勾選Add Python 3.7 to PATH,那就要手動把python.exe所在的路徑添加到Path中。

文件格式:當咱們編寫Python代碼時,咱們獲得的是一個包含Python代碼的以.py爲擴展名的文本文件

解釋器:當咱們從Python官方網站下載並安裝好Python 3.x後,咱們就直接得到了一個官方版本的解釋器:CPython。這個解釋器是用C語言開發的,因此叫CPython。在命令行下運行python就是啓動CPython解釋器。

五.    基礎語法

1:python         進入交互模式

2:exit()            退出交互模式

3:name=input('plase input') 輸入

4:’hello’*3       獲得hellohellohello

5:print(‘hello’) 打印字符串輸出

6:字符串鏈接的幾種方法

       1:print('hello','world')    輸出hello world

       2:print('hello'+'world')   輸出helloworld

       3:print('hello''world')     輸出helloworld

              4:print('%s%s'%('hello','world'))  輸出helloworld

              str=123   print('%s%s'%('hello',str)  輸出helloworld

       5:list=['hello','world']     print(''.join(list))  輸出helloworld

       7:註釋

              # 單行註釋

              ‘’’ 內容‘’’或者」」」內容」」」  多行註釋,三個單引或者雙引號

六.    數據類型

字符串str、布爾類型bool、整數int、浮點數float、數字、列表list、元組tuple、字典dict、日期datetime

字符串:

使用單引號,雙引號,三引號(‘’’)

print('hello\'world')  轉義單引號

print(r'hello\'world') 加r表示不轉義

print('''hello

world''')  #換行

布爾類型:

True ,False,注意大小寫

and、or和not運算

七.    空值

空值是Python裏一個特殊的值,用None表示。None不能理解爲0,由於0是有意義的,而None是一個特殊的空值

八.    數字類型轉換

int(x [,base]) 將x轉換爲一個整數

float(x ) 將x轉換到一個浮點數

str(x) 將對象x轉換爲字符串

repr(x) 將對象x轉換爲表達式字符串

eval(str) 用來計算在字符串中的有效Python表達式,並返回一個對象

tuple(s) 將序列s轉換爲一個元組

list(s) 將序列s轉換爲一個列表

chr(x) 將一個整數轉換爲一個字符

unichr(x) 將一個整數轉換爲Unicode字符

ord(x) 將一個字符轉換爲它的整數值

hex(x) 將一個整數轉換爲一個十六進制字符串

oct(x) 將一個整數轉換爲一個八進制字符串

九.    數字函數

abs(x)    返回數字的絕對值,如abs(-10) 返回 10

ceil(x)    返回數字的上入整數,如math.ceil(4.1) 返回 5

cmp(x, y) 若是 x < y 返回 -1, 若是 x == y 返回 0, 若是 x > y 返回 1

exp(x)    返回e的x次冪(ex),如math.exp(1) 返回2.718281828459045

fabs(x)    返回數字的絕對值,如math.fabs(-10) 返回10.0

floor(x) 返回數字的下舍整數,如math.floor(4.9)返回 4

max(x1, x2,...)    返回給定參數的最大值,參數能夠爲序列。

min(x1, x2,...)    返回給定參數的最小值,參數能夠爲序列。

modf(x)    返回x的整數部分與小數部分,兩部分的數值符號與x相同,整數部分以浮點型表示。

round(x [,n]) 返回浮點數x的四捨五入值

 

十.    列表

定義:list = ['Michael', 'Bob', 'Tracy']

長度:len(list)

倒轉:list.reverse()

排序list.sort([func])

統計次數:list .count(obj)

找出某個值第一個匹配項的索引位置:list.index(obj)

找出某個值是否存在:obj in list  存在返回True,不然False

循環遍歷:for x in list

查找元素:

list[0]     輸出 'Michael'

list[-1]    輸出 'Tracy'

       插入元素:

list.insert(1, 'Jack')  索引號爲1的位置插入

list. append ('Jack') 在列表末尾添加新的對象

       刪除元素:

              list.pop()   刪除末尾一個元素

              list.pop(1)  刪除索引爲1的元素      

              del list[1]   刪除索引爲1的元素     

  list.remove(obj) 移除列表中某個值的第一個匹配項

       替換元素:list[1] = 'Sarah' 替換索引爲1的元素爲Sarah

十一.         元組

元組與列表相似,不一樣之處在於元組的元素不能修改;元組使用小括號(),列表使用方括號[];

元組中只有一個元素時,須要在元素後面添加逗號,例如:tup1 = (50,);

元組與字符串相似,下標索引從0開始,能夠進行截取,組合等。

定義:tup1 = ('physics', 'chemistry', 1997, 2000);

查找:tup1[2] 輸出1997

找出某個值是否存在:obj in tup1  存在返回True,不然False

循環遍歷:for x in tup1

個數:len(tup1)

鏈接:tup1+tup2

刪除元組:del tup1  元組值不容許刪除

返回元組中元素最大值max(tuple)

返回元組中元素最小值min(tuple)

將列表轉換爲元組tuple(seq)

十二.         字典

定義:dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'};

修改:dict["age"]=27

增長:dict["school"]="wutong"

刪除:

del dict[‘age’] 刪除字典元素

       dict.clear() 清空

       del dict 刪除字典

方法:

len(dict) 計算字典元素個數,即鍵的總數。

str(dict) 輸出字典可打印的字符串表示。

type(variable) 返回輸入的變量類型,若是變量是字典就返回字典類型。

radiansdict.copy() 返回一個字典的淺複製

radiansdict.fromkeys() 建立一個新字典,以序列seq中元素作字典的鍵,val爲字典全部鍵對應的初始值

radiansdict.get(key, default=None) 返回指定鍵的值,若是值不在字典中返回default值

radiansdict.has_key(key) 若是鍵在字典dict裏返回true,不然返回false

radiansdict.items() 以列表返回可遍歷的(鍵, 值) 元組數組

radiansdict.keys() 以列表返回一個字典全部的鍵

radiansdict.update(dict2) 把字典dict2的鍵/值對更新到dict裏

radiansdict.values() 以列表返回字典中的全部值

十三.         日期和時間

獲取時間: time.localtime(time.time())

oneday = datetime.timedelta(days=1)

#今天,2014-03-21

today = datetime.date.today()

#昨天,2014-03-20

yesterday = datetime.date.today() - oneday

#明天,2014-03-22

十四.         IF條件語句

age=input()

age=int(age)

if age<10:

    print('小')

elif age<100:

    print('中')

else:

print('大')

For循環語句

#range()函數,能夠生成一個整數序列,再經過list()函數能夠轉換爲list

list=list(range(5))

sum=0

for x in list:

    sum+=x

print(sum) #10

十五.         while循環語句

sum=0

n=3

while n>0:

    sum+=n

    n-=1

print(sum)

小提示:break語句能夠在循環過程當中直接退出循環,而continue語句能夠提早結束本輪循環,並直接開始下一輪循環。一般都必須配合if語句使用。

Set去重:set([1, 1, 2, 2, 3, 3])  {1,2,3}

十六.         函數

定義:

一個函數要使用def語句,依次寫出函數名、括號、括號中的參數和冒號:,而後,在縮進塊中編寫函數體,函數的返回值用return語句返回。

       空函數:

還沒想好怎麼寫函數的代碼,就能夠先放一個pass來做爲佔位符。

       Ex:

# import math語句表示導入math包,並容許後續代碼引用math包裏的函數。

import math

def mydef(x):

    #pass #空函數

    return math.ceil(x)

print(mydef(1.25))

十七.         切片截取

List[0:3]表示,從索引0開始取,直到索引3爲止,但不包括索引3。即索引012,正好是3個元素。

十八.         迭代循環

默認狀況下,dict迭代的是key。若是要迭代value,能夠用for value in d.values(),若是要同時迭代key和value,能夠用for k, v in d.items()

enumerate函數能夠把一個list變成索引-元素對

ex;for i, value in enumerate(['A', 'B', 'C']):

     print(i, value)

十九.         判斷數據類型

isinstance(data, (int, str, types.LongType, float))  True/False

type(obj)  返回數據類型

列表生成式

       條件循環生成

       s=[x*x for x in range(5) if x%2==0]

print(s)  #[0, 4, 16]

雙重循環生成

s=[m+n for m in 'ABC' for n in 'XYZ']

print(s)  #['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

二十:高階函數:

一個函數接收另外一個函數做爲參數,還能夠把函數做爲結果值返回

Ex: def add(x,y,f):

    return f(x)+f(y)

print(add(1,-1,abs)) #2

       map():傳入的函數依次做用到序列的每一個元素,結果做爲新的Iterator返回。

              print(list(map(str,[1,2,3]))) #將數組數字轉化爲字符串

    reduce():把結果繼續和序列的下一個元素作累積計算

from functools import reduce

def fn(x,y):

    return x*10+y

print(reduce(fn,[1,2,3])) #將數組元素合併成123

filter() :用是從一個序列中篩出符合條件的元素,和map()不一樣的是,filter()把傳入的函數依次做用於每一個元素,而後根據返回值是True仍是False決定保留仍是丟棄該元素。

              def not_empty(s):

    return s and s.strip() #去除空字符串

print(list(filter(not_empty,['1','',None]))) #['1']

       sorted()函數就能夠對list進行排序,參數分別是list,處理函數,反向排序

              sorted(['bob', 'Zoo', 'Credit'], key=str.lower, reverse=True)

       函數對象有一個__name__屬性,能夠拿到函數的名字

二十一:面向對象類和實例

類:

定義類是經過class關鍵字,class後面緊接着是類名,類名一般是大寫字母的開頭的單詞,緊接着就是(object),表示該類是從哪一個類繼承下來的,一般若是沒有合適的類,就是用object類,這是全部類最終都會繼承的類。

Ex:class Student(object):

              pass

實例:

定義好了Student類,就能夠根據Student類建立出Student的實例,建立實例是經過類名+()實現的

Ex:bart=Student()

注意1:因爲類起到模板的做用,所以能夠在建立實例的時候,把一些咱們認爲必需要綁定的屬性強制寫進去,經過定義一個特殊的__init__方法,在建立實例的時候,就把namescore等屬性綁上去

構建:class Student(object):

              def  __init__(self,name,score):

                     self.name=name

                     self.score=score

              def print_score(self):

                     print(‘%s: %s’ %(self.name: self.score))

訪問:

       Lisa=Student(‘lisa’ , ’88’)

       Lisa.name //lisa

       Lisa.print_score()

修改:

       Lisa.score=’99’

       print(Lisa.score) //99

注意2:注意到__init__方法的第一個參數永遠是self,表示建立的實例自己,所以,在__init__方法內部,就能夠把各類屬性綁定到self,由於self就指向建立的實例自己。

有了__init__方法,在建立實例的時候,就不能傳入空的參數了,必須傳入與__init__方法匹配的參數,但self不須要傳,Python解釋器本身會把實例變量傳進去。

注意3:類是建立實例的模板,而實例則是一個個具體的對象,各個實例擁有的數據都互相獨立,互不影響。方法就是與實例綁定的函數,和普通函數不一樣,方法能夠直接訪問實例的數據。對於兩個實例變量,雖然它們都是同一個類的不一樣實例,但擁有的變量名稱可能不一樣。

二十二:面向對象訪問限制

若是要讓內部屬性不被外部訪問,能夠把屬性的名稱前加上兩個下劃線__,在Python中,實例的變量名若是以__開頭,就變成了一個私有變量(private),只有內部能夠訪問,外部不能訪問

Ex:class Student(object):

              def __init__(self,name):

                     self.__name=name

相關文章
相關標籤/搜索