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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...