Python初學總結


下邊的總結都是在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')

元組作為函數的常見返回類型:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM