python --內置函數

1、內置函數
 
內置函數的思惟導圖
 
 
 
一、print(self,*args,sep=' ',end='\n',file=None)
print('張穎', '張娜', '張夢', '張悅', end = ' ')   # 以什麼爲結尾,默認是回車
# 張穎 張娜 張夢 張悅

print('張穎', '張娜', '張夢', '張悅', sep = '_')  #  鏈接符,默認是空格
# 張穎_張娜_張夢_張悅

二、hash()  數字算出來就是數字自己,其餘的數據類型算完依託很長的數字 函數

print (hash(12345)) # 12345
print(hash('你是誰')) # 1399596852175174770
三、id()  查看內存地址
四、help()   # 查看幫助
五、callable()  查看函數是否可以調用
def func():
    print('as')

an = ''

print(callable(func)) # True
print(callable(an)) # False
六、dir()  此類型的數據能夠執行哪些方法(函數)
七、count()  計數
八、bin()  轉化成二進制   oct()   轉化成八進制   hex()  轉化成十六進制    
九、divmod()   計算商和餘數   
十、round()   若是是奇數,正常四捨五入,如果偶數 會五舍六入
十一、pow()  # pow(4,4) 4 的4 次方
十二、 enumerate()   列出可迭代的索引和元素
lis = ['中國','美國','日本']
# for i in range(lis):
#      print(i,lis[i])

# enumerate(iterable[, start]) -> iterator for index, value of iterable
for i, el in enumerate(lis,1):
        print(i,el)

1三、all()  any()    spa

print(all([1, 3, 5, 'ha'])) # and

print(any([1, False, None])) # or

1四、zip()   # 拉鍊函數  水桶效應 code

lst1 = ["趙四", "劉能", "香秀"]
lst2 = ["劉曉光", "王小利"] # 水桶效應
lst3 = ["街舞", "磕巴", ""]
z = zip(lst1, lst2, lst3)
print(list(z))

#[('趙四', '劉曉光', '街舞'), ('劉能', '王小利', '磕巴')]
1五、iter()   獲取迭代器,內部使用的是__iter__()方法來獲取迭代器
       next()  迭代器函數  迭代器向下執行一次,內部實際使用了__next__()方法返回迭代器的下一個項目
 
2、匿名函數
匿名函數的統一的名字:<lambda>
fn = lambda a, b: a+b
fn = fn(3, 4)
print(fn)
使用場景:配合着sorted,map,filter
 
一、sorted() 排序函數,
    語法:sorted(Iterable,key=None,reverse=False)
 
   Iterable :可迭代對象
   key:排序規則(排序函數),在sorted內部會將可迭代對象中的每個元素傳遞給這個        函數的參數,根據函數運算的結果進行排序
 
    reverse:是否倒敘,True:倒敘,False:正序
 
本身去定義排序的規則
lst = [34,56,78,32,12,34,90]
print(sorted(lst))
# 按名字長度排序
names = ['張穎一','','關穀神奇','阿蘇','慕容東方曉']

def func(s):
    return len(s) # 返回長度
# 執行流程
# 把可迭代對象中的每一項拿出來,做爲參數傳遞給後面的key函數
# 函數返回數字,根據數字進行排序
s = sorted(names,key=func)
print(s)

# ['影', '阿蘇', '張穎一', '關穀神奇', '慕容東方曉']

# 另外一種方法
print(sorted(names,key=lambda s : len(s)))
二、filter  過濾函數
語法:filter(function,Iterable)
    function:用來篩選的函數,在filter中會自動把iterable中的元素傳遞給function,而後根據function返回的True或者False來判斷是否保留此項數據
    Iterable:可迭代對象
names = ['張穎一','張影','關穀神奇','阿蘇','慕容東方曉']
# 過濾掉姓張的人
# 把可迭代對象打開,把內部元素一個一個的傳遞給前面的函數,由這個函數決定此項是否保留
f = filter(lambda name : not name.startswith(''),names)
print("__iter__" in dir(f)) # 可迭代對象
for el in f:
    print(el)
三、map 映射函數
語法:map(function,iterable)能夠對可迭代對象中的每個元素進行映射,分別去執行function
def func(e):
    return e ** 2

lst = [2,45,67,32,6]

mp = map(func,lst)
print(mp)
print(list(mp))

# 用lambda
m = map(lambda i : i **2 , lst)
print(list(m))

 

# 計算兩個列表中相同位置的和

lst1 = [2,4,6,8,9]
lst2 = [1,3,5,7,10]
m = map(lambda x,y : x + y,lst1,lst2)
print(list(m))

四、eval()   執行字符串類型的代碼,並返回最終結果對象

print(eval("2+2")) # 4
n = 8
print(eval("2+n")) # 10

def func():
    print(666)
eval("func()") # 666

五、exec() 執行字符串類型的代碼blog

exec('''
for i in range(10):
    print(i)
''')
六、compile() 將字符串類型的代碼編譯,代碼對象可以經過exec語句來執行或者eval()進行求職
參數說明:
    一、resource 要執行的代碼,動態代碼片斷
    二、文件名,代碼存在的文件名,當傳入第一個的參數的時候,這個參數給空就能夠了
    三、模式,取值3個,
        一、exec:通常放一些流程語句的時候
        二、eval:resource只存放一個求值表達式
        三、single:resource存放的代碼由交互的時候,mode應該爲single
code1 = "for i in range(10):print(i)"
c1 = compile(code1,"",mode="exec")
exec(c1)

code2 = "1+4+8"
c2 = compile(code2,"", mode="eval")
a = eval(c2)
print(a)

code3 = "name = input('請輸入你的名字:')"
c3 = compile(code3,"", mode="single")
exec(c3)
print(exec(c3))

有返回值的字符串形式的代碼用eval(),沒有返回值的字符串形式的代碼用exec(),通常不多用到compile() 排序

相關文章
相關標籤/搜索