重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
這里的QuickSort.count叫做"函數(shù)屬性function attribute",
成都創(chuàng)新互聯(lián)公司從2013年創(chuàng)立,先為恭城等服務(wù)建站,恭城等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為恭城企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
python等動態(tài)類型語言所具有的"函數(shù)同時是頭等對象"的功能.
即代碼可以往函數(shù)對象上靈活地添加某屬性。
def?f():???
print(f.act)
f.act=123?#定義和添加一個函數(shù)對象的屬性-函數(shù)屬性
f()?#打印123
之前的快速排序用了一個count屬性在記錄排序算法的比較次數(shù)。屬于調(diào)試顯示,不是排序的核心算法..
type--類,object-or-type--類,一般是self
運行發(fā)現(xiàn):super().add(x) 與A.add(self,x)執(zhí)行結(jié)果一致;但涉及多繼承,發(fā)現(xiàn)super()只調(diào)用一次
在super機制里可以保證公共父類僅被執(zhí)行一次,至于執(zhí)行的順序,是按照MRO(Method Resolution Order):方法解析順序 進行的
super()可以調(diào)用父類中的任何方法,超(父類的父類)類的任何方法;可重寫父類同名的 init 函數(shù),及其他方法
在任何時候繼承類和重寫方法的,我們應(yīng)當用到args, kwargs將接收到的位置參數(shù)和鍵值參數(shù)給父類方法
比如,sys模塊: import sys
sys.argv 是一個 list,包含所有的命令行參數(shù).
sys.stdout sys.stdin sys.stderr 分別表示標準輸入輸出,錯誤輸出的文件對象.
sys.stdin.readline() 從標準輸入讀一行 sys.stdout.write("a") 屏幕輸出a
sys.exit(exit_code) 退出程序
sys.modules 是一個dictionary,表示系統(tǒng)中所有可用的module
sys.platform 得到運行的操作系統(tǒng)環(huán)境
sys.path 是一個list,指明所有查找module,package的路徑.
操作系統(tǒng)相關(guān)的調(diào)用和操作: import os
os.environ 一個dictionary 包含環(huán)境變量的映射關(guān)系
os.environ["HOME"] 可以得到環(huán)境變量HOME的值
os.chdir(dir) 改變當前目錄 os.chdir('d:\\outlook')
注意windows下用到轉(zhuǎn)義
os.getcwd() 得到當前目錄
os.getegid() 得到有效組id os.getgid() 得到組id
os.getuid() 得到用戶id os.geteuid() 得到有效用戶id
os.setegid os.setegid() os.seteuid() os.setuid()
os.getgruops() 得到用戶組名稱列表
os.getlogin() 得到用戶登錄名稱
os.getenv 得到環(huán)境變量
os.putenv 設(shè)置環(huán)境變量
os.umask 設(shè)置umask
os.system(cmd) 利用系統(tǒng)調(diào)用,運行cmd命令
內(nèi)置模塊(不用import就可以直接使用)常用內(nèi)置函數(shù):
help(obj) 在線幫助, obj可是任何類型
callable(obj) 查看一個obj是不是可以像函數(shù)一樣調(diào)用
repr(obj) 得到obj的表示字符串,可以利用這個字符串eval重建該對象的一個拷貝
eval_r(str) 表示合法的python表達式,返回這個表達式
dir(obj) 查看obj的name space中可見的name
hasattr(obj,name) 查看一個obj的name space中是否有name
getattr(obj,name) 得到一個obj的name space中的一個name
setattr(obj,name,value) 為一個obj的name
space中的一個name指向vale這個object
delattr(obj,name) 從obj的name space中刪除一個name
vars(obj) 返回一個object的name space。用dictionary表示
locals() 返回一個局部name space,用dictionary表示
globals() 返回一個全局name space,用dictionary表示
type(obj) 查看一個obj的類型
isinstance(obj,cls) 查看obj是不是cls的instance
issubclass(subcls,supcls) 查看subcls是不是supcls的子類
################## 類型轉(zhuǎn)換 ##################
chr(i) 把一個ASCII數(shù)值,變成字符
ord(i) 把一個字符或者unicode字符,變成ASCII數(shù)值
oct(x) 把整數(shù)x變成八進制表示的字符串
hex(x) 把整數(shù)x變成十六進制表示的字符串
str(obj) 得到obj的字符串描述
list(seq) 把一個sequence轉(zhuǎn)換成一個list
tuple(seq) 把一個sequence轉(zhuǎn)換成一個tuple
dict(),dict(list) 轉(zhuǎn)換成一個dictionary
int(x) 轉(zhuǎn)換成一個integer
long(x) 轉(zhuǎn)換成一個long interger
float(x) 轉(zhuǎn)換成一個浮點數(shù)
complex(x) 轉(zhuǎn)換成復(fù)數(shù)
max(...) 求最大值
min(...) 求最小值
1、 定義一個特殊的 __slots__ 變量,來限制該class實例能添加的屬性
2、 內(nèi)置的 @property(關(guān)鍵字) 裝飾器就是負責把一個方法變成屬性調(diào)用的。@property.setter(這里的property是類里面的屬性名)負責把一個setter方法變成屬性賦值。
3、 __str__(),__repr__(),__iter__(),__next__(),__getitem__(),__setitem__(),__delitem__(),__getattr__(),__call__()
def func(ls):
avg = sum(ls) / len(ls)
return [i-avg for i in ls]
abs()
返回一個數(shù)字的絕對值,它的參數(shù)可以是整數(shù)或者浮點數(shù)。舉個例子:
all()
參數(shù)為一個可迭代對象,如果該可迭代對象所有元素的真值都為True(或者可迭代對象為空),則返回True。它等價于:
舉個例子:
any()
和all()函數(shù)相對應(yīng),如可迭代對象所有元素中只要有一個元素真值為True,那么就返回True,如果這個可迭代對象是空的,則返回True。它等價于:
舉個例子:
bin()
將整數(shù)轉(zhuǎn)換為前綴為"0b"的二進制字符串,舉個例子:
bool()
這個函數(shù)返回一個布爾值,True或者False。常見的布爾值為False的值有:
其他大部分值的布爾值都為True。對于我們自定義的類,如果未定義__len__()特殊方法和__bool__特殊方法,那此類的對象的布爾值總為True:
如果定義了__len__(),__bool__(),則此類的對象的布爾值可能為False(取決于你如何定義這兩個方法):
callable()
callable()函數(shù)判斷參數(shù)是否可調(diào)用,如果可調(diào)用,則返回True,否則會返回False。舉個例子:
自定義的類的對象,一般情況下是不能調(diào)用的:
但可以通過定義__call__()方法來使對象變得可以調(diào)用:
關(guān)于Python的基礎(chǔ)問題可以看下這個網(wǎng)頁的視頻教程,Python基礎(chǔ)常見問題,希望我的回答能幫到你。