python初識以內置函數一

  python的內置函數一共有68個,這裏先學習55個python

做用域相關:locals()和globals()

  locals() 返回本地做用域中的全部名字面試

  globals() 返回全局做用域中的全部名字緩存

迭代器生成器相關:range() 、iter()、next()

  range() 可迭代的安全

  iter() 可迭代的.__iter__()就能獲得一個迭代器app

  next() 迭代器.__next__()就能獲得一個值  == next()ide

查看內容:dir()

  dir() 查看一個對象擁有的方法函數

調用相關:callable()、help()

  callable() 主要用來檢驗函數可否被調用學習

  help() 查看函數幫助編碼

def func():
    print("hello")
print(callable(func))
help(func())

  ps:某個方法屬於某個數據類型的變量,就能夠用.調用,若是某個方法不依賴於任何數據類型,就能夠直接調用,那麼它就是內置函數或自定義函數spa

 文件操做相關:open()、close()

  f = open('文件名',打開方式,編碼方式) 打開方式有r,w,a,r+,w+,a+六種,獲得一個文件句柄

  記得使用完後要關閉文件釋放內存。f.close()

內存相關:id()、hash()

  id()查看變量的內存地址

  hash()判斷變量是否可哈希,不可哈希時會報錯,可哈希時返回一個int類型的數字

     對於相同可哈希數據的哈希值在一次程序的執行過程當中老是不變的

輸入輸出相關:input()、print()

  input()用戶輸入,注意輸入的是字符串,根據後續要求進行轉換使用

  print()輸出

    一、print()中end的用途

print('123',end='')  # end='',在print中end默認是換行符,這裏轉換成空字符
print('456')

    二、print()中sep的用途

print(1,2,3,4,sep='q')  # 指定輸出多個值中間的分隔符

    三、print()中flush的用途

print(' 222  ',flush=True)  # 馬上把內容輸出到流文件,不作緩存

    四、print()中file的用途

f = open('file', 'w')
print('aaaa', file=f)  # 能夠指定打印的文件位置
f.close()

  print()代碼小練習——打印進度條

import time
for i in range(0,101,2):
    time.sleep(0.1)
    num = i//2  # \r可使輸出時的光標一直定位在首位
    str = '\r進度%s%% : %s\n'% (i,'*'*num) if i==100 else '\r進度%s%% : %s'% (i,'*'*num)
    print(str,end='',flush=True)

字符串類型的代碼執行:exec()、eval()、compile()

  exec()能夠執行()內的字符串python語句,沒有返回值

print(exec('1+2'))  # 沒有返回值,輸出None
exec("print('haohao')")  # 輸出haohao

  eval()和exec()同樣能夠執行字符串語句,不一樣點是有返回值

print(eval('1+2+3+4'))

    注意:eval只能用在明確執行的代碼是什麼的時候使用,不安全,exec適合簡單流程控制,eval適合有結果的簡單運算

  compile()編譯,對字符串的代碼進行編譯,而後用eval或exec執行

    compile(source,filename,model),source參數能夠傳遞一些想要執行的變量或字符串;filename參數是代碼文件名稱,在source參數傳遞時能夠寫空字符;model是指定編譯代碼的種類,能夠指定爲 ‘exec’,’eval’,’single’。當source中包含流程語句時,model應指定爲‘exec’;當source中只包含一個簡單的求值表達式,model應指定爲‘eval’;當source中包含了交互式命令語句,model應指定爲'single'。

c1 = compile('for i in range(10):print(i)', '', 'exec')  # 簡單流程控制語句
exec(c1)
c2 = compile('1+2+3+4', '', 'eval')  # 簡單運算,有返回值
print(eval(c2))
c3 = compile('user_input = input("請輸入:")', '','single')
exec(c3)
print(user_input)  # 編譯前沒有變量user_input,用戶輸入後就有了

數字相關

  複數complex() 複數沒法比較大小

  浮點數(有限小數或無限循環小數)不是小數(比浮點數多一個無限不循環小數)

 進制轉換:bin()、oct()、hex()

  bin(o) o指變量,將o轉換爲二進制

  oct(o) o指變量,將o轉換爲八進制

  hex(o) o指變量,將o轉換爲十六進制

 數學運算

  abs() 取絕對值

  divmod(a,b) 接收兩個參數a,b(被除數,除數),返回兩個參數( 商,餘)

  round() 精確到幾位小數,會四捨五入 eg:(3.145,2)

  pow() 求冪運算 (2,3) 即2的3次方 ,(2,3,3) 即2的3次方對3取餘

  sum() 接收可迭代類型參數求和 eg:sum([1,2],10) 即對1和2求和,從10開始相加,結果爲13

  min() 求參數中的最小值,能夠分開接收參數,也能夠接收可迭代類型的參數,min函數裏的key能夠設定min中參數先執行的函數

print(min(-1, 2, 3, -4, key=abs))  # 先對min裏的參數進行取絕對值再比較大小,但返回結果是原來的參數

  max() 用法同min(),求參數中的最大值

 ps:面試題小知識補充

  字符串能夠比較大小,但只是比較首字母的ascii碼

  元組不能比較大小

  在面試題時要注意:能夠經過print 後有沒有()判斷是python2仍是3

  可迭代類型取值方法:next()、for()、數據類型的強制轉換

l=range(100)
list(l[0:3])# 取第一到第三個元素,可迭代類型能夠經過數據類型強制轉換進行切片操做
l1=list(l[:])  # 取出全部元素

  判斷dict中有沒有某個key,用in/get

  is和==區別 :is是比較內存地址,==是比較值

  默認參數的陷阱面試題

def func(a, l=[]):  # 本題除了考察默認參數以外還主要考察了python中變量的賦值是賦予了變量地址
    l.append(a)
    return l
l1 = func(10)
l2 = func('1234',[])
l3 = func('a')
print(l1)
print(l2)
print(l3)
面試題
相關文章
相關標籤/搜索