day 15 - 1 內置函數

来源:https://www.cnblogs.com/ysging/archive/2018/12/10/10094300.html
-Advertisement-
Play Games

內置函數 作用域相關 locals() globals() 迭代器生成器相關 next()iter() range() 幫助相關的 變數 callable() 一般用於檢測一個變數是否是函數 文件相關的 open() 記憶體相關的 輸入輸出 input() print() 我們來看一個例子 —— 列印 ...


內置函數

作用域相關 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    二級的
#   其他

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Ajax局部非同步刷新全稱ASynchronous JavaScript And XML.使用Javascript代碼獲取伺服器的數據,Ajax當中有兩個請求方法,一個是get方法,一個是post請求方法。 ①get請求方法:請求參數在URL的後面,多個參數之間用&連接。 ②post請求方法:請求參在 ...
  • 所謂原型模式是指為創建重覆對象提供一種新的可能。 介紹 當面對系統資源緊缺的情況下,如果我們在重新創建一個新的完全一樣的對象從某種意義上來講是資源的浪費,因為在新對象的創建過程中,是會有系統資源的消耗,而為了儘可能的節省系統資源,我們有必要尋找一種新的方式來創建重覆對象。 類圖描述 由於 Shape ...
  • 系統設計Design For Failure思想 Complex systems fail in spectacular ways. Failure isn’t a question of if, but when. Resilient systems recover from failure; r... ...
  • 遞歸函數 什麼是遞歸 瞭解什麼是遞歸 : 在函數中調用自身函數 最大遞歸深度預設是 997/998 —— 是 python 從記憶體角度出發做得限制 能看懂遞歸 能知道遞歸的應用場景 初識遞歸 —— 二分法的例子 演算法 —— 二分查找演算法 三級菜單 —— 遞歸實現 我們先來看一個簡單的遞歸函數 測試遞 ...
  • 概要: 1.進程同步 1).(鎖) Lock 2).信號量 Semaphore 3).事件 Event 2.進程通訊:IPC是intent-Process Communication的縮寫,含義為進程間通信或者跨進程通信,是指兩個進程之間進行數據交換的過程。IPC不是某個系統所獨有的,任何一個操作系 ...
  • 轉載自:https://www.cnblogs.com/dolphin0520/p/3932921.html Java併發編程:線程池的使用 在前面的文章中,我們使用線程的時候就去創建一個線程,這樣實現起來非常簡便,但是就會有一個問題: 如果併發的線程數量很多,並且每個線程都是執行一個時間很短的任務 ...
  • 線程與進程 1.線程:程式中單獨順序的控制流 線程本身是通過程式進行運行 線程是程式中的順序控制流,只能使用分配給程式的資源與環境 2.進程:執行中的程式 一個進程可以包含一個或多個線程 一個進程至少要包含一個線程 3.單線程:程式中只存在一個線程,實際上主方法就是一個線程 4.多線程:多線程是一個 ...
  • 內置函數(二)練習 1、用map來處理字元串列表,把列表中所有人都變成sb,比方alex_sbname=['alex','wupeiqi','yuanhao','nezha'] 2、filter 函數處理數字列表,將列表中所有的偶數篩選出來 3、隨意寫一個20行以上的文件,運行程式,先將內容讀到記憶體 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...