1. 程式人生 > >day 15 - 1 內建函式

day 15 - 1 內建函式

內建函式

作用域相關 locals() globals()

#這兩組開始容易搞混
print(locals())  #返回本地作用域中的所有名字
print(globals()) #返回全域性作用域中的所有名字
# global   變數  這兩個是用於宣告的,是關鍵字,上面的兩個是內建函式
# nonlocal 變數

 

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

##下面的兩個做的是同樣的事情,從迭代器中取值,且真正完成功能的是 .__next__()
# 迭代器.__next__()  #這個是迭代器中的方法
# next(迭代器)       #這個是內建函式
# 迭代器 = iter(可迭代的) # 迭代器 = 可迭代的.__iter__() ##range() 的值是可以迭代的 但不是一個迭代器 range(10) range(1,11) range(1,11,2) print('__next__' in dir(range(1,11,2))) print('__next__' in dir(iter(range(1,11,2)))) #當它呼叫 iter() 轉換後,就是一個迭代器了

 

幫助相關的

dir 檢視一個變數擁有的方法
print(dir([]))
print(dir(1))

# 檢視方法名及用法
help
help(str)

 

變數 callable() 一般用於檢測一個變數是否是函式

print(callable(print))    #True

a = 1
print(callable(a))        #False
print(callable(globals))  #True

def func():pass
print(callable(func))     #True

# 某個方法屬於某個資料型別的變數,就用.呼叫
# 如果某個方法不依賴於任何資料型別,就直接呼叫  —— 內建函式 和 自定義函式

#import time  #呼叫模組  使用 import 時,其實真正呼叫的 __import__()
t = __import__('time') #一般都不這麼用 print(t.time())

 

檔案相關的 open()

# f = open('E:/py/log/test.txt')  #開啟一個檔案
print(f.writable())     #可以使用 writable() 檢測一下檔案是否可以寫
print(f.readable())    #可以使用 readable() 檢測一下檔案是否可以讀

 

記憶體相關的

#id()
#hash() - 對於相同可 hash 資料的 hash 值在一次程式的執行過程中總是不變的
#     - 字典的定址方式(同過 hash 來定址的)

print(hash(12345))                               #可 hash
print(hash('hsgda不想你走,nklgkds'))     #可 hash
print(hash('hsgda不想你走,nklgkds'))     #可 hash
print(hash(('1','aaa')))                            #可 hash
print(hash([]))                                       #不可 hash    

 

輸入輸出  input() print()

ret = input('提示 : ')
# print(ret)

print('我們的祖國是花園',end='')  #指定輸出的結束符 預設是 \n
print('我們的祖國是花園',end='')
print(1,2,3,4,5,sep='|') #指定輸出多個值之間的分隔符
f = open('file','w')  #其實螢幕也是一個檔案,只不過是看著輸入的
print('aaaa',file=f)  #預設是列印到檔案中,file=f 列印的東西寫到了檔案中
f.close()

 

我們來看一個例子  ——  列印進度條

import time
for i in range(0,101,2):
     time.sleep(0.1)
     char_num = i//2    #列印多個 *
     per_str = '\r%s%% : %s\n' % (i, '*' * char_num) \
         if i == 100 else '\r%s%% : %s' % (i,'*'*char_num)
     print(per_str,end='', flush=True) #flush 立即把內容輸出到流檔案,不作快取
print('完成')
#progress Bar  #專門由於列印進度條的

 

字串型別程式碼的執行 eval() exec() compile()  [不常用]

#'print(123)' #這樣不可以執行
#下面都可以執行
exec('print(123)')
eval('print(123)')

print(eval('1+2+3+4'))   # 有返回值
print(exec('1+2+3+4'))   #沒有返回值
# exec 和 eval 都可以執行 字串型別的程式碼
# eval 有返回值   —— 有結果的簡單計算
# exec 沒有返回值 —— 簡單的流程控制
# eval 只能用在你明確知道你要執行的程式碼是什麼,因為有很大的安全隱患

#exec 舉例說明 列印一個直角三角形
code = '''for i in range(10):
    print(i*'*')
'''
exec(code)
#compile 編譯(瞭解)
#exec 流程類的
code1 = 'for i in range(0,10): print (i)'
compile1 = compile(code1,'','exec')  #compile 編譯為 exec 的這種模式
exec(compile1)

#eval 計算類的
code2 = '1 + 2 + 3 + 4'
compile2 = compile(code2,'','eval') #這個地方的 '' 空字串是放檔案的位置的
print(eval(compile2))               #如果不是從檔案中讀取內容,就放一個空字串就可以了

#single 互動類的
code3 = 'name = input("please input your name:")'
compile3 = compile(code3,'','single')
exec(compile3) #執行時顯示互動命令,提示輸入
print(name)

# name #執行後name變數有值
# "'pythoner'" 可用來排錯

 

資料型別:bool int float complex
只有與資料型別強制轉換的時候

我們來了解下 complex

# 複數 —— complex
# 實數 : 有理數
#         無理數
# 虛數 :虛無縹緲的數
# 5 + 12j  === 複合的數 === 複數
# 6 + 15j  # j 是 python 中虛數的單位


# 浮點數(有限迴圈小數,無限迴圈小數)  != 小數 :有限迴圈小數,無限迴圈小數,無限不迴圈小數
# 所以浮點數不包括無限不迴圈小數
# 浮點數(是根據科學計數法來的)
    #354.123 = 3.54123*10**2 = 35.4123 * 10  #在這個過程中小數點是浮動的所以叫做浮點數
f = 1.781326913750135970  #當小數很長是 會出現不準確的情況
print(f)                  #因為十進位制的小數在轉為二進位制小數時會出現微弱的偏差(所有語言都這樣)



##進位制轉換(不用)
#bin    二進位制
#oct    八進位制
#hex    十六進位制

#其中 0b 0o 0x 為進位制的識別符號 後面的才是數
print(bin(10))  #0b1010
print(oct(10))  #0o12
print(hex(10))  #0xa

 

數字運算 abs divmod rount pow
 sum min max
abs 絕對值
divmod 除餘 (有用:如分頁)
rount 精確值(自動四捨五入)
pow 冪運算

print(abs(-5))
print(abs(5))

print(divmod(7,2))   # div除法 mod取餘
print(divmod(9,5))   # 一般叫做 除餘方法

print(round(3.14159,3))

print(pow(2,3))   #pow冪運算  == 2**3
print(pow(3,2))
print(pow(2,3,3)) #冪運算之後再取餘
print(pow(3,2,1))


#sum    求和
#min    計算最小值
#max    計算最大值

#可以傳兩個值
ret = sum([1,2,3,4,5,6])
print(ret)

ret = sum([1,2,3,4,5,6,],10)
print(ret)

ret = sum([1,2,3,4,5,6,10],)
print(ret)

print(min([1,2,3,4]))
print(min(1,2,3,4))
print(min(1,2,3,-4))
print(min(1,2,3,-4,key = abs)) #根據絕對值比較大小,key 可以加條件 以什麼方法運算

print(max([1,2,3,4]))
print(max(1,2,3,4))
print(max(1,2,3,-4))
print(max(1,2,3,-4,key = abs))

 

簡單分類:

##### zip filter map sorted   很重要的
### bool int float sum min max range input print hash open improt bytes len  重要的
##  abs divmod round pow eval exec dir reversed str repr dict set frozenset enumerale zip filter map sorted    二級的
#   其他