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()
整數:a=1
浮點數:a=1.234
創: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)
布爾值只有True
、False
兩種值
10/3=3.3333
9/3=3.0
10//3=3
10%3=1
餘數:
>>> divmod(10,3)
(3, 1)
四捨五入:
>>> round(10/3,4)
3.0
>>> round(10.0/3,4)
3.3333
1.絕對值
abs(-10)=10
2.四捨五入
round(1.234)=1
L[0:3]
表示,從索引0
開始取,直到索引3
爲止,但不包括索引3
。即索引0
,1
,2
,正好是3個元素
若是第一個索引是0
,還能夠省略-------》L[:3]
前10個數,每兩個取一個----------》L[:10:2]
全部數,每5個取一個--------------》L[::5]
什麼都不寫,只寫[:]
就能夠原樣複製一個list-----------》L[:]
[x * x for x in range(1, 11)]--------》
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
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, '是一個質數'
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(){ }
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
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]
高階函數除了能夠將函數做爲參數,也能夠將函數做爲結果返回。
def lazy_sum(*args): def sum(): ax = 0 for n in args: ax = ax + n return ax return sum
關鍵字lambda表示匿名函數,
匿名函數有個限制,就是隻能使用一個表達式,返回值就是該表達式的結果。
map(lambda x: x*x, [1,2,3,4,5,6])
使用匿名函數就不用擔憂名字衝突,同是匿名函數也是一個對象,能夠將匿名函數做爲參數。
ff = lambda x: x*x print ff(5)
有時候爲了加強函數的功能,但又不改變函數的定義,這種在代碼運行期間動態的增長函數的功能的方法叫裝飾器。
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
有的函數和變量,咱們僅僅但願在模塊內使用,python中咱們經過_前綴來實現。
正常的函數和變量都是被公開的,_xxx
和__xxx
這樣的函數或變量就是非公開的(private),不該該被直接引用。
帶下劃線的函數,說明該函數不能根據 from * import來導入,明顯在這個模塊中你導入的還只是包,而後經過了這個導入的包去調用他內部存在的函數。
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)
若是要讓內部屬性,不被外部訪問,能夠將屬性的名稱前面加兩個下劃線,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
繼承能夠把父類的全部功能都直接拿過來,這樣就沒必要重零作起,子類只須要新增本身特有的方法,也能夠把父類不適合的方法覆蓋重寫;
有了繼承,纔能有多態。在調用類實例方法的時候,儘可能把變量視做父類類型,這樣,全部子類類型均可以正常被接收;
1.type()
type能夠判斷一個變量、函數,類的類型。
2.isinstance()
isinstance()
判斷的是一個對象是不是該類型自己,或者位於該類型的父繼承鏈上。
3.dir()
若是要得到一個對象的全部屬性和方法,可使用dir()
函數,它返回一個包含字符串的list。
若是想對向前類進行限制只添加某幾個屬性,可使用__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'
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
一個子類同時得到多個父類的全部功能。
因爲Python容許使用多重繼承,所以,Mixin就是一種常見的設計。
只容許單一繼承的語言(如Java)不能使用Mixin的設計。
__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')
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使用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.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(a.txt).read() 去取a.txt文件
enumerate(list1) 枚舉list,map等獲取索引和元素 for index, item in enumerate(list1):
str.strip("@") 去掉以@開頭結尾的
str.startswith("#") 判斷是否以#開頭
python常見命令以下,點擊連接查看詳情
1.os
2.os.path
3.shutil
4.sys
5.inspect