Python學習筆記

一:中文編碼

  1:指定編碼php

  python-------》#!/usr/bin/pythoncss

  shell----------》#!/bin/bashhtml

  2:中文識別java

  # -*- coding: UTF-8 -*-  或  #coding=utf-8python

  3:多行語句shell

  咱們使用斜槓(/)將一行語句分紅多行編程

  若是是{},(),[]則直接能夠進行換行bash

       4.轉義app

  \n表示換行、\t表示製表符、\\表示\、less

       若是有不少須要轉義,則可以使用r'    '    

 '''   '''也能夠表示換行
print('''line1 line2 line3''')

  5:輸出  

  print x,y

  print默認是換行的,若是再print末尾加個逗號「,」就回不換行

       6.輸入

  shell:read -p "Please enter your age: " age

       python2:a = raw_input("請輸入你的名字")

       python3:a = input("請輸入你的名字")

二:變量和簡單類型

  python中數據類型分爲5種:數字,字符串、列表、元組、字典

  變量命名規則:

        python           shell
  文件名/模塊名    小寫,單詞用「_」分割 ----->ad_stats.py
  包名         小寫,單詞用「_」分割
  類名         單詞首字母大寫----->ConfigUtil
  全局變量名      大寫字母,單詞之間用_分割 ------->COLOR_WRITE
  普通變量                    小寫字母,單詞之間用_分割 ------->this_is_a_var
  實例變量                    以_開頭,其餘和普通變量同樣 ----->_instance_var
  普通函數                    和普通變量同樣-------------------->get_name()

2.1數字

  整數:a=1

  浮點數:a=1.234

2.2字符串

  創:var1 = 'Hello World!'

  查:print "var1[0]: ", var1[0]

    print "var2[1:5]: ", var2[1:5]

  改:print "更新字符串 :- ", var1[:6] + 'Runoob!'

  rd()函數獲取字符的整數表示,chr()函數把編碼轉換爲對應的字符

        佔位符

         'Hi, %s, you have $%d.' % ('Michael', 1000000)

    若是你不太肯定應該用什麼,%s永遠起做用,它會把任何數據類型轉換爲字符串

              

 

              另一種格式化字符串的方法是format(),他會將傳入的參數依次替換{1},{2},{3}......,...

    'Hello, {0}, 成績提高了 {1:.1f}%'.format('小明', 17.125)

2.3布爾值

   布爾值只有TrueFalse兩種值

2.4空值

2.5常量 

  10/3=3.3333

        9/3=3.0

        10//3=3

   10%3=1

2.6除法

       餘數:

            >>> divmod(10,3)
            (3, 1)

       四捨五入:

       >>> round(10/3,4)

            3.0
           >>> round(10.0/3,4)
            3.3333

2.7數學函數與運算優先級

  1.絕對值

           abs(-10)=10

       2.四捨五入

           round(1.234)=1

三:高級特性

1.切片

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

  若是第一個索引是0,還能夠省略-------》L[:3]

  前10個數,每兩個取一個----------》L[:10:2]

  全部數,每5個取一個--------------》L[::5]

  什麼都不寫,只寫[:]就能夠原樣複製一個list-----------》L[:]

2.迭代

3.列表生成器

  [x * x for x in range(1, 11)]--------》[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

四:列表(List) 

  list是一種有序的集合,能夠隨時添加和刪除其中的元素。

  list1 = ['Michael', 'Bob', 'Tracy']

  增:list1.append('adm')、

    list1.insert(1,'jack')    #插入元素到指定的位置

  刪:list1.pop(1)               #不填則刪除末尾元素

         del list1[2]

              list.remove("Bob")    #經過值來刪除元素

  查:list1[-1]

  改:list1[1] = 'Sarah',del list1[2];

  附加:s = ['python', 'java', ['asp', 'php'], 'scheme'],s[2][1]

 

五:元組

  Python的元組與列表相似,不一樣之處在於元組的元素不能修改。

  tup1 = ('physics', 'chemistry', 1997, 2000);

  :tup1[2]

  :cmp(tuple1, tuple2)

  :len(tup1)

 

六:字典

  字典是另外一種可變容器模型,且可存儲任意類型對象。

  d = {key1 : value1, key2 : value2 }

  增:

  刪: del d['key1']; # 刪除鍵是'key1'的條目

     d.pop(key1) #刪除對應的鍵值對

     d.clear();       # 清空詞典全部條目

     del d;            # 刪除詞典

  查:d['key1']

         d.get(key1)---------->value1

         d..has_key(key1)-------->返回true或者false

    d.keys()-------------->返回因此鍵['key2','key1']

    dict.values()---------->返回因此值[value1, value2]

  改:d['key1']=value3

         d.update(dict2)----------->將dict2添加到d後面

  判:d.has_key(key1)---------->存在則返回true,不然爲false

  較:cmp(dict1, dict2)

  長:len(dict)

七:運算符

  python中運算符分爲7種: 1.算術運算符    2.比較(關係)運算符     3.賦值運算符     4.邏輯運算符    5.位運算符    6.成員運算符     7.身份運算符

    1.算術運算符:+、-、*、%(求餘)、**(次冪a**b)//(取整)

     2.比較運算符:==(比較是否相等)、!=、<>(比較兩個數是否不相等)、>=、<=

    3.賦值運算符:=、+=、-=、*=、/=(除法賦值運算符)、%=(取模賦值運算符)、**=(冪賦值運算符)、//=(取整運算符)

    4.位運算符:&、|、^、

    5.and(與)、or(或)、not

    6.in(在)、not in(不在)

    7.is(是)、is not(不是)

  優先級

    

八:語句

    python分爲7種:條件語句,循環語句(while循環,for循環),break語句,continue循環語句,pass循環

    python循環語句不用括號()括起來

    1:條件語句

num = 5 
if num == 3: # 判斷num的值
print 'boss'
elif num == 2:
print 'user'
elif num == 1:
print 'worker' elif num < 0: # 值小於零時輸出
print 'error'
else:
print 'roadman' # 條件均不成立時輸出

    2:循環語句

        while...else循環

count = 0
while count < 5:
   print count, " is  less than 5"
   count = count + 1
else:
   print count, " is not less than 5"

       for循環

for num in range(10,20):  # 迭代 10 到 20 之間的數字
   for i in range(2,num): # 根據因子迭代
      if num%i == 0:      # 肯定第一個因子
         j=num/i          # 計算第二個因子
         print '%d 等於 %d * %d' % (num,i,j)
         break            # 跳出當前循環
   else:                  # 循環的 else 部分
      print num, '是一個質數'

              

九:函數

9.1函數規則

    1:函數代碼塊以def關鍵字開頭,後接函數標識符名稱和圓括號()

    2:任何傳入參數和變量必須放在圓括號中間,圓括號中能夠用於定義參數

    3:函數第一行語句能夠放文檔字符串,用於存放函數說明

    4:函數內容以冒號起始,而且縮進

#python函數
    def printinfo( name, age ):
       "打印任何傳入的字符串"
       print "Name: ", name;
       print "Age ", age;
       return;
    #調用printinfo函數
    printinfo( age=50, name="miki" );

#shell函數
   function RintedConfig(){

                      } 

9.2函數參數

    1.必備參數、2.關鍵字參數、3.默認參數、4.不定長參數

    1:必備參數

      必備參數須以正確的順序傳入函數。調用時的數量必須和聲明時的同樣。

    2:關鍵字參數

      使用關鍵字參數容許函數調用時參數的順序與聲明時不一致,由於 Python 解釋器可以用參數名匹配參數值。

      def printinfo( name, age ):

      printinfo( age=50, name="miki" );

    3:缺省參數

      調用函數時,缺省參數的值若是沒有傳入,則被認爲是默認值。

      def printinfo( name, age = 35 ):

      printinfo( name="miki" );

    4:不定長參數

      你可能須要一個函數能處理比當初聲明時更多的參數。這些參數叫作不定長參數,

      def functionname([formal_args,] *var_args_tuple ):  

      加了星號(*)的變量名會存放全部未命名的變量參數

              5:使用as給函數命名

                   若是函數名字太長,能夠用as來進行指定別名

                    from pizza import make_pizza as mp

                    

9.3高階函數

  1.map()

    map()可接受兩個參數,一個是函數,一個是Iterable,map將傳入的參數做用到序的每一個元素,並把結果做爲新的Iterable返回。

def f(x):
    return x*x

map(f, [1,2,3,4])


>>[1,4,9,16]

  2.return()

  return接收一個函數和兩個參數,reduce把結果繼續和序列的下一個元素作累積計算。

def f(x,y):
     return  x+y

>>map(f, [1,2,3,4])
>>25

  3.filter()

        用於過濾序列,filter()將元素做用於每一個人元素,並根據返回值是true或者false來決定元素的去留。

def is_odd(n):
    return n % 2==1


filter(is_odd, [1,2,3,4,5,6])

  4.sorted()

  sorted()可將元素進行排序,

       

def reversed_cmp(x, y):
    if x > y:
        return -1
    if x < y:
        return 1
    return 0



>>> sorted([36, 5, 12, 9, 21], reversed_cmp)
[36, 21, 12, 9, 5]

9.4返回函數

  高階函數除了能夠將函數做爲參數,也能夠將函數做爲結果返回。

  

def lazy_sum(*args):
    def sum():
        ax = 0
        for n in args:
            ax = ax + n
        return ax
    return sum

  

9.5匿名函數

  關鍵字lambda表示匿名函數,

  匿名函數有個限制,就是隻能使用一個表達式,返回值就是該表達式的結果。

map(lambda x: x*x, [1,2,3,4,5,6])

  使用匿名函數就不用擔憂名字衝突,同是匿名函數也是一個對象,能夠將匿名函數做爲參數。

ff = lambda x: x*x

print ff(5)

  

9.6裝飾器

     有時候爲了加強函數的功能,但又不改變函數的定義,這種在代碼運行期間動態的增長函數的功能的方法叫裝飾器。

  

def log(text):
    def decorator(func):
        def wrapper(*args, **kw):
            print('%s %s():' % (text, func.__name__))
            return func(*args, **kw)
        return wrapper
    return decorator


@log('execute')
def now():
    print('2015-3-25')

>>> now()
execute now():
2015-3-25

  

9.7偏函數

 

 十:模塊

10.1做用域

   有的函數和變量,咱們僅僅但願在模塊內使用,python中咱們經過_前綴來實現。

  正常的函數和變量都是被公開的,_xxx__xxx這樣的函數或變量就是非公開的(private),不該該被直接引用。

       帶下劃線的函數,說明該函數不能根據 from * import來導入,明顯在這個模塊中你導入的還只是包,而後經過了這個導入的包去調用他內部存在的函數。

 

 十一:面向對象編程

11.1類和實例

    class Student (Object):

    class後面接的是類名,類名首寫字母必須大寫,緊接的是object,表示該類所繼承的類,若是沒有,則繼承自object類。

              類:同一類事務的統稱。

              實例:根據類建立出來的一個個對象,每一個對象擁有不一樣的方法。

       方法:類中的函數稱爲方法。

class Student(object):
    #init是特殊方法
#init中第一個參數必須是self,表示建立實例自己,它是指向實例自己的引用,這樣才能讓實例訪問類中全部的屬性和方法。 def __init__(self, name, score):
#以self爲前綴的變量均可以提供給類中全部的方法使用 self.name = name self.score = score def print_score(self): print '%s: %s' % (self.name, self.score)

11.2訪問限制

    若是要讓內部屬性,不被外部訪問,能夠將屬性的名稱前面加兩個下劃線,python中變量以__開頭的則爲私有變量(private),只有內部能夠訪問,外部不能被訪問。

    外部要獲取和改變,只能經過get和set方法來進行。

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)

#外部直接獲取
>>> bart = Student('Bart Simpson', 98)
>>> bart.__name
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'Student' object has no attribute '__name'

#必須使用getname和setname方法
class Student(object): ... def get_name(self): return self.__name def get_score(self): return self.__score

  

11.3基礎多態

    繼承能夠把父類的全部功能都直接拿過來,這樣就沒必要重零作起,子類只須要新增本身特有的方法,也能夠把父類不適合的方法覆蓋重寫;

    有了繼承,纔能有多態。在調用類實例方法的時候,儘可能把變量視做父類類型,這樣,全部子類類型均可以正常被接收;

11.4獲取對象信息

    1.type()

    type能夠判斷一個變量、函數,類的類型。

    2.isinstance()

    isinstance()判斷的是一個對象是不是該類型自己,或者位於該類型的父繼承鏈上。

    3.dir()

    若是要得到一個對象的全部屬性和方法,可使用dir()函數,它返回一個包含字符串的list。

11.5__slots__

    若是想對向前類進行限制只添加某幾個屬性,可使用__slots__來進行限制。

    __slots__只對當前類起做用,對繼承的類不起做用。

class Student(object):
    __slots__=('name','age')

s =  Student()
s.name = 'yaohong'
s.age = 90
s.socre = 99


》》    s.socre = 99
AttributeError: 'Student' object has no attribute 'socre'

  

11.6@property

    Python內置的@property裝飾器就是負責把一個方法變成屬性調用的。

     

class Student(object):

    @property
    def birth(self):
        return self._birth

    @birth.setter
    def birth(self, value):
        self._birth = value

    @property
    def age(self):
        return 2014 - self._birth

 

11.7多繼承

    一個子類同時得到多個父類的全部功能。 

    因爲Python容許使用多重繼承,所以,Mixin就是一種常見的設計。

    只容許單一繼承的語言(如Java)不能使用Mixin的設計。

11.8定製類

__str__

class Student(object):
    def __init__(self, name):
        self.name = name

    def __str__(self):
        return self.name

    def __repr__(self):
        return self.name

print Student('YAOHONG')
print Student('YAOHONG')

    

11.9使用元類

 

十二:文件I/O

    10.1打印到屏幕

        print  「」itnihao」

    10.2讀取輸入

      1.raw_input

         str = raw_input("請輸入:");

          print "你輸入的內容是: ", str

      2.input

        input能夠接收一個函數表達式

             str = input("請輸入:");

        print "你輸入的內容是: ", str

        3.open()

        file object = open(file_name [, access_mode][, buffering])

        file_name:file_name變量是一個包含了你要訪問的文件名稱的字符串值。

        access_mode:access_mode決定了打開文件的模式:只讀,寫入,追加等。全部可取值見以下的徹底列表。這個參數是非強制的,默認文件訪問模式爲只讀(r)。

        buffering:若是buffering的值被設爲0,就不會有寄存。若是buffering的值取1,訪問文件時會寄存行。若是將buffering的值設爲大於1的整數,代表了這就是的寄存區的緩衝大小。若是取負值,寄存區的緩衝大小則爲系統默認。

      4.close()

        close()方法刷新緩衝區裏任何還沒寫入的信息,並關閉該文件,這以後便不能再進行寫入。

      5.write()

        write()方法可將任何字符串寫入一個打開的文件

      6.read()

        fo = open("foo.txt", "r+")

        str = fo.read(10);

        print "讀取的字符串是 : ", str

        # 關閉打開的文件

        fo.close()

      7.rename()

        os.rename( "test1.txt", "test2.txt" )

      8.remove()

        os.remove("test2.txt")

      8.mkdri()

        os.mkdir("test")在當前目錄下建立新的test文件

      9.chdir()

        os.chdir("/home/newdir")改變當前目錄爲/home/newdir目錄

      10.getcwd()

        os.getcwd()獲取當前目錄

      11.rmdir()

        # 刪除」/tmp/test」目錄

        os.rmdir( "/tmp/test" )

 

十三:異常處理

    1.捕獲異常:try/except

try:
    fh = open("testfile", "w")
    fh.write("這是一個測試文件,用於測試異常!!")
except IOError:
    print "Error: 沒有找到文件或讀取文件失敗"
else:
    print "內容寫入文件成功"
    fh.close()

 

    2.try/finally

       try-finally 語句不管是否發生異常都將執行最後的代碼。

    3.觸發異常

       使用raise語句本身觸發異常

def functionName( level ):
    if level < 1:
        raise Exception("Invalid level!", level)
        # 觸發異常後,後面的代碼就不會再執行

  

十四:file

    file使用open函數來建立

    經常使用函數:

              file.close()

    file.flush()

    file.next()     返回下一行

    file.read(size)      從文件讀取指定的字節數,若是未給定或爲負則讀取全部。

    file.readline(size)  讀取整行

    file.seek()  設置文件當前位置

    file.tell()     返回文件當前位置

    file.truncate()  截取文件,截取文件經過size指定

    file.write()   將指定字符串寫入文件

    file.writelines()   向文件寫入一個字符串列表

十五:OS

     os.access()   檢測文件是否可讀可寫,文件是否存在,是否擁有執行權限

     os.chdir(path)   切換到新的目錄

     os.chmod()   更改文件或者目錄權限

     os.chown()   更改文件全部者

     os.close()   關閉文件

                os.path.join('a','b')字符串拼接造成a/b

               os.system("ls")   執行shell命令,如assert os.system("rm -rf %s" % install_path) == 0, "卸載 失敗"

               os.path.exists(BIN_PATH)  判斷某個變量是否存在

    os.unlink(path)   方法用於刪除文件,若是文件是一個目錄則返回一個錯誤。

    os.remove() 刪除文件

 

十六:open

              open(a.txt).read()  去取a.txt文件

十七:enumerate

    enumerate(list1) 枚舉list,map等獲取索引和元素 for index, item in enumerate(list1):

十八:string

    str.strip("@") 去掉以@開頭結尾的

    str.startswith("#")  判斷是否以#開頭

    

十九:Python常見模塊

python常見命令以下,點擊連接查看詳情

  1.os

  2.os.path

  3.shutil

       4.sys

  5.inspect

相關文章
相關標籤/搜索