簡介: 定義函數: def xx(): print("xxx") 執行函數 xx() 函數返回值: 上述中,return為返回值,返回給r。return想返回什麼就返回什麼,如果沒有寫返回值,就返回None,就是空。 函數的普通參數: 如果實參不是按照順序給形參值的情況:(在實參內指定就行了) 函數 ...
簡介:
定義函數:
def xx():
print("xxx")
執行函數
xx()
函數返回值:
def emile(): print("發郵件") return '123' r = emile() print(r) 結果: 發郵件 123
上述中,return為返回值,返回給r。return想返回什麼就返回什麼,如果沒有寫返回值,就返回None,就是空。
def emile(): if True: return True else: return False ret = emile() if ret: print('好的') else: print('滾') 結果: 好的
函數的普通參數:
def i1(p,q,r): #p,q,r為形參 print(p,q,r) #列印出p,q,r的值 return True #返回True ret = i1('11',[22,11],'33') #i1裡面的為實參,是按照順序給形參值 print(ret) 結果: 11 [22, 11] 33 True
如果實參不是按照順序給形參值的情況:(在實參內指定就行了)
def i1(p,q,r): print(p,q,r) return True ret = i1(q = '11',p = [22,11],r = '33') print(ret) 結果: [22, 11] 11 33 True
函數的預設值:
temp = "" def drive(name="小七"): #這裡的name = "小七",就是函數預設值,當函數沒有給name實參時,就會用預設值。註意預設值,都會放在形參的最後的位置。 temp = name + "開車" return temp ret = drive("小二") print(ret) ret = drive("小三") print(ret) ret = drive() print(ret) 結果: 小二開車 小三開車 小七開車
函數的動態參數:
動態參數一(*a):
def i1(*args): #保存為元組 print(args) i1(12,33,44,55) #實參能夠全部傳給a 結果: (12, 33, 44, 55)
動態參數二(**a):
def i1(**kwargs): #保存為字典形式 print(kwargs) i1(k1 = 123, k2 = 234) #實參全部傳給a 結果: {'k1': 123, 'k2': 234}
動態參數形式結合(萬能參數):
def i1(p,*args,**kwargs): print(p) print(args) print(kwargs) i1(11,22,33,43,k1 = 123, k2 = 234) 結果: 11 (22, 33, 43) {'k1': 123, 'k2': 234}
def i1(**kwargs): print(kwargs,type(kwargs)) dic={"k1":123,"k2":345} i1(**dic) 結果: {'k1': 123, 'k2': 345} <class 'dict'>
全局變數與局部變數:
全局變數要大寫,局部變數要小寫。
深淺拷貝:
對於int和str來說,深淺拷貝都是一樣的,都能拷貝完整。
對於其他,淺拷貝只拷貝最外面一層,深拷貝除最內層都要拷貝。
import copy i1 = "123avc" i2 = copy.copy(i1) #淺拷貝
i3 = copy.deepcopy(i1) #深拷貝 print(i2) print(i3) 結果: 123avc 123avc
lambda表達式:
def func1(): return 123 i = func1() print(i) f2 = lambda :123 i1 = f2() print(i1) 結果: 123 123
def func1(a1,a2): return a1+a2 i = func1(11,22) print(i) f2 = lambda a1,a2: a1+a2 i1 = f2(11,22) print(i1) 結果 33 33
Python的內置函數:
abs() 取絕對值
def func1(a1,a2): i2 = abs(a1+a2) print(i2) i = func1(-11,-22) 結果: 33
type() 查看對象類型
all() 迴圈參數,如果每個元素都為真,那麼就返回真,只要有一個為假都返回False(假:0,None,空字元串,空列表,空元組,空字典)
any() 迴圈參數,只要有一個元素是真就返回真(True)
ascii(對象) 對象的類中找_repr_功能,獲取其返回值
class Foo: def __repr__(self): return "hello" obj = Foo() r = ascii(obj) print(r) 結果: hello
bin() 二進位
oct() 八進位
int() 十進位
hex() 十六進位
#!/bin/bash/env python # -*- coding:utf-8 -*- #functio:二進位改為十進位 i = int("0b11",base=2) #其他進位之間的轉換也一樣,註意base的作用 print(i) 結果: 3
boll() 判斷真假,把一個對象轉換為布爾值
bytes() 位元組(和bytearray類似於str和list的關係) bytes("xxx",encoding="utf-8")
bytearray() 位元組列表
chr() 輸入一個數字找到相對應的字元(參照ascii表,數字找到對應的字元)
ord() 接受一個字母找到對應的數字(只使用於ascii碼)
實現隨機驗證碼:(應用到chr()--這個是對照ascii表和str())
import random tmp = "" for i in range(6): num = random.randrange(0,4) if num == 1 or num == 3: rad2 = random.randrange(0,10) tmp = tmp + str(rad2) else: rad1 = random.randrange(65,91) c1 = chr(rad1) tmp = tmp + c1 print(tmp)
flush() 使對象立即保存在硬碟中
callable() 檢查輸入對象是否可以執行(如果命令加()表示該命令可以被執行)
complie() 編譯對象,使之能成為python可以執行的代碼
divmod() 求除數的商和餘數
i1 = 10/3 print(i1) i2 = divmod(10,3) print(i2) 結果: 3.3333333333333335 (3, 1)
enumerate() 自動生成一列,預設從0開始自增1,也可以自己指定字元串轉換成數字int(字元串)
i1 = ["you","i","she","he"] for key,item in enumerate(i1): print(key,item) 結果: 0 you 1 i 2 she 3 he
eval() (做表格彙總)執行一個字元串形式的表達式
i1 = eval("1 + 3") print(i1) 結果: 4
filter(函數,可迭代對象) 迴圈可迭代的對象,獲取每一個參數(函數),篩選功能
ret = filter(lambda x:x > 22,[11,22,33,44]) for i in ret: print(i) 結果: 33 44
map(函數,可迭代對象)
def func1(x): return x + 100 ret = map(func1,[1,2,3,4,5]) print(ret) for i in ret: print(i) 結果: <map object at 0x000000000260B2B0> 101 102 103 104 105
globals() 獲取全部的全局變數
locals() 獲取全部的局部變數
hash() 獲取哈希值(為了節省記憶體,而且快速找到,優化key
isinstance() 判斷某個對象是否由某個類創建的
issubclass() 判斷是否是子類
iter() next()
obj = iter([11,22,33,44]) print(obj) r1 = next(obj) print(r1) r2 = next(obj) print(r2) 結果: <list_iterator object at 0x000000000291B1D0> 11 22
max() 取最大值
min() 取最小值
pow() 求冪
round() 四捨五入
sum() 求和
sorted() 排序:(想要排序必須是同一種類型,比如都是數字)字元串比較,先比第一個字元,以後一個一個比,然後排序
i1 = [11,22,11,33,22,44,55,66,] new_list = sorted(i1) print(new_list) 結果: [11, 11, 22, 22, 33, 44, 55, 66]
打開文件的模式有:
預設是只讀模式
r:只讀模式(預設)
w:只寫模式(不可讀,不存在創建鍵;存在則清空內容)
x:只寫模式(不可讀,不存在創建鍵,存在則報錯)
a:追加模式(不可讀,不存在創建鍵,存在則只追加內容)
+表示可以同時讀寫某個文件:
r+:讀寫(可讀,可寫)
w+:寫讀(可讀,可寫) 先清空,再寫之後就可以讀了
x+:寫讀(可讀,可寫和上面差不多)
a+:寫讀(可讀,可寫) 打開同時,指針已經到最後了,寫時追加,放在最後
b表示以位元組的形式操作:
rb 或r+b
wb 或w+b
xb 或x+b
ab 或a+b
f = open('cai.log','r',encoding="utf-8") i1 = f.read() f.close() print(i1) 結果: 中國
基本打開:
#1、只讀r i1 = open('cai.log','r') i2 = i1.read() i1.close() print(i2) #2、w,只寫模式,清空原來的內容,重新輸入,文件不存在則創建 i3 = open('cai.log','w') i4 = i3.write('111') i3.close() #3、x,只寫模式,原來有內容則報錯 i5 = open('cai.log','x') i6 = i5.write('222') i5.close() #4、追加模式,追加在末尾 i1 = open('cai.log','a') i2 = i1.write('222') i1.close()
以位元組(二進位)的方式打開:
①只讀,rb
②只寫wb
關閉:
with open("cai.log","r") as f:
f.read()
執行過後自己關閉,不需要close
Python2.7之後,with可以同時支持打開兩個文件:
with open("log1") as obj1,open("log2") as obj2:
pass
不需要消耗很大的記憶體的複製