【Python】【入门】一文带你掌握Python27入门 ~
文章目錄
- 一、python基礎(chǔ)
- 1.編碼問題
- 2.Python 標(biāo)識符
- 3.行與縮進(jìn)
- 4.多行語句
- 5.引號、注釋和空行
- 6.變量賦值
- 二、python進(jìn)階
- 7.Python數(shù)字
- 8.Python字符串
- 9.Python列表
- 10.Python元組
- 11.Python字典
- 12.數(shù)據(jù)類型的轉(zhuǎn)換
- 13.python運(yùn)算符
- 三、python語句
- 14.if-elif-else
- 15.for循環(huán)語句
- 16.pass語句
- 17.python函數(shù)
- 四、python文件和異常處理
- 18.Python 模塊
- 19.Python 文件I/O
- 五、參考文獻(xiàn)
一、python基礎(chǔ)
1.編碼問題
1.首先是代碼中設(shè)置的編碼問題,可以通過下面兩行代碼(二選一)解決問題
# coding=utf-8 # -*- coding: UTF-8 -*-若不添加以上兩行代碼可能匯出入如下錯(cuò)誤
2.然后是控制臺中的編碼問題,由于我們在代碼中設(shè)置中文字符串,雖然在代碼中設(shè)置了utf-8作為編碼規(guī)范,但是在控制臺(vs code)的默認(rèn)是GBK2312編碼,輸入chcp可以查到它的編號,(GBK2312的編號是936),那要與代碼中的編碼匹配,則需要控制臺的編碼:chcp 65001,如此即可
導(dǎo)入庫
找到python安裝路徑,其中有Scripts文件夾里有一個(gè)pip.exe文件,使用命令行進(jìn)入該文件下,然后
#.\pip install [安裝的庫],如導(dǎo)入xlrd庫: .\pip install xlrd2.Python 標(biāo)識符
以下劃線開頭的標(biāo)識符是有特殊意義的。
以單下劃線開頭 _foo 的代表不能直接訪問的類屬性,需通過類提供的接口進(jìn)行訪問,不能用 from xxx import * 而導(dǎo)入。
以雙下劃線開頭的 __foo 代表類的私有成員,以雙下劃線開頭和結(jié)尾的 foo 代表 Python 里特殊方法專用的標(biāo)識,如 init() 代表類的構(gòu)造函數(shù)。
3.行與縮進(jìn)
Python 的代碼塊不使用大括號 {} 來控制類,函數(shù)以及其他邏輯判斷。python 最具特色的就是用縮進(jìn)來寫模塊。
縮進(jìn)的空白數(shù)量是可變的,但是所有代碼塊語句必須包含相同的縮進(jìn)空白數(shù)量,這個(gè)必須嚴(yán)格執(zhí)行。
4.多行語句
Python語句中一般以新行作為語句的結(jié)束符。
但是我們可以使用斜杠( \)將一行的語句分為多行顯示,如下所示:
item_one = 1 item_two = 2 item_three = 3 total = item_one + \item_two + \item_three print(total)5.引號、注釋和空行
引號:
Python 可以使用引號( ’ )、雙引號( " )、三引號( ‘’’ 或 “”" ) 來表示字符串,引號的開始與結(jié)束必須是相同類型的。
注意:三引號可以由多行組成,編寫多行文本的快捷語法,常用于文檔字符串,在文件的特定地點(diǎn),被當(dāng)做注釋。
word = 'word' sentence = "這是一個(gè)句子。" paragraph = """這是一個(gè)段落。 包含了多個(gè)語句"""注釋:
單行注釋:#
多行注釋:python 中多行注釋使用三個(gè)單引號(’’’)或三個(gè)雙引號(""")。——與引號中定義字符串不同的是,字符串都是有名字的。
#這是單行注釋""" 這是多行注釋 這是多行注釋 這是多行注釋 """空行:
函數(shù)之間或類的方法之間用空行分隔,表示一段新的代碼的開始。
同一行顯示多條語句:
Python可以在同一行中使用多條語句,語句之間使用分號(;)分割==(并不建議這樣做)==
輸出:
print 默認(rèn)輸出是換行的,如果要實(shí)現(xiàn)不換行需要在變量末尾加上逗號 ,。
x=1 y=2 print(x,y) #當(dāng)括號中多于一個(gè)對象時(shí),這是一種集合輸出方式 print(x) print(y) print x,y print x print y""" 輸出: (1, 2) 1 2 1 2 1 2 """6.變量賦值
賦值說明:
Python 中的變量賦值不需要類型聲明。
每個(gè)變量在內(nèi)存中創(chuàng)建,都包括變量的標(biāo)識,名稱和數(shù)據(jù)這些信息。
每個(gè)變量在使用前都必須賦值,變量賦值以后該變量才會被創(chuàng)建。
#類型測試 int1 = 1 #這是整型 float1 = 2.0 #這是浮點(diǎn)型 string1 = "hello world" #這是字符型 list1 = ['physics', 'chemistry', 1997, 2000] #這是列表型 tup1 = ('physics', 'chemistry', 1997, 2000) #這是元組 dict1 = {'a': 1, 'b': 2, 'b': '3'} #這是字典print int1 print float1 print string1 print list1 print tup1 print dict1 print("------以下是類型------") print(type(int1)) print(type(float1)) print(type(string1)) print(type(list1)) print(type(tup1)) print(type(dict1))''' 輸出: 1 2.0 hello world ['physics', 'chemistry', 1997, 2000] ('physics', 'chemistry', 1997, 2000) {'a': 1, 'b': '3'} ------以下是類型------ <type 'int'> <type 'float'> <type 'str'> <type 'list'> <type 'tuple'> <type 'dict'> '''刪除:
可以使用del語句刪除一些對象的引用。
del語句的語法是:
del var1[,var2[,var3[....,varN]]]]也可以通過使用del語句刪除單個(gè)或多個(gè)對象的引用。例如:
del var del var_a, var_b二、python進(jìn)階
7.Python數(shù)字
python數(shù)學(xué)函數(shù)
#python中一些數(shù)字函數(shù)的用法 import math #在使用數(shù)學(xué)函數(shù)的時(shí)候要用到cmath和math庫 num1 = -10.2 print "abs函數(shù)取數(shù)字的絕對值:",abs(num1) #取絕對值,輸出10。和fabs庫差不多 num2 = 3.14 num3 = 2 num4 = 3 num5 = 4.5 print "ceil函數(shù)取數(shù)字的向上取整:",math.ceil(num2) #輸出4.0 print "cmp函數(shù)用于比較數(shù)字的大小:",cmp(num1,num2) #num1<num2輸出-1;num1==num2輸出0;num1>num2輸出1 print "floor函數(shù)取數(shù)字的向下取整:",math.floor(num2) #輸出3.0,返回的是一個(gè)浮點(diǎn)數(shù) print "取一個(gè)最大值:",max(num1,num2) #輸出3.14 print "取一個(gè)最小值:",min(num1,num2) #輸出-10.2 print "冪次方",pow(2,3) #2的3次方 print "四舍五入:",round(num2),",",round(num5) print "取根號:",math.sqrt(num3)python隨機(jī)數(shù)函數(shù)
#Python隨機(jī)數(shù)函數(shù) import math import random #使用random函數(shù)就必須導(dǎo)入random包 list2 = list(range(10)) print list2 print "隨機(jī)選擇一個(gè)0~10之間的數(shù):",random.choice(list2) #choice(s)函數(shù)用于隨機(jī)選擇序列s中的一個(gè)數(shù) print "指定遞增基數(shù)集合中的一個(gè)隨機(jī)數(shù),基數(shù)默認(rèn)值為1: ", random.randrange(100, 1000, 2) #開始為100,結(jié)束為1000,步長為2 print "隨機(jī)生成一個(gè)0~1之間的隨機(jī)數(shù)(后擴(kuò)展為隨機(jī)生成一個(gè)整數(shù)):",int(math.ceil(random.random()*1000)) print "Random number with seed 10 : ", random.random() random.shuffle(list2) #直接修改序列中的數(shù)隨機(jī)排列 print "將序列中的數(shù)隨機(jī)排列:",list2 print "隨機(jī)生成一個(gè)在一定區(qū)間中的數(shù):",random.uniform(1,10)#seed設(shè)置一個(gè)種子,設(shè)置這個(gè)種子后,所有的隨機(jī)數(shù)都在一定的規(guī)則中運(yùn)行 print random.random() print random.random() print "------- 設(shè)置種子 seed -------" random.seed( 10 ) print "Random number with seed 10 : ", random.random() # 生成同一個(gè)隨機(jī)數(shù) random.seed( 10 ) print "Random number with seed 10 : ", random.random() # 生成同一個(gè)隨機(jī)數(shù) random.seed( 10 )8.Python字符串
python的字串列表有2種取值順序:
- 從左到右索引默認(rèn)0開始的,最大范圍是字符串長度少1
- 從右到左索引默認(rèn)-1開始的,最大范圍是字符串開頭
如果你要實(shí)現(xiàn)從字符串中獲取一段子字符串的話,可以使用 [頭下標(biāo):尾下標(biāo)] 來截取相應(yīng)的字符串,其中下標(biāo)是從 0 開始算起,可以是正數(shù)或負(fù)數(shù),下標(biāo)可以為空表示取到頭或尾。
[頭下標(biāo):尾下標(biāo)] 獲取的子字符串包含頭下標(biāo)的字符,但不包含尾下標(biāo)的字符。
str = 'Hello World!'print str # 輸出完整字符串 print str[0] # 輸出字符串中的第一個(gè)字符 print str[2:5] # 輸出字符串中第三個(gè)至第六個(gè)之間的字符串 print str[2:] # 輸出從第三個(gè)字符開始的字符串 print str * 2 # 輸出字符串兩次 print str + "TEST" # 輸出連接的字符串hi = '''hi there''' print hi """ Hello World! H llo llo World! Hello World!Hello World! Hello World!TESThi theres """ #字符串拼接 var1 = 'Hello World!' print "輸出 :- ", var1[:6] + 'Runoob!' #字符串用加號拼接#Python 字符串格式化 print "My name is %s and weight is %d kg!" % ('Zara', 21) #輸出:My name is Zara and weight is 21 kg!元組和列表的區(qū)別:
1.元組使用小括號,列表使用方括號。
2.元組中的元素值是不允許修改的,但列表可以。
3.元組中的元素值是不允許刪除的,但列表元素值可以刪除。
4.同理,元組沒有pop、insert、append等對元組進(jìn)行修改刪除插入的方法或函數(shù)。
Python字符串運(yùn)算符
下表實(shí)例變量 a 值為字符串 “Hello”,b 變量值為 “Python”:
| + | 字符串連接 | >>>a + b ‘HelloPython’ |
| * | 重復(fù)輸出字符串 | >>>a * 2 ‘HelloHello’ |
| [] | 通過索引獲取字符串中字符 | >>>a[1] ‘e’ |
| [ : ] | 截取字符串中的一部分 | >>>a[1:4] ‘ell’ |
| in | 成員運(yùn)算符 - 如果字符串中包含給定的字符返回 True | >>>“H” in a True |
| not in | 成員運(yùn)算符 - 如果字符串中不包含給定的字符返回 True | >>>“M” not in a True |
| r/R | 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思來使用,沒有轉(zhuǎn)義特殊或不能打印的字符。 原始字符串除在字符串的第一個(gè)引號前加上字母"r"(可以大小寫)以外,與普通字符串有著幾乎完全相同的語法。 | >>>print r’\n’ \n >>> print R’\n’ \n |
python字符串內(nèi)建函數(shù)
#python的字符串內(nèi)建函數(shù) hello = "hello" world = "world" print hello.capitalize() #將字符串的第一個(gè)字符大寫,不改變原字符類型 print hello.center(11,"=") #第一個(gè)參數(shù)為整個(gè)字符串的長度,第二個(gè)參數(shù)為將目標(biāo)字符串居中后,前后字符位置填充的內(nèi)容 print hello.count('l',0,len(hello)) #統(tǒng)計(jì)字符串里某個(gè)字符出現(xiàn)的次數(shù) print hello.endswith("o",0,len(hello)) #用于判斷字符串是否以指定后綴結(jié)尾,如果以指定后綴結(jié)尾返回True,否則返回False print hello.find("lo",0,len(hello)) #檢測 str 是否包含在 string 中,返回的是開始時(shí)候的索引 print ("第一個(gè)字符串:{str1}, 第二個(gè)字符串:{str2}".format(str1=hello, str2=world)) print "第一個(gè)字符串:%s, 第二個(gè)字符串:%s" % (hello , world) #增強(qiáng)了字符串格式化的功能。基本語法是通過 {} 和 : 來代替以前的 % 。 print hello.isalnum() #如果 string 至少有 一個(gè)字符 并且 所有字符 都是 字母或數(shù)字 則返回 True,否則返回 False print hello.isalpha() #如果 string 至少有 一個(gè)字符 并且 所有字符 都是 字母 則返回 True,否則返回 False str = "-" seq = ("a", "b", "c") # 字符串序列 print "用join拼接后的數(shù)組:",str.join( seq ) #將序列中的元素以指定的字符連接生成一個(gè)新的字符串。 #這一部分可以查網(wǎng)址 菜鳥教程:https://www.runoob.com/python/python-strings.html print hello""" 輸出: Hello ===hello=== 2 True 3 第一個(gè)字符串:hello, 第二個(gè)字符串:world 第一個(gè)字符串:hello, 第二個(gè)字符串:world True True 用join拼接后的數(shù)組: a-b-c hello 測試python函數(shù) """9.Python列表
List(列表) 是 Python 中使用最頻繁的數(shù)據(jù)類型。
列表可以完成大多數(shù)集合類的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)。它支持字符,數(shù)字,字符串甚至可以包含列表(即嵌套)。
列表用 [ ] 標(biāo)識,是 python 最通用的復(fù)合數(shù)據(jù)類型。
列表中值的切割也可以用到變量 [頭下標(biāo):尾下標(biāo)] ,就可以截取相應(yīng)的列表,從左到右索引默認(rèn) 0 開始,從右到左索引默認(rèn) -1 開始,下標(biāo)可以為空表示取到頭或尾。
#列表 list = [ 'hello world', 54 , 3.14, '123', 5.56 ,[111,"123"]] tinylist = [123, 'john'] plus = [list,tinylist]print list # 輸出完整列表 print list[0] # 輸出列表的第一個(gè)元素 print list[1:3] # 輸出第二個(gè)至第三個(gè)元素 print "找到列表最后的元素",list[-1] # 找到列表最后的元素 print list[2:] # 輸出從第三個(gè)開始至列表末尾的所有元素 print tinylist * 2 # 輸出列表兩次 print list + tinylist # 打印組合的列表 print list.append("159") # 使用 append() 添加元素 del list[1] # 使用del刪除元素 list[1] = 0.168 # 修改列表中的元素 # 一些方法具體參考 菜鳥教程:https://www.runoob.com/python/python-lists.html print plus""" 輸出: ['hello world', 54, 3.14, '123', 5.56, [111, '123']] hello world [54, 3.14] 找到列表最后的元素 [111, '123'] [3.14, '123', 5.56, [111, '123']] [123, 'john', 123, 'john'] ['hello world', 54, 3.14, '123', 5.56, [111, '123'], 123, 'john'] None [['hello world', 0.168, '123', 5.56, [111, '123'], '159'], [123, 'john']] """10.Python元組
元組是另一個(gè)數(shù)據(jù)類型,類似于 List(列表)。
元組用 () 標(biāo)識。內(nèi)部元素用逗號隔開。但是元組不能二次賦值,相當(dāng)于只讀列表——相當(dāng)于不能修改的列表,定義方式不同
#元組——不可修改的列表 tuple = ('hello world', 54 , 3.14, '123', 5.56 ,[111,"123"]) tinytuple = (123, 'john') plus = (tuple ,tinytuple ) #訪問元組 print tuple # 輸出完整元組 print tuple [0] # 輸出元組的第一個(gè)元素 print tuple [1:3] # 輸出第二個(gè)至第三個(gè)元素 print tuple [2:] # 輸出從第三個(gè)開始至元組末尾的所有元素 #增加元組元素。當(dāng)前元組元素不允許增加元素,所以要增加元組中的元素要新建元組,把需要添加進(jìn)去的元素添加 #修改元組元素。當(dāng)前元組元素不允許增加元素,所以要修改元組中的元素要新建元組 tuple_append = tuple + tinytuple #新的元組 print tinytuple * 2 # 輸出元組兩次 print tuple_append # 打印組合的元組 #刪除元組元素,元組中的元素值是不允許刪除的,但我們可以使用del語句來刪除整個(gè)元組 print plus""" 輸出: ('hello world', 54, 3.14, '123', 5.56, [111, '123']) hello world (54, 3.14) (3.14, '123', 5.56, [111, '123']) (123, 'john', 123, 'john') ('hello world', 54, 3.14, '123', 5.56, [111, '123'], 123, 'john') (('hello world', 54, 3.14, '123', 5.56, [111, '123']), (123, 'john')) """11.Python字典
字典(dictionary)是除列表以外python之中最靈活的內(nèi)置數(shù)據(jù)結(jié)構(gòu)類型。列表是有序的對象集合,字典是無序的對象集合。
兩者之間的區(qū)別在于:字典當(dāng)中的元素是通過鍵來存取的,而不是通過偏移存取。
字典用"{ }"標(biāo)識。字典由索引(key)和它對應(yīng)的值value組成。類似于Java中的map。
dict = {} dict['one'] = "This is one" dict[2] = "This is two" tinydict = {'name': 'python','code':3.14, 'dept': [111,"222"]} #讀取數(shù)據(jù) print dict['one'] # 輸出鍵為'one' 的值 print dict[2] # 輸出鍵為 2 的值 print tinydict # 輸出完整的字典 print tinydict.keys() # 輸出所有鍵 print tinydict.values() # 輸出所有值 #增加字典中的映射關(guān)系 def Merge(dict1, dict2): return(dict2.update(dict1)) add_dict = Merge(dict, tinydict) #將第一個(gè)參數(shù)中的合并到第二個(gè)參數(shù)的字典中去 print "合并字典,add_dict的值",add_dict,";tinydict的值",tinydict #修改字典中的映射關(guān)系 tinydict["dept"] = 123 print tinydict #刪除字典中的映射關(guān)系 del tinydict["dept"] #刪除字典中key值為“dept”的鍵值對 tinydict.clear() #清空整個(gè)字典 print tinydict """ 輸出: This is one This is two {'dept': [111, '222'], 'code': 3.14, 'name': 'python'} ['dept', 'code', 'name'] [[111, '222'], 3.14, 'python'] 合并字典,add_dict的值 None ;tinydict的值 {'dept': [111, '222'], 2: 'This is two', 'code': 3.14, 'name': 'python', 'one': 'This is one'} {'dept': 123, 2: 'This is two', 'code': 3.14, 'name': 'python', 'one': 'This is one'} {} """字典的特性:
1)不允許同一個(gè)鍵出現(xiàn)兩次。創(chuàng)建時(shí)如果同一個(gè)鍵被賦值兩次,后一個(gè)值會被記住
2)鍵必須不可變,所以可以用數(shù)字,字符串或元組充當(dāng),所以用列表就不行
12.數(shù)據(jù)類型的轉(zhuǎn)換
| int(x,base) | 將x轉(zhuǎn)換為一個(gè)整數(shù),base指的是基數(shù) |
| float(x) | 將x轉(zhuǎn)換到一個(gè)浮點(diǎn)數(shù) |
| str(x) | 將對象 x 轉(zhuǎn)換為字符串 |
| repr(x) | 將對象 x 轉(zhuǎn)換為表達(dá)式字符串 |
| tuple(s) | 將序列 s 轉(zhuǎn)換為一個(gè)元組 |
| list(s) | 將序列 s 轉(zhuǎn)換為一個(gè)列表 |
| set(s) | 轉(zhuǎn)換為可變集合 |
| dict(d) | 創(chuàng)建一個(gè)字典。d 必須是一個(gè)序列 (key,value)元組。 |
13.python運(yùn)算符
算數(shù)運(yùn)算符
| + | 加 - 兩個(gè)對象相加 | a + b 輸出結(jié)果 30 |
| - | 減 - 得到負(fù)數(shù)或是一個(gè)數(shù)減去另一個(gè)數(shù) | a - b 輸出結(jié)果 -10 |
| * | 乘 - 兩個(gè)數(shù)相乘或是返回一個(gè)被重復(fù)若干次的字符串 | a * b 輸出結(jié)果 200 |
| / | 除 - x除以y | b / a 輸出結(jié)果 2 |
| % | 取模 - 返回除法的余數(shù) | b % a 輸出結(jié)果 0 |
| ** | 冪 - 返回x的y次冪 | a**b 為10的20次方, 輸出結(jié)果 100000000000000000000 |
| // | 取整除 - 返回商的整數(shù)部分(向下取整) | >>> 9//2 4 >>> -9//2 -5 |
Python比較運(yùn)算符
以下假設(shè)變量a為10,變量b為20:
| == | 等于 - 比較對象是否相等 | (a == b) 返回 False。 |
| != | 不等于 - 比較兩個(gè)對象是否不相等 | (a != b) 返回 true. |
| <> | 不等于 - 比較兩個(gè)對象是否不相等。python3 已廢棄。 | (a <> b) 返回 true。這個(gè)運(yùn)算符類似 != 。 |
| > | 大于 - 返回x是否大于y | (a > b) 返回 False。 |
| < | 小于 - 返回x是否小于y。所有比較運(yùn)算符返回1表示真,返回0表示假。這分別與特殊的變量True和False等價(jià)。 | (a < b) 返回 true。 |
| >= | 大于等于 - 返回x是否大于等于y。 | (a >= b) 返回 False。 |
| <= | 小于等于 - 返回x是否小于等于y。 | (a <= b) 返回 true。 |
Python賦值運(yùn)算符
以下假設(shè)變量a為10,變量b為20:
| = | 簡單的賦值運(yùn)算符 | c = a + b 將 a + b 的運(yùn)算結(jié)果賦值為 c |
| += | 加法賦值運(yùn)算符 | c += a 等效于 c = c + a |
| -= | 減法賦值運(yùn)算符 | c -= a 等效于 c = c - a |
| *= | 乘法賦值運(yùn)算符 | c *= a 等效于 c = c * a |
| /= | 除法賦值運(yùn)算符 | c /= a 等效于 c = c / a |
| %= | 取模賦值運(yùn)算符 | c %= a 等效于 c = c % a |
| **= | 冪賦值運(yùn)算符 | c **= a 等效于 c = c ** a |
| //= | 取整除賦值運(yùn)算符 | c //= a 等效于 c = c // a |
Python位運(yùn)算符
按位運(yùn)算符是把數(shù)字看作二進(jìn)制來進(jìn)行計(jì)算的。Python中的按位運(yùn)算法則如下:
下表中變量 a 為 60,b 為 13,二進(jìn)制格式如下:
a = 0011 1100b = 0000 1101-----------------a&b = 0000 1100a|b = 0011 1101a^b = 0011 0001~a = 1100 0011| & | 按位與運(yùn)算符:參與運(yùn)算的兩個(gè)值,如果兩個(gè)相應(yīng)位都為1,則該位的結(jié)果為1,否則為0 | (a & b) 輸出結(jié)果 12 ,二進(jìn)制解釋: 0000 1100 |
| | | 按位或運(yùn)算符:只要對應(yīng)的二個(gè)二進(jìn)位有一個(gè)為1時(shí),結(jié)果位就為1。 | (a | b) 輸出結(jié)果 61 ,二進(jìn)制解釋: 0011 1101 |
| ^ | 按位異或運(yùn)算符:當(dāng)兩對應(yīng)的二進(jìn)位相異時(shí),結(jié)果為1 | (a ^ b) 輸出結(jié)果 49 ,二進(jìn)制解釋: 0011 0001 |
| ~ | 按位取反運(yùn)算符:對數(shù)據(jù)的每個(gè)二進(jìn)制位取反,即把1變?yōu)?,把0變?yōu)? 。~x 類似于 -x-1 | (~a ) 輸出結(jié)果 -61 ,二進(jìn)制解釋: 1100 0011,在一個(gè)有符號二進(jìn)制數(shù)的補(bǔ)碼形式。 |
| << | 左移動(dòng)運(yùn)算符:運(yùn)算數(shù)的各二進(jìn)位全部左移若干位,由 << 右邊的數(shù)字指定了移動(dòng)的位數(shù),高位丟棄,低位補(bǔ)0。 | a << 2 輸出結(jié)果 240 ,二進(jìn)制解釋: 1111 0000 |
| >> | 右移動(dòng)運(yùn)算符:把">>"左邊的運(yùn)算數(shù)的各二進(jìn)位全部右移若干位,>> 右邊的數(shù)字指定了移動(dòng)的位數(shù) | a >> 2 輸出結(jié)果 15 ,二進(jìn)制解釋: 0000 1111 |
Python邏輯運(yùn)算符
Python語言支持邏輯運(yùn)算符,以下假設(shè)變量 a 為 10, b為 20:
| and | x and y | 布爾"與" - 如果 x 為 False,x and y 返回 False,否則它返回 y 的計(jì)算值。 | (a and b) 返回 20。 |
| or | x or y | 布爾"或" - 如果 x 是非 0,它返回 x 的值,否則它返回 y 的計(jì)算值。 | (a or b) 返回 10。 |
| not | not x | 布爾"非" - 如果 x 為 True,返回 False 。如果 x 為 False,它返回 True。 | not(a and b) 返回 False |
Python成員運(yùn)算符
除了以上的一些運(yùn)算符之外,Python還支持成員運(yùn)算符,測試實(shí)例中包含了一系列的成員,包括字符串,列表或元組。
| in | 如果在指定的序列中找到值返回 True,否則返回 False。 | x 在 y 序列中 , 如果 x 在 y 序列中返回 True。 |
| not in | 如果在指定的序列中沒有找到值返回 True,否則返回 False。 | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。 |
Python身份運(yùn)算符
身份運(yùn)算符用于比較兩個(gè)對象的存儲單元
| is | is 是判斷兩個(gè)標(biāo)識符是不是引用自一個(gè)對象 | x is y, 類似 id(x) == id(y) , 如果引用的是同一個(gè)對象則返回 True,否則返回 False |
| is not | is not 是判斷兩個(gè)標(biāo)識符是不是引用自不同對象 | x is not y , 類似 id(a) != id(b)。如果引用的不是同一個(gè)對象則返回結(jié)果 True,否則返回 False。 |
三、python語句
14.if-elif-else
語法格式:
if 判斷條件1:執(zhí)行語句1…… elif 判斷條件2:執(zhí)行語句2…… elif 判斷條件3:執(zhí)行語句3…… else:執(zhí)行語句4……實(shí)例:
#if-elif-else num = 0 while num < 15:if num % 3 == 0:print num,"是3的倍數(shù)"elif num % 3 == 1:print num,"是除3余1的數(shù)"else:print num,"是除3余2的數(shù)"num += 115.for循環(huán)語句
語法格式:
for iterating_var in sequence:statements(s)實(shí)例:
#for循環(huán) for letter in "qwe":print "當(dāng)前字母:",letterseasons = ["spring","summer","fall","winter"] nums = (1,2,3,4) for season in seasons:print "當(dāng)前季節(jié)為:",season for num in nums:print "當(dāng)前數(shù)字是:",num通過索引迭代:
#for循環(huán)中的索引迭代 for index in range(len(seasons)): #range是生成一組序列的意思print indexprint seasons[index]循環(huán)使用 else 語句:
在 python 中,for … else 表示這樣的意思,for 中的語句和普通的沒有區(qū)別,else 中的語句會在循環(huán)正常執(zhí)行完的情況下執(zhí)行,while … else 也是一樣。
for num in range(10,20): # 迭代 10 到 20 之間的數(shù)字for i in range(2,num): # 根據(jù)因子迭代if num%i == 0: # 確定第一個(gè)因子j=num/i # 計(jì)算第二個(gè)因子print '%d 等于 %d * %d' % (num,i,j)break # 跳出當(dāng)前循環(huán)else: # 循環(huán)的 else 部分print num, '是一個(gè)質(zhì)數(shù)'循環(huán)嵌套:
#第一種嵌套 for iterating_var in sequence:for iterating_var in sequence:statements(s)statements(s) #第二種嵌套 while expression:while expression:statement(s)statement(s)16.pass語句
pass一般用于占位置。
在 Python 中有時(shí)候會看到一個(gè) def 函數(shù):
def sample(n_samples):pass該處的 pass 便是占據(jù)一個(gè)位置,因?yàn)槿绻x一個(gè)空函數(shù)程序會報(bào)錯(cuò),當(dāng)你沒有想好函數(shù)的內(nèi)容是可以用 pass 填充,使程序可以正常運(yùn)行。
17.python函數(shù)
python可以定義一個(gè)函數(shù)
可以定義一個(gè)由自己想要功能的函數(shù),以下是簡單的規(guī)則:
- 函數(shù)代碼塊以 def 關(guān)鍵詞開頭,后接函數(shù)標(biāo)識符名稱和圓括號**()**。
- 任何傳入?yún)?shù)和自變量必須放在圓括號中間。圓括號之間可以用于定義參數(shù)。
- 函數(shù)的第一行語句可以選擇性地使用文檔字符串—用于存放函數(shù)說明。
- 函數(shù)內(nèi)容以冒號起始,并且縮進(jìn)。
- return [表達(dá)式] 結(jié)束函數(shù),選擇性地返回一個(gè)值給調(diào)用方。不帶表達(dá)式的return相當(dāng)于返回 None。
1.函數(shù)的調(diào)用
定義語法:
def printme( str ):"打印傳入的字符串到標(biāo)準(zhǔn)顯示設(shè)備上"print strreturn printme("測試python函數(shù)")2.參數(shù)傳遞
在 python 中,類型屬于對象,變量是沒有類型的:
a=[1,2,3] a="Runoob"以上代碼中,[1,2,3] 是 List 類型,“Runoob” 是 String 類型,而變量 a 是沒有類型,她僅僅是一個(gè)對象的引用(一個(gè)指針),可以是 List 類型對象,也可以指向 String 類型對象。
3.python 傳不可變對象實(shí)例
# -*- coding: UTF-8 -*- def ChangeInt( a ):a = 3b = 2 ChangeInt(b) print b # 結(jié)果是 2實(shí)例中有 int 對象 2,指向它的變量是 b,在傳遞給 ChangeInt 函數(shù)時(shí),按傳值的方式復(fù)制了變量 b,a 和 b 都指向了同一個(gè) Int 對象,在 a=3 時(shí),則新生成一個(gè) int 值對象3,并讓 a 指向它。
4.python傳可變對象實(shí)例
# -*- coding: UTF-8 -*-# 可寫函數(shù)說明 def changeme( mylist ):"修改傳入的列表"mylist.append([1,2,3,4])print "函數(shù)內(nèi)取值: ", mylistreturn# 調(diào)用changeme函數(shù) mylist = [10,20,30] changeme( mylist ) print "函數(shù)外取值: ", mylist""" 輸出: 函數(shù)內(nèi)取值: [10, 20, 30, [1, 2, 3, 4]] 函數(shù)外取值: [10, 20, 30, [1, 2, 3, 4]] """上述實(shí)例修改的是值本身
5.參數(shù)
以下是調(diào)用函數(shù)時(shí)可使用的正式參數(shù)類型:
-
必備參數(shù):必備參數(shù)須以正確的順序傳入函數(shù)。調(diào)用時(shí)的數(shù)量必須和聲明時(shí)的一樣。
-
關(guān)鍵字參數(shù):關(guān)鍵字參數(shù)和函數(shù)調(diào)用關(guān)系緊密,函數(shù)調(diào)用使用關(guān)鍵字參數(shù)來確定傳入的參數(shù)值。
def printme( str ):"打印任何傳入的字符串"print strreturn#調(diào)用printme函數(shù) printme( str = "My string") -
默認(rèn)參數(shù):調(diào)用函數(shù)時(shí),默認(rèn)參數(shù)的值如果沒有傳入,則被認(rèn)為是默認(rèn)值。
#可寫函數(shù)說明 def printinfo( name, age = 35 ):"打印任何傳入的字符串"print "Name: ", nameprint "Age ", agereturn#調(diào)用printinfo函數(shù) printinfo( age=50, name="miki" ) printinfo( name="miki" ) -
不定長參數(shù):可能需要一個(gè)函數(shù)能處理比當(dāng)初聲明時(shí)更多的參數(shù)。
# 可寫函數(shù)說明 def printinfo( arg1, *vartuple ):"打印任何傳入的參數(shù)"print "輸出: "print arg1for var in vartuple:print varreturn# 調(diào)用printinfo 函數(shù) printinfo( 10 ) printinfo( 70, 60, 50 )6.return語句
若沒有返回值,直接寫return;有返回值就返回返回值
# 可寫函數(shù)說明 def sum( arg1, arg2 ):# 返回2個(gè)參數(shù)的和."total = arg1 + arg2print "函數(shù)內(nèi) : ", totalreturn total# 調(diào)用sum函數(shù) total = sum( 10, 20 )
四、python文件和異常處理
18.Python 模塊
1.import載入
#import module1[, module2[,... moduleN]] # 導(dǎo)入模塊 import support # 現(xiàn)在可以調(diào)用模塊里包含的函數(shù)了 support.print_func("Runoob")2.from…import 語句
Python 的 from 語句讓你從模塊中導(dǎo)入一個(gè)指定的部分到當(dāng)前命名空間中。
from fib import fibonacci3.dir()函數(shù)
dir() 函數(shù)一個(gè)排好序的字符串列表,內(nèi)容是一個(gè)模塊里定義過的名字。
返回的列表容納了在一個(gè)模塊里定義的所有模塊,變量和函數(shù)。
import math content = dir(math) print content """ 輸出: ['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc'] """19.Python 文件I/O
1.讀取鍵盤輸入
Python提供了兩個(gè)內(nèi)置函數(shù)從標(biāo)準(zhǔn)輸入讀入一行文本,默認(rèn)的標(biāo)準(zhǔn)輸入是鍵盤。如下:
- raw_input
- input
2.打開和關(guān)閉文件
現(xiàn)在,已經(jīng)可以向標(biāo)準(zhǔn)輸入和輸出進(jìn)行讀寫。現(xiàn)在,來看看怎么讀寫實(shí)際的數(shù)據(jù)文件。
Python 提供了必要的函數(shù)和方法進(jìn)行默認(rèn)情況下的文件基本操作。你可以用 file 對象做大部分的文件操作。
(1)open 函數(shù)
首先必須先用Python內(nèi)置的open()函數(shù)打開一個(gè)文件,創(chuàng)建一個(gè)file對象,相關(guān)的方法才可以調(diào)用它進(jìn)行讀寫。
file object = open(file_name [, access_mode][, buffering]) # file_name:file_name變量是一個(gè)包含了你要訪問的文件名稱的字符串值。 # access_mode:access_mode決定了打開文件的模式:只讀,寫入,追加等。所有可取值見如下的完全列表。這個(gè)參數(shù)是非強(qiáng)制的,默認(rèn)文件訪問模式為只讀(r)。 # buffering:如果buffering的值被設(shè)為0,就不會有寄存。如果buffering的值取1,訪問文件時(shí)會寄存行。如果將buffering的值設(shè)為大于1的整數(shù),表明了這就是的寄存區(qū)的緩沖大小。如果取負(fù)值,寄存區(qū)的緩沖大小則為系統(tǒng)默認(rèn)。| 讀 | + | + | + | + | ||
| 寫 | + | + | + | + | + | |
| 創(chuàng)建 | + | + | + | + | ||
| 覆蓋 | + | + | ||||
| 指針在開始 | + | + | + | + | ||
| 指針在結(jié)尾 | + | + |
2.File對象的屬性
一個(gè)文件被打開后,你有一個(gè)file對象,你可以得到有關(guān)該文件的各種信息。
以下是和file對象相關(guān)的所有屬性的列表:
| file.closed | 返回true如果文件已被關(guān)閉,否則返回false。 |
| file.mode | 返回被打開文件的訪問模式。 |
| file.name | 返回文件的名稱。 |
| file.softspace | 如果用print輸出后,必須跟一個(gè)空格符,則返回false。否則返回true。 |
3.close()方法
File 對象的 close()方法刷新緩沖區(qū)里任何還沒寫入的信息,并關(guān)閉該文件,這之后便不能再進(jìn)行寫入。
當(dāng)一個(gè)文件對象的引用被重新指定給另一個(gè)文件時(shí),Python 會關(guān)閉之前的文件。用 close()方法關(guān)閉文件是一個(gè)很好的習(xí)慣。
語法:
fileObject.close()4.write()方法
write()方法可將任何字符串寫入一個(gè)打開的文件。需要重點(diǎn)注意的是,Python字符串可以是二進(jìn)制數(shù)據(jù),而不是僅僅是文字。
write()方法不會在字符串的結(jié)尾添加換行符(’\n’):
語法:
fileObject.write(string)在這里,被傳遞的參數(shù)是要寫入到已打開文件的內(nèi)容。
例子:
#!/usr/bin/python # -*- coding: UTF-8 -*-# 打開一個(gè)文件 fo = open("foo.txt", "w") fo.write( "www.runoob.com!\nVery good site!\n") # 關(guān)閉打開的文件 fo.close()上述方法會創(chuàng)建foo.txt文件,并將收到的內(nèi)容寫入該文件,并最終關(guān)閉文件。
5.read()方法
read()方法從一個(gè)打開的文件中讀取一個(gè)字符串。需要重點(diǎn)注意的是,Python字符串可以是二進(jìn)制數(shù)據(jù),而不是僅僅是文字。
語法:
fileObject.read([count])在這里,被傳遞的參數(shù)是要從已打開文件中讀取的字節(jié)計(jì)數(shù)。該方法從文件的開頭開始讀入,如果沒有傳入count,它會嘗試盡可能多地讀取更多的內(nèi)容,很可能是直到文件的末尾。
例子:
這里我們用到以上創(chuàng)建的 foo.txt 文件。
#打開文件 file_read = open("fileRead.txt","a+") #讀到的字符串要寫入的內(nèi)容 write_file = file_read.read() file = open("fileWirte.txt","a+") file.write(write_file) file.close( fo.close()6.文件定位:
#打開文件 file_read = open("fileRead.txt","a+") #讀到的字符串要寫入的內(nèi)容 write_file = file_read.read() file = open("fileWirte.txt","a+") file.write(write_file) #輸出文件指針位置 position = file.tell() print position # 把指針再次重新定位到文件開頭 position = file.seek(0, 0) string = file.read() print string file_read.close() file.close() """ 輸出: 62 python is a good code language """7.重命名和刪除文件:
import os #重命名文件 os.rename(原來文件,目標(biāo)文件) #刪除文件 os.remove(文件名)實(shí)例:
import os #重命名文件 os.rename("fileRead.txt","new_fileRead.txt") file = open("new_fileRead.txt","a+") file.close() #刪除文件 os.remove("fileWrite.txt") print file.name8.mkdir()方法
可以使用os模塊的mkdir()方法在當(dāng)前目錄下創(chuàng)建新的目錄們。需要提供一個(gè)包含了要?jiǎng)?chuàng)建的目錄名稱的參數(shù)。
import os# 創(chuàng)建目錄test os.mkdir("test")9.chdir()方法
可以用chdir()方法來改變當(dāng)前的目錄。chdir()方法需要的一個(gè)參數(shù)是想設(shè)成當(dāng)前目錄的目錄名稱.
# -*- coding: UTF-8 -*-import os# 將當(dāng)前目錄改為"/home/newdir" os.chdir("/home/newdir")10.rmdir()方法
rmdir()方法刪除目錄,目錄名稱以參數(shù)傳遞。
在刪除這個(gè)目錄之前,它的所有內(nèi)容應(yīng)該先被清除。
os.remove("?F:\\sd\\sd.txt") os.rmdir("F:\\sd")11.文件目錄相關(guān)的方法
- File 對象方法: file 對象提供了操作文件的一系列方法。
- File對象方法鏈接
- OS 對象方法: 提供了處理文件及目錄的一系列方法。
- Os對象方法鏈接
7.重命名和刪除文件:
import os #重命名文件 os.rename(原來文件,目標(biāo)文件) #刪除文件 os.remove(文件名)實(shí)例:
import os #重命名文件 os.rename("fileRead.txt","new_fileRead.txt") file = open("new_fileRead.txt","a+") file.close() #刪除文件 os.remove("fileWrite.txt") print file.name8.mkdir()方法
可以使用os模塊的mkdir()方法在當(dāng)前目錄下創(chuàng)建新的目錄們。需要提供一個(gè)包含了要?jiǎng)?chuàng)建的目錄名稱的參數(shù)。
import os# 創(chuàng)建目錄test os.mkdir("test")9.chdir()方法
可以用chdir()方法來改變當(dāng)前的目錄。chdir()方法需要的一個(gè)參數(shù)是想設(shè)成當(dāng)前目錄的目錄名稱.
# -*- coding: UTF-8 -*-import os# 將當(dāng)前目錄改為"/home/newdir" os.chdir("/home/newdir")10.rmdir()方法
rmdir()方法刪除目錄,目錄名稱以參數(shù)傳遞。
在刪除這個(gè)目錄之前,它的所有內(nèi)容應(yīng)該先被清除。
os.remove("?F:\\sd\\sd.txt") os.rmdir("F:\\sd")11.文件目錄相關(guān)的方法
- File 對象方法: file 對象提供了操作文件的一系列方法。
- File對象方法鏈接
- OS 對象方法: 提供了處理文件及目錄的一系列方法。
- Os對象方法鏈接
五、參考文獻(xiàn)
菜鳥教程-python2
總結(jié)
以上是生活随笔為你收集整理的【Python】【入门】一文带你掌握Python27入门 ~的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Mybatis 之应用篇】 5_Myb
- 下一篇: websocket python爬虫_p