下邊的總結都是在python3上
一。基礎
1.輸出與輸入:
輸出:print(變量/字符串)
輸入:input() 返回的是字符串
price=input() print(price)
2.python風格
(1)注釋 #
(2)一般情況是一行結束該句結束,但是如果想要續行,在行的結尾加上 \
(3)無需換行符也可以換行的符號:'''
(4)一行可以有多條語句,
3.標識符
基本和java類似,同時也區分大小寫
關鍵字:
4.表達式
(1)根據值確定類型
(2)以”引用“的方式實現賦值
(3)增量操作符:+= -= *= /= %= ** = <<= >>= &= ^= |=
5.python數據類型
(1)(長)整型:整型和長整型並不嚴格區分,整型值后加“ L”即為長整型
(2)布爾型:僅有2個值:True、 False,本質上是用整型的1、 0分別存儲的
(3)浮點數:即數學中的實數,可以類似科學計數法表示
(4)復數型:實數+虛數 就是復數,虛數部分必須有j
復數可以分離實數部分和虛數部分:復數.real 復數.imag
復數的共軛:復數.conjugate()
(5)字符串:單引號、雙引號、三引號內的都是字符串,不可變類型
(6)列表:強大的類型,用方括號 [] 界別,可變類型
(7)元組:與列表相似,用小括號 () 界別,不可變類型
(8)映射類型 字典:用大括號 {} 界別,類似於哈希表的鍵值對
6 運算符
乘方**、正負號+ -、乘除* /、整除//、 取余%、加減+ -
整型除法返回浮點數,要得到整型結果使用//
7.比較運算
數值的比較:按值比大小
字符串的比較:按ASCII碼值大小
不等於只用“ !=”表示,不支持“ <>”
8.邏輯運算:
邏輯運算符優先級:not、 and、 or
9.字符運算符:
原始字符串操作符 (r / R):– 用於一些不希望轉義字符起作用的地方
Unicode 字符串操作符( u / U ):– 轉換成Unicode字符串
f = open(r'c:\python\test.py','w') #不會報錯 f = open('c:\python\test.py','w') #會報錯
10 內建函數
內建函數不需要import就可以使用,而非內建函數則需要import
from math import *
print(floor(-35.4))
Python通常用“ import 模塊”的方式將現成模塊中的函數、類等重用到其他代碼塊中
import math print(math.pi)
導入多個模塊
import ModuleName1, ModuleName2, …
模塊里導入指定的模塊屬性,也就是把指定名稱導入到當前作用域
from Module1 import ModuleElement
11 包
一個有層次的文件目錄結構,定義了一個由模塊和子包組成的 Python 應用程序執行環境
#方式一
import AAA.CCC.c1 AAA.CCC.c1.func1(123)
#方式二
from AAA.CCC.c1 import func1 func1(123)
12庫
庫是一組具有相關功能的模塊的集合
二。面面觀
(1)range用來生成一個真是的列表
range (start, end, step=1)
range (start, end)
range (end)
(2)for循環
①iterator_object 可以是String List Tuple Dictionary File
for i in iterator_object: print(i)
②法二
for count in range(0,5): print(count)
(3)自定義函數的創建
函數名加上函數運算符, 一對小括號
– 括號之間是所有可選的參數
– 即使沒有參數, 小括號也不能省略
def addMe2Me(x): return (x+x)
函數的參數可以有一個默認值, 如果提供有默認值,在函數定義中,默認參數以賦值語句的形式提供,並且默認參數的值可以改變,默認參數一般都放在參數列表的最后,
函數可以像參數一樣傳遞給另外一個函數
def f(y,x = True): if x: print 'x is a correct word' print 'OK'
>>> f (68) 68 x is a correct word
OK
>>> f(68,False)
OK
>>> f(x=True,y=16) #允許改變參數列表中的參數順序
匿名函數
>>> r = lambda x : x + x >>> r(5) 10
(4)全局變量和局部變量
全局變量是聲明在函數外邊的變量,局部變量是聲明在函數體內部的變量。
全局變量和局部變量可以使用相同的名字
在函數體內部可以使用global語句來強調全局變量
三。本地文件獲取
(1)文件操作
對文件的操作也就那么幾種,打開文件,對文件進行讀或者寫,然后關閉文件
首先打開文件
file_obj = open(filename, mode='r', buffering=-1)
#mode為可選參數,默認值為r
#buffering也為可選參數,默認值為-1(0代表不緩沖,1或大於1的值表示緩沖一行或指定緩沖區大小)
– f.read(), f.write(), f.readline(), f.readlines(), f.writelines()
– f.close()
– f.seek()
file_obj.read(size)− 從文件中至多讀出size字節數據,返回一個字符串
file_obj.read()− 讀文件直到文件結束,返回一個字符串
demo:把一個文件的內容讀到另一個文件
f1= open(r'companies.txt') cNames = f1.readlines() for i in range(0,len(cNames)): cNames[i] = str(i+1) + ' ' + cNames[i] f1.close() f2 = open(r'scompanies.txt','w') f2.writelines(cNames) f2.close()
file_obj.seek(offset , whence=0)
− 在文件中移動文件指針,從whence(0表示文件頭部,1表示當前位置,2表示文件尾部)偏移offset個字節
- whence參數可選,默認值為0
(2)獲取網絡數據
import urllib.request import re dBytes = urllib.request.urlopen('https://hk.finance.yahoo.com/q/cp?s=%5EDJI').read() dStr = dBytes.decode() #在python3中urllib.read()返回bytes對象而非str,語句功能是將dStr轉換成str m = re.findall('<tr><td class="yfnc_tabledata1"><b><a href=".*?">(.*?)</a></b></td><td class="yfnc_tabledata1">(.*?)</td>.*?<b>(.*?)</b>.*?</tr>', dStr) if m: print(m) print ('\n') print (len(m)) else: print ('not match')
#re系列:
#re.match 嘗試從字符串的開始匹配一個模式,如果匹配成功,則返回一個Match,否則返回一個None;
#re.search函數會在字符串內查找模式匹配,只到找到第一個匹配然后返回,如果字符串沒有匹配,則返回None。
#re.sub用於替換字符串中的匹配項
#re.split來分割字符串,如:re.split(r'\s+', text);將字符串按空格分割成一個單詞列表
#re.findall可以獲取字符串中所有匹配的字符串。如:re.findall(r'\w*oo\w*', text);獲取字符串中,包含'oo'的所有單詞。
#re.compile可以把正則表達式編譯成一個正則表達式對象。可以把那些經常使用的正則表達式編譯成正則表達式對象,這樣可以提高一定的效率。
import re text = "JGood is a handsome boy, he is cool, clever, and so on..." regex = re.compile(r'\w*oo\w*') print regex.findall(text) #查找所有包含'oo'的單詞 print regex.sub(lambda m: '[' + m.group(0) + ']', text) #將字符串中含有'oo'的單詞用[]括起來。 import re text = "JGood is a handsome boy, he is cool, clever, and so on..."
regex = re.compile(r'\w*oo\w*') print regex.findall(text) #查找所有包含'oo'的單詞 print regex.sub(lambda m: '[' + m.group(0) + ']', text) #將字符串中含有'oo'的單詞用[]括起來。
(3)序列
序列包括字符串(Strings),元組(Lists),列表(Tuples)
str = 'Hello, World!' aList = [2, 3, 5, 7, 11] aTuple = ('Sunday', 'happy' ) pList = [('AXP', 'American Express Company', '86.40'),('BA', 'The Boeing Company', '122.64'),('CAT', 'Caterpillar Inc.', '99.44'),
('CSCO', 'Cisco Systems, Inc.', '23.78')('CVX', 'Chevron Corporation', '115.91')]
序列的訪問模式
元素從0開始通過下標偏移量訪問
一次可訪問一個或多個元素
序列相關操作
標准類型運算符:值比較(<,>,<=,>=,==,!=),對象身份比較(is,is not),布爾運算(not,and,or)
>>> 'apple' < 'banana' True >>> [1,3,5] != [2,4,6] True >>> aTuple = ('BA', 'The Boeing Company', '122.64') >>> bTuple = aTuple >>> bTuple is not aTuple False >>> ('86.40' < '122.64') and ('apple' > 'banana') False
序列類型運算符:獲取,重復,連接,判斷
x in s,x not in s,s + t,s * n, n * s,s[i],s[i:j],s[i:j:k]
>>> week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] >>> print week[1], week[-2], '\n', week[1:4], '\n', week[:6], '\n', week[::-1] Tuesday Saturday ['Tuesday', 'Wednesday', 'Thursday'] ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] ['Sunday', 'Saturday', 'Friday', 'Thursday', 'Wednesday', 'Tuesday', 'Monday'] >>> 'apple' * 3 'appleappleapple' >>> 'pine' + 'apple' 'pineapple' >>> 'BA' in ('BA', 'The Boeing Company', '122.64') True
內建函數:序列類型轉換工廠函數(list() str() basestring() tuple()),序列類型可用內建函數(enumerate() reversed() len() sorted() max() sum() min() zip())
>>> list('Hello, World!') ['H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '!'] >>> tuple("Hello, World!") ('H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '!') >>> aStr = 'Hello, World!' >>> len(aStr) 13 >>> sorted(aStr) [' ', '!', ',', 'H', 'W', 'd', 'e', 'l', 'l', 'l', 'o', 'o', 'r']
(4)字符串
首先是字符串的遍歷
# Filename: puncount.py aStr = "Hello, World!" bStr = aStr[:7] + "Python!" count = 0 for ch in bStr[:]: if ch in ',.!?': count += 1 print('There are %d punctuation marks. ' % (count))
判斷一個字符串是不是回文
sStr = "acdhdca" if (sStr == ''.join(reversed(sStr))): print('Yes') else: print ('No')
字符串的方法
(5)列表
列表可以包含可擴展的容器的對象
>>> aList = list('Hello.') >>> aList ['H', 'e', 'l', 'l', 'o', '.'] >>> aList = list('hello.') >>> aList ['h', 'e', 'l', 'l', 'o', '.'] >>> aList[0] = 'H' >>> aList ['H', 'e', 'l', 'l', 'o', '.']
可以包含不同類型的對象
>>> bList = [1,2,'a',3.5]
列表中的函數
#demo1
jScores = [9, 9, 8.5, 10, 7, 8, 8, 9, 8, 10] aScore = 9 jScores.sort() //列表排序 jScores.pop() //去掉列表的最高分和最低分 jScores.pop(0) //去掉列表的最低分 jScores.append(aScore) //列表后邊追加元素 aveScore = sum(jScores)/len(jScores) //求列表中元素的平均值 print aveScore
#demo2
week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
weekend = ['Saturday', 'Sunday']
week.extend(weekend)
for i,j in enumerate(week):
print i+1, j
Output:
1 Monday
2 Tuesday
3 Wednesday
4 Thursday
5 Friday
6 Saturday
7 Sunday
列表中的方法:
append() count() extend() index() insert() pop() remove() reverse() sort()
列表解析,動態創建列表
>>> [x for x in range(10)] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> [x ** 2 for x in range(10)] [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] >>> [x ** 2 for x in range(10) if x ** 2 < 50] [0, 1, 4, 9, 16, 25, 36, 49] >>> [(x+1,y+1) for x in range(2) for y in range(2)] [(1, 1), (1, 2), (2, 1), (2, 2)]
(6)元組
列表元素可以改變,元組元素不可以改變
>>> aList = ['AXP', 'BA', 'CAT'] >>> aTuple = ('AXP', 'BA', 'CAT') >>> aList[1] = 'Alibaba' >>> print aList >>> aTuple1[1]= 'Alibaba' >>> print aTuple ['AXP', 'Alibaba', 'CAT'] aTuple[1]='Alibaba' TypeError: 'tuple' object does not support item assignment
元組用在什么地方:
在映射類型中當作鍵值使用,函數的特殊類型參數,作為很多內建函數的返回值
元組作為函數的形式參數:
>>> def func(args1, *argst): print args1 print argst >>> func('Hello,','Wangdachui','Niuyun','Linling')
Hello, ('Wangdachui', 'Niuyun', 'Linling')
元組作為函數的常見返回類型: