Python学习记录day3
2019獨角獸企業(yè)重金招聘Python工程師標準>>>
Python學習記錄 day3
今天是銀角大王武sir講課。先回顧了上節(jié)課所學,然后講到了面向對象思想。
set
set是一個無序且不重復,可嵌套的元素集合
class?set(object):"""set()?->?new?empty?set?objectset(iterable)?->?new?set?objectBuild?an?unordered?collection?of?unique?elements."""def?add(self,?*args,?**kwargs):?#?real?signature?unknown"""?添加?""""""Add?an?element?to?a?set.This?has?no?effect?if?the?element?is?already?present."""passdef?clear(self,?*args,?**kwargs):?#?real?signature?unknown"""?Remove?all?elements?from?this?set.?"""passdef?copy(self,?*args,?**kwargs):?#?real?signature?unknown"""?Return?a?shallow?copy?of?a?set.?"""passdef?difference(self,?*args,?**kwargs):?#?real?signature?unknown"""Return?the?difference?of?two?or?more?sets?as?a?new?set.(i.e.?all?elements?that?are?in?this?set?but?not?the?others.)"""passdef?difference_update(self,?*args,?**kwargs):?#?real?signature?unknown"""?刪除當前set中的所有包含在?new?set?里的元素?""""""?Remove?all?elements?of?another?set?from?this?set.?"""passdef?discard(self,?*args,?**kwargs):?#?real?signature?unknown"""?移除元素?""""""Remove?an?element?from?a?set?if?it?is?a?member.If?the?element?is?not?a?member,?do?nothing."""passdef?intersection(self,?*args,?**kwargs):?#?real?signature?unknown"""?取交集,新創(chuàng)建一個set?""""""Return?the?intersection?of?two?or?more?sets?as?a?new?set.(i.e.?elements?that?are?common?to?all?of?the?sets.)"""passdef?intersection_update(self,?*args,?**kwargs):?#?real?signature?unknown"""?取交集,修改原來set?""""""?Update?a?set?with?the?intersection?of?itself?and?another.?"""passdef?isdisjoint(self,?*args,?**kwargs):?#?real?signature?unknown"""?如果沒有交集,返回true??""""""?Return?True?if?two?sets?have?a?null?intersection.?"""passdef?issubset(self,?*args,?**kwargs):?#?real?signature?unknown"""?是否是子集?""""""?Report?whether?another?set?contains?this?set.?"""passdef?issuperset(self,?*args,?**kwargs):?#?real?signature?unknown"""?是否是父集?""""""?Report?whether?this?set?contains?another?set.?"""passdef?pop(self,?*args,?**kwargs):?#?real?signature?unknown"""?移除?""""""Remove?and?return?an?arbitrary?set?element.Raises?KeyError?if?the?set?is?empty."""passdef?remove(self,?*args,?**kwargs):?#?real?signature?unknown"""?移除?""""""Remove?an?element?from?a?set;?it?must?be?a?member.If?the?element?is?not?a?member,?raise?a?KeyError."""passdef?symmetric_difference(self,?*args,?**kwargs):?#?real?signature?unknown"""?差集,創(chuàng)建新對象""""""Return?the?symmetric?difference?of?two?sets?as?a?new?set.(i.e.?all?elements?that?are?in?exactly?one?of?the?sets.)"""passdef?symmetric_difference_update(self,?*args,?**kwargs):?#?real?signature?unknown"""?差集,改變原來?""""""?Update?a?set?with?the?symmetric?difference?of?itself?and?another.?"""passdef?union(self,?*args,?**kwargs):?#?real?signature?unknown"""?并集?""""""Return?the?union?of?sets?as?a?new?set.(i.e.?all?elements?that?are?in?either?set.)"""passdef?update(self,?*args,?**kwargs):?#?real?signature?unknown"""?更新?""""""?Update?a?set?with?the?union?of?itself?and?others.?"""passdef?__and__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__and__(y)?<==>?x&y?"""passdef?__cmp__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__cmp__(y)?<==>?cmp(x,y)?"""passdef?__contains__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__contains__(y)?<==>?y?in?x.?"""passdef?__eq__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__eq__(y)?<==>?x==y?"""passdef?__getattribute__(self,?name):?#?real?signature?unknown;?restored?from?__doc__"""?x.__getattribute__('name')?<==>?x.name?"""passdef?__ge__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__ge__(y)?<==>?x>=y?"""passdef?__gt__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__gt__(y)?<==>?x>y?"""passdef?__iand__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__iand__(y)?<==>?x&=y?"""passdef?__init__(self,?seq=()):?#?known?special?case?of?set.__init__"""set()?->?new?empty?set?objectset(iterable)?->?new?set?objectBuild?an?unordered?collection?of?unique?elements.#?(copied?from?class?doc)"""passdef?__ior__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__ior__(y)?<==>?x|=y?"""passdef?__isub__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__isub__(y)?<==>?x-=y?"""passdef?__iter__(self):?#?real?signature?unknown;?restored?from?__doc__"""?x.__iter__()?<==>?iter(x)?"""passdef?__ixor__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__ixor__(y)?<==>?x^=y?"""passdef?__len__(self):?#?real?signature?unknown;?restored?from?__doc__"""?x.__len__()?<==>?len(x)?"""passdef?__le__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__le__(y)?<==>?x<=y?"""passdef?__lt__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__lt__(y)?<==>?x<y?"""pass@staticmethod?#?known?case?of?__new__def?__new__(S,?*more):?#?real?signature?unknown;?restored?from?__doc__"""?T.__new__(S,?...)?->?a?new?object?with?type?S,?a?subtype?of?T?"""passdef?__ne__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__ne__(y)?<==>?x!=y?"""passdef?__or__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__or__(y)?<==>?x|y?"""passdef?__rand__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__rand__(y)?<==>?y&x?"""passdef?__reduce__(self,?*args,?**kwargs):?#?real?signature?unknown"""?Return?state?information?for?pickling.?"""passdef?__repr__(self):?#?real?signature?unknown;?restored?from?__doc__"""?x.__repr__()?<==>?repr(x)?"""passdef?__ror__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__ror__(y)?<==>?y|x?"""passdef?__rsub__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__rsub__(y)?<==>?y-x?"""passdef?__rxor__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__rxor__(y)?<==>?y^x?"""passdef?__sizeof__(self):?#?real?signature?unknown;?restored?from?__doc__"""?S.__sizeof__()?->?size?of?S?in?memory,?in?bytes?"""passdef?__sub__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__sub__(y)?<==>?x-y?"""passdef?__xor__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__xor__(y)?<==>?x^y?"""pass__hash__?=?None set >>>?se?=?{"123","456"} >>>?print(se) {'456',?'123'} >>>?li?=?[11,22,11,22] >>>?s?=?set(li) >>>?print(s) {11,?22}list創(chuàng)建有2種方式:
1)li = [ ]
2)list(),原理是調用__init__,內部執(zhí)行for循環(huán)將元素添加到list中。
b.操作集合
>>>?s.add(234) >>>?print(s) {234,?11,?22} >>>?s1?=?{11,22,33} >>>?s2?=?{22,33,44} >>>?s3?=?s1.difference(s2) >>>?#A存在,B中不存在 >>>?s4?=?s2.difference(s1) >>>?print(s3,s4) {11}?{44} >>>?s5?=?s1.symmetric_difference(s2) >>>?#把A中存在,B中不存在拿出來,把B中存在,A中不存在拿出來,組合起來。即對稱差別 >>>?print(s5) {11,?44}c.直接更新
>>>?s1.difference_update(s2) >>>?print(s1) {11} >>>?s1.symmetric_difference_update(s2) >>>?print(s1) {33,?11,?44,?22}d.移除
>>>?print(s1) {33,?11,?44,?22} >>>?s1.discard(1111)?????#不存在,不報錯 >>>?print(s1) {33,?11,?44,?22} >>>?s1.remove(11) >>>?print(s1) {33,?44,?22} >>>?s1.remove(1111)?????#不存在,報錯 Traceback?(most?recent?call?last):File?"<stdin>",?line?1,?in?<module> KeyError:?1111 >>>?s1.pop()?????#隨機移除 33 >>>?print(s1) {44,?22} >>>?ret?=?s1.pop() >>>?print(s1) {22} >>>?print(ret) 44e.交集
>>>?s1?=?{11,22,33} >>>?s2?=?{22,33,44} >>>?s3?=?s1.intersection(s2) >>>?print(s3) {33,?22}f.子集,父集
>>>?s1?=?{11,22,33} >>>?s2?=?{11,22} >>>?s1.issubset(s2) False >>>?s1.issuperset(s2) True >>>?s2.issubset(s1) Trueg.更新(批量添加)
>>>?print(s1) {33,?11,?22} >>>?li?=?[11,22,33,44,55,11,22] >>>?s1.update(li)?????#接收可迭代的參數(shù) >>>?print(s1) {33,?11,?44,?22,?55} >>>?li?=?"abcd" >>>?s1.update(li) >>>?print(s1) {33,?'d',?'a',?11,?44,?'b',?'c',?22,?55}練習題:
#!/usr/bin/env?python #_*_coding:utf-8_*_ '''*?Created?on?2016/10/23?15:54.*?@author:?Chinge_Yang. ''' #練習:尋找差異 #?數(shù)據(jù)庫中原有 old_dict?=?{"#1":?{'hostname':?"c1",?'cpu_count':?2,?'mem_capicity':?80},"#2":?{'hostname':?"c1",?'cpu_count':?2,?'mem_capicity':?80},"#3":?{'hostname':?"c1",?'cpu_count':?2,?'mem_capicity':?80} } #?cmdb?新匯報的數(shù)據(jù) new_dict?=?{"#1":?{'hostname':?"c1",?'cpu_count':?2,?'mem_capicity':?800},"#3":?{'hostname':?"c1",?'cpu_count':?2,?'mem_capicity':?80},"#4":?{'hostname':?"c2",?'cpu_count':?2,?'mem_capicity':?80} } #?需要刪除:? #?需要新建:? #?需要更新:??注意:無需考慮內部元素是否改變,只要原來存在,新匯報也存在,就是需要更新 #轉成集合 old_set?=?set(old_dict.keys()) new_set?=?set(new_dict.keys()) print("need?to?delete:%s"?%?old_set.difference(new_set)) print("need?to?create:%s"?%?new_set.difference(old_dict)) print("need?to?update:%s"?%?old_set.intersection(new_set)) #demo ''' old_set?=?set(old_dict.keys()) update_list?=?list(old_set.intersection(new_dict.keys())) new_list?=?[] del_list?=?[] for?i?in?new_dict.keys():if?i?not?in?update_list:new_list.append(i) for?i?in?old_dict.keys():if?i?not?in?update_list:del_list.append(i) print?(update_list,new_list,del_list) '''函數(shù)式編程
作用:增加重用性和可讀性
def?函數(shù)名?()?:...函數(shù)體...返回值函數(shù)的定義主要有如下要點:
def:表示函數(shù)的關鍵字
函數(shù)名:函數(shù)的名稱,日后根據(jù)函數(shù)名調用函數(shù)
函數(shù)體:函數(shù)中進行一系列的邏輯計算,如:顯示幫助,打印版本等...
參數(shù):為函數(shù)體提供數(shù)據(jù)
返回值:當函數(shù)執(zhí)行完畢后,可以給調用者返回數(shù)據(jù)。
try:要執(zhí)行的代碼
except:try里面的代碼執(zhí)行失敗則執(zhí)行里面的代碼
else:try里面的代碼執(zhí)行成功則執(zhí)行里面的代碼
1.返回值
函數(shù)是一個功能塊,該功能到底執(zhí)行成功與否,需要通過返回值來告知調用者。
以上要點中,比較重要有參數(shù)和返回值:
return:在函數(shù)中, 一旦執(zhí)行,函數(shù)執(zhí)行過程立即終止。
2.參數(shù)
參數(shù)的作用:
增加代碼可重用性
函數(shù)的有三中不同的參數(shù):
普通參數(shù)
默認參數(shù)(必須放到參數(shù)列表的最后)
指定參數(shù)
動態(tài)參數(shù)(一個*,數(shù)據(jù)類型為元組;二個*,數(shù)據(jù)類型為字典)
萬能參數(shù)(*args,**kwargs)
* ? ? 默認將傳入的參數(shù),全部放置在元組中,f1(*[1,2,3,4])
** ? ? 默認將傳入的參數(shù),全部放置在字典中,f1(**{"k1":"v1","k2":"v2"}
普通參數(shù):
#?#########?定義函數(shù)?######### #?name?叫做函數(shù)func的形式參數(shù),簡稱:形參 def?func(name):print?name #?#########?執(zhí)行函數(shù)?######### #??'test'?叫做函數(shù)func的實際參數(shù),簡稱:實參 func('test')默認參數(shù):
def?func(name,age?=?27):?????#默認參數(shù)放置最后print(name,age) func("ygqygq2") func("test",33)ygqygq2 27
test 33
指定參數(shù):
def?func(name,age):print(name,age) func(age=27,name="ygqygq2")動態(tài)參數(shù):
def?func(*name):print(name,type(name)) func("ygqygq2")('ygqygq2',) <class 'tuple'>
def?func(*name):print(name,type(name)) func(*"ygqygq2")('y', 'g', 'q', 'y', 'g', 'q', '2') <class 'tuple'>
{'age':?27,?'name':?'ygqygq2'} def?func(**kwargs):print(kwargs) dic?=?{"name":?"ygqygq2",?"age":?27} func(kk=dic){'kk': {'age': 27, 'name': 'ygqygq2'}}
def?func(**kwargs):print(kwargs) dic={"name":"ygqygq2","age":27} func(**dic){'name': 'ygqygq2', 'age': 27}
萬能參數(shù):
def?func(*args,**kwargs):print(args)print(kwargs) tu?=?(1,2,3,4) dic={"name":"ygqygq2","age":27} func(*tu,**dic)(1, 2, 3, 4)
{'name': 'ygqygq2', 'age': 27}
利用動態(tài)參數(shù)實現(xiàn)格式化輸出
str.format() ? ? #格式化輸出
str1?=?"This?is?a?{0},{1}".format("test","test1") print(str1) str2?=?"This?is?a?{0},{1}".format(*["test","test1"]) print(str2)This is a test,test1
This is a test,test1
str1?=?"I?am?{name},age?{age}".format(name="ygqygq2",age=27) print(str1) dict?=?{"name":"ygqygq2","age":27} str2?=?"I?am?{name},age?{age}".format(**dict) print(str2)I am ygqygq2,age 27
I am ygqygq2,age 27
函數(shù)補充:
1.存在同名函數(shù)時,執(zhí)行的是后面定義的
def?func1(num):return?num?+?num def?func1(num):return?num*num res?=?func1(8) print(res) name?=?"test" name?=?"ygqygq2" print(name)64
ygqygq2
2.函數(shù)參數(shù)傳遞的是引用
def?func1(a1):a1.append(888) li?=?[1,2,3,4] func1(li) print(li)[1, 2, 3, 4, 888]
3.全局變量
全局變量,所有作用域都可讀,定義時,變量名全部使用大寫字母
對全局變量進行【重新賦值】,需要添加global關鍵字
特殊:列表、字典,可修改,不可重新賦值
三元運算
三元運算(三目運算),是對簡單的條件語句的縮寫。
#?書寫格式 result?=?值1?if?條件?else?值2 #?如果條件成立,那么將?“值1”?賦值給result變量,否則,將“值2”賦值給result變量lambda表達式
#?定義函數(shù)(lambda表達式) my_lambda?=?lambda?arg?:?arg?+?1 #?執(zhí)行函數(shù) result?=?my_lambda(123)內置函數(shù)
abs(-1) ? ? ?#獲取絕對值
all() ? ? #所有為真才為真
any() ? ? #只要有真則為真
ascii() ? ? #獲取一個對象的repr方法的值
bin() ? ? #把10進制轉換成二進制
| Built-in Functions | ||||
| abs() | dict() | help() | min() | setattr() |
| all() | dir() | hex() | next() | slice() |
| any() | divmod() | id() | object() | sorted() |
| ascii() | enumerate() | input() | oct() | staticmethod() |
| bin() | eval() | int() | open() | str() |
| bool() | exec() | isinstance() | ord() | sum() |
| bytearray() | filter() | issubclass() | pow() | super() |
| bytes() | float() | iter() | print() | tuple() |
| callable() | format() | len() | property() | type() |
| chr() | frozenset() | list() | range() | vars() |
| classmethod() | getattr() | locals() | repr() | zip() |
| compile() | globals() | map() | reversed() | __import__() |
| complex() | hasattr() | max() | round() | |
| delattr() | hash() | memoryview() | set() |
詳細請看官方文檔。
一、數(shù)學運算類
| abs(x) | ?返回一個數(shù)的絕對值。參數(shù)可能是整數(shù)或浮點數(shù)。如果參數(shù)是一個復數(shù),返回它的大小。 |
| complex([real[, imag]]) | 創(chuàng)建一個復數(shù) |
| divmod(a, b) | 分別取商和余數(shù) 注意:整型、浮點型都可以 |
| float([x]) | 將一個字符串或數(shù)轉換為浮點數(shù)。如果無參數(shù)將返回0.0 |
| int([x[, base]])? | 將一個字符轉換為int類型,base表示進制 |
| long([x[, base]])? | 將一個字符轉換為long類型 |
| pow(x, y[, z])? | 返回x的y次冪 |
| range([start], stop[, step])? | 產生一個序列,默認從0開始 |
| round(x[, n])? | 四舍五入 |
| sum(iterable[, start])? | 對集合求和 |
| oct(x) | 將一個數(shù)字轉化為8進制 |
| hex(x) | 將整數(shù)x轉換為16進制字符串 |
| chr(i) | 返回整數(shù)i對應的ASCII字符 |
| bin(x) | 將整數(shù)x轉換為二進制字符串 |
| bool([x]) | 將x轉換為Boolean類型 |
?
二、集合類操作
| basestring() | str和unicode的超類 不能直接調用,可以用作isinstance判斷 |
| format(value [, format_spec]) | 格式化輸出字符串 格式化的參數(shù)順序從0開始,如“I am {0},I like {1}” |
| unichr(i) | 返回給定int類型的unicode |
| enumerate(sequence [, start = 0]) | 返回一個可枚舉的對象,該對象的next()方法將返回一個tuple |
| iter(o[, sentinel]) | 生成一個對象的迭代器,第二個參數(shù)表示分隔符 |
| max(iterable[, args...][key])? | 返回集合中的最大值 |
| min(iterable[, args...][key]) | 返回集合中的最小值 |
| dict([arg]) | 創(chuàng)建數(shù)據(jù)字典 |
| list([iterable])? | 將一個集合類轉換為另外一個集合類 |
| set() | set對象實例化 |
| frozenset([iterable]) | 產生一個不可變的set |
| str([object])? | 轉換為string類型 |
| sorted(iterable[, cmp[, key[, reverse]]])? | 隊集合排序 |
| tuple([iterable])? | 生成一個tuple類型 |
| xrange([start], stop[, step])? | xrange()函數(shù)與range()類似,但xrnage()并不創(chuàng)建列表,而是返回一個xrange對象,它的行為與列表相似,但是只在需要時才計算列表值,當列表很大時,這個特性能為我們節(jié)省內存 |
?
三、邏輯判斷
| all(iterable) | 1、集合中的元素都為真的時候為真 2、特別的,若為空串返回為True |
| any(iterable) | 1、集合中的元素有一個為真的時候為真 2、特別的,若為空串返回為False |
| cmp(x, y) | 如果x < y ,返回負數(shù);x == y, 返回0;x > y,返回正數(shù) |
?
四、反射
| callable(object) | 檢查對象object是否可調用 1、類是可以被調用的 2、實例是不可以被調用的,除非類中聲明了__call__方法 |
| classmethod() | 1、注解,用來說明這個方式是個類方法 2、類方法即可被類調用,也可以被實例調用 3、類方法類似于Java中的static方法 4、類方法中不需要有self參數(shù) |
| compile(source, filename, mode[, flags[, dont_inherit]]) | 將source編譯為代碼或者AST對象。代碼對象能夠通過exec語句來執(zhí)行或者eval()進行求值。 1、參數(shù)source:字符串或者AST(Abstract Syntax Trees)對象。 2、參數(shù) filename:代碼文件名稱,如果不是從文件讀取代碼則傳遞一些可辨認的值。 3、參數(shù)model:指定編譯代碼的種類。可以指定為 ‘exec’,’eval’,’single’。 4、參數(shù)flag和dont_inherit:這兩個參數(shù)暫不介紹 |
| dir([object]) | 1、不帶參數(shù)時,返回當前范圍內的變量、方法和定義的類型列表; 2、帶參數(shù)時,返回參數(shù)的屬性、方法列表。 3、如果參數(shù)包含方法__dir__(),該方法將被調用。當參數(shù)為實例時。 4、如果參數(shù)不包含__dir__(),該方法將最大限度地收集參數(shù)信息 |
| delattr(object, name) | 刪除object對象名為name的屬性 |
| eval(expression [, globals [, locals]]) | 計算表達式expression的值 |
| execfile(filename [, globals [, locals]]) | 用法類似exec(),不同的是execfile的參數(shù)filename為文件名,而exec的參數(shù)為字符串。 |
| filter(function, iterable) | 構造一個序列,等價于[ item for item in iterable if function(item)] 1、參數(shù)function:返回值為True或False的函數(shù),可以為None 2、參數(shù)iterable:序列或可迭代對象 |
| getattr(object, name [, defalut]) | 獲取一個類的屬性 |
| globals() | 返回一個描述當前全局符號表的字典 |
| hasattr(object, name) | 判斷對象object是否包含名為name的特性 |
| hash(object) | 如果對象object為哈希表類型,返回對象object的哈希值 |
| id(object) | 返回對象的唯一標識 |
| isinstance(object, classinfo) | 判斷object是否是class的實例 |
| issubclass(class, classinfo) | 判斷是否是子類 |
| len(s)? | 返回集合長度 |
| locals()? | 返回當前的變量列表 |
| map(function, iterable, ...)? | 遍歷每個元素,執(zhí)行function操作 |
| memoryview(obj)? | 返回一個內存鏡像類型的對象 |
| next(iterator[, default])? | 類似于iterator.next() |
| object()? | 基類 |
| property([fget[, fset[, fdel[, doc]]]])? | 屬性訪問的包裝類,設置后可以通過c.x=value等來訪問setter和getter |
| reduce(function, iterable[, initializer])? | 合并操作,從第一個開始是前兩個參數(shù),然后是前兩個的結果與第三個合并進行處理,以此類推 |
| reload(module)? | 重新加載模塊 |
| setattr(object, name, value) | 設置屬性值 |
| repr(object)? | 將一個對象變幻為可打印的格式 |
| slice() | |
| staticmethod | 聲明靜態(tài)方法,是個注解 |
| super(type[, object-or-type])? | 引用父類 |
| type(object) | 返回該object的類型 |
| vars([object])? | 返回對象的變量,若無參數(shù)與dict()方法類似 |
| bytearray([source [, encoding [, errors]]]) | 返回一個byte數(shù)組 1、如果source為整數(shù),則返回一個長度為source的初始化數(shù)組; 2、如果source為字符串,則按照指定的encoding將字符串轉換為字節(jié)序列; 3、如果source為可迭代類型,則元素必須為[0 ,255]中的整數(shù); 4、如果source為與buffer接口一致的對象,則此對象也可以被用于初始化bytearray. |
| zip([iterable, ...])? | 實在是沒有看懂,只是看到了矩陣的變幻方面 |
?
五、IO操作
| file(filename [, mode [, bufsize]]) | file類型的構造函數(shù),作用為打開一個文件,如果文件不存在且mode為寫或追加時,文件將被創(chuàng)建。添加‘b’到mode參數(shù)中,將對文件以二進制形式操作。添加‘+’到mode參數(shù)中,將允許對文件同時進行讀寫操作 1、參數(shù)filename:文件名稱。 2、參數(shù)mode:'r'(讀)、'w'(寫)、'a'(追加)。 3、參數(shù)bufsize:如果為0表示不進行緩沖,如果為1表示進行行緩沖,如果是一個大于1的數(shù)表示緩沖區(qū)的大小 。 |
| input([prompt])? | 獲取用戶輸入 推薦使用raw_input,因為該函數(shù)將不會捕獲用戶的錯誤輸入 |
| open(name[, mode[, buffering]])? | 打開文件 與file有什么不同?推薦使用open |
| 打印函數(shù) | |
| raw_input([prompt])? | 設置輸入,輸入都是作為字符串處理 |
?
open函數(shù),該函數(shù)用于文件處理
操作文件時,一般需要經(jīng)歷如下步驟:
打開文件
操作文件
關閉文件
一、打開文件
文件句柄?=?open('文件路徑',?'模式')打開文件時,需要指定文件路徑和以何等方式打開文件,打開后,即可獲取該文件句柄,日后通過此文件句柄對該文件操作。
打開文件的模式有:
r ,只讀模式【默認】
w,只寫模式【不可讀;不存在則創(chuàng)建;存在則清空內容;】
x, 只寫模式【不可讀;不存在則創(chuàng)建,存在則報錯】
a, 追加模式【可讀; ? 不存在則創(chuàng)建;存在則只追加內容;】
"+" 表示可以同時讀寫某個文件
r+, 讀寫【可讀,可寫】
w+,寫讀【可讀,可寫】
x+ ,寫讀【可讀,可寫】
a+, 寫讀【可讀,可寫】
?"b"表示以字節(jié)的方式操作
rb ?或 r+b
wb 或 w+b
xb?或 w+b
ab?或 a+b
?注:以b方式打開時,讀取到的內容是字節(jié)類型,寫入時也需要提供字節(jié)類型
二、常用文件操作函數(shù)
1.f.read(x) ? ? #讀數(shù)據(jù),有b,按字節(jié),無b按字符
2.f.seek(x) ? ? #重新定位指針,按字節(jié)
3.f.tell() ? ? #獲取指針位置,按字節(jié)
4.f.write() ? ? #寫數(shù)據(jù),有b,按字節(jié),無b,按字符
5.f.close() ? ? #關閉文件
6.for循環(huán)文件對象,讀取數(shù)據(jù)
三、管理上下文
為了避免打開文件后忘記關閉,可以通過管理上下文,即:
with?open('log','r')?as?f:...如此方式,當with代碼塊執(zhí)行完畢時,內部會自動關閉并釋放文件資源。
在Python 2.7 及以后,with又支持同時對多個文件的上下文進行管理,即:
with?open('log1')?as?obj1,?open('log2')?as?obj2:pass本文出自 “ygqygq2” 博客,謝絕轉載!
轉載于:https://my.oschina.net/ygqygq2/blog/790982
總結
以上是生活随笔為你收集整理的Python学习记录day3的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在ubuntu上安装最新稳定版本的nod
- 下一篇: Hadoop五个进程的作用和联系