內置函數

引 言

    將3.5版本中的68個內置函數,按順序逐個進行了自認爲詳細的解析,如今是時候進行個總結了。爲了方便記憶,將這些內置函數進行了以下分類:html

  數學運算

   

  類型轉換

 

  序列操做

 

  對象操做

  • help:返回對象的幫助信息
  • >>> help(str) Help on class str in module builtins: class str(object) |  str(object='') -> str |  str(bytes_or_buffer[, encoding[, errors]]) -> str |  
     |  Create a new string object from the given object. If encoding or
     |  errors is specified, then the object must expose a data buffer |  that will be decoded using the given encoding and error handler. |  Otherwise, returns the result of object.__str__() (if defined) |  or repr(object). | encoding defaults to sys.getdefaultencoding(). |  errors defaults to 'strict'. |  
     | Methods defined here: |  
     |  __add__(self, value, /) |      Return self+value. |  
      ***************************
    View Code
  • dir:返回對象或者當前做用域內的屬性列表
  • >>> import math >>> math <module 'math' (built-in)>
    >>> dir(math) ['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']
    View Code
  • id:返回對象的惟一標識符
  • >>> a = 'some text'
    >>> id(a) 69228568
    View Code
  • hash:獲取對象的哈希值
  • >>> hash('good good study') 1032709256
    View Code
  • type:返回對象的類型,或者根據傳入的參數建立一個新的類型
  • >>> type(1) # 返回對象的類型
    <class 'int'>
    
    #使用type函數建立類型D,含有屬性InfoD
    >>> D = type('D',(A,B),dict(InfoD='some thing defined in D')) >>> d = D() >>> d.InfoD 'some thing defined in D'
    View Code
  • len:返回對象的長度
  • >>> len('abcd') # 字符串
    >>> len(bytes('abcd','utf-8')) # 字節數組
    >>> len((1,2,3,4)) # 元組
    >>> len([1,2,3,4]) # 列表
    >>> len(range(1,5)) # range對象
    >>> len({'a':1,'b':2,'c':3,'d':4}) # 字典
    >>> len({'a','b','c','d'}) # 集合
    >>> len(frozenset('abcd')) #不可變集合
    View Code
  • ascii:返回對象的可打印表字符串表現方式
  • >>> ascii(1) '1'
    >>> ascii('&') "'&'"
    >>> ascii(9000000) '9000000'
    >>> ascii('中文') #非ascii字符
    "'\\u4e2d\\u6587'"
    View Code
  • format:格式化顯示值
  • #字符串能夠提供的參數 's' None
    >>> format('some string','s') 'some string'
    >>> format('some string') 'some string'
    
    #整形數值能夠提供的參數有 'b' 'c' 'd' 'o' 'x' 'X' 'n' None
    >>> format(3,'b') #轉換成二進制
    '11'
    >>> format(97,'c') #轉換unicode成字符
    'a'
    >>> format(11,'d') #轉換成10進制
    '11'
    >>> format(11,'o') #轉換成8進制
    '13'
    >>> format(11,'x') #轉換成16進制 小寫字母表示
    'b'
    >>> format(11,'X') #轉換成16進制 大寫字母表示
    'B'
    >>> format(11,'n') #和d同樣
    '11'
    >>> format(11) #默認和d同樣
    '11'
    
    #浮點數能夠提供的參數有 'e' 'E' 'f' 'F' 'g' 'G' 'n' '%' None
    >>> format(314159267,'e') #科學計數法,默認保留6位小數
    '3.141593e+08'
    >>> format(314159267,'0.2e') #科學計數法,指定保留2位小數
    '3.14e+08'
    >>> format(314159267,'0.2E') #科學計數法,指定保留2位小數,採用大寫E表示
    '3.14E+08'
    >>> format(314159267,'f') #小數點計數法,默認保留6位小數
    '314159267.000000'
    >>> format(3.14159267000,'f') #小數點計數法,默認保留6位小數
    '3.141593'
    >>> format(3.14159267000,'0.8f') #小數點計數法,指定保留8位小數
    '3.14159267'
    >>> format(3.14159267000,'0.10f') #小數點計數法,指定保留10位小數
    '3.1415926700'
    >>> format(3.14e+1000000,'F')  #小數點計數法,無窮大轉換成大小字母
    'INF'
    
    #g的格式化比較特殊,假設p爲格式中指定的保留小數位數,先嚐試採用科學計數法格式化,獲得冪指數exp,若是-4<=exp<p,則採用小數計數法,並保留p-1-exp位小數,不然按小數計數法計數,並按p-1保留小數位數
    >>> format(0.00003141566,'.1g') #p=1,exp=-5 ==》 -4<=exp<p不成立,按科學計數法計數,保留0位小數點
    '3e-05'
    >>> format(0.00003141566,'.2g') #p=1,exp=-5 ==》 -4<=exp<p不成立,按科學計數法計數,保留1位小數點
    '3.1e-05'
    >>> format(0.00003141566,'.3g') #p=1,exp=-5 ==》 -4<=exp<p不成立,按科學計數法計數,保留2位小數點
    '3.14e-05'
    >>> format(0.00003141566,'.3G') #p=1,exp=-5 ==》 -4<=exp<p不成立,按科學計數法計數,保留0位小數點,E使用大寫
    '3.14E-05'
    >>> format(3.1415926777,'.1g') #p=1,exp=0 ==》 -4<=exp<p成立,按小數計數法計數,保留0位小數點
    '3'
    >>> format(3.1415926777,'.2g') #p=1,exp=0 ==》 -4<=exp<p成立,按小數計數法計數,保留1位小數點
    '3.1'
    >>> format(3.1415926777,'.3g') #p=1,exp=0 ==》 -4<=exp<p成立,按小數計數法計數,保留2位小數點
    '3.14'
    >>> format(0.00003141566,'.1n') #和g相同
    '3e-05'
    >>> format(0.00003141566,'.3n') #和g相同
    '3.14e-05'
    >>> format(0.00003141566) #和g相同
    '3.141566e-05'
    View Code
  • vars:返回當前做用域內的局部變量和其值組成的字典,或者返回對象的屬性列表
  • #做用於類實例
    >>> class A(object): pass
    
    >>> a.__dict__ {} >>> vars(a) {} >>> a.name = 'Kim'
    >>> a.__dict__ {'name': 'Kim'} >>> vars(a) {'name': 'Kim'}
    View Code

 

  反射操做

  • __import__:動態導入模塊
  • index = __import__('index') index.sayHello()
    View Code
  • isinstance:判斷對象是不是類或者類型元組中任意類元素的實例
  • >>> isinstance(1,int) True >>> isinstance(1,str) False >>> isinstance(1,(int,str)) True
    View Code
  • issubclass:判斷類是不是另一個類或者類型元組中任意類元素的子類
  • >>> issubclass(bool,int) True >>> issubclass(bool,str) False >>> issubclass(bool,(str,int)) True
    View Code
  • hasattr:檢查對象是否含有屬性
  • #定義類A
    >>> class Student: def __init__(self,name): self.name = name >>> s = Student('Aim') >>> hasattr(s,'name') #a含有name屬性
    True >>> hasattr(s,'age') #a不含有age屬性
    False
    View Code
  • getattr:獲取對象的屬性值
  • #定義類Student
    >>> class Student: def __init__(self,name): self.name = name >>> getattr(s,'name') #存在屬性name
    'Aim'
    
    >>> getattr(s,'age',6) #不存在屬性age,但提供了默認值,返回默認值
    
    >>> getattr(s,'age') #不存在屬性age,未提供默認值,調用報錯
    Traceback (most recent call last): File "<pyshell#17>", line 1, in <module> getattr(s,'age') AttributeError: 'Stduent' object has no attribute 'age'
    View Code
  • setattr:設置對象的屬性值
  • >>> class Student: def __init__(self,name): self.name = name >>> a = Student('Kim') >>> a.name 'Kim'
    >>> setattr(a,'name','Bob') >>> a.name 'Bob'
    View Code
  • delattr:刪除對象的屬性
  • #定義類A
    >>> class A: def __init__(self,name): self.name = name def sayHello(self): print('hello',self.name) #測試屬性和方法
    >>> a.name '小麥'
    >>> a.sayHello() hello 小麥 #刪除屬性
    >>> delattr(a,'name') >>> a.name Traceback (most recent call last): File "<pyshell#47>", line 1, in <module> a.name AttributeError: 'A' object has no attribute 'name'
    View Code
  • callable:檢測對象是否可被調用
  • >>> class B: #定義類B
        def __call__(self): print('instances are callable now.') >>> callable(B) #類B是可調用對象
    True >>> b = B() #調用類B
    >>> callable(b) #實例b是可調用對象
    True >>> b() #調用實例b成功
    instances are callable now.
    View Code

 

  變量操做python

  • globals:返回當前做用域內的全局變量和其值組成的字典
  • >>> globals() {'__spec__': None, '__package__': None, '__builtins__': <module 'builtins' (built-in)>, '__name__': '__main__', '__doc__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>} >>> a = 1
    >>> globals() #多了一個a
    {'__spec__': None, '__package__': None, '__builtins__': <module 'builtins' (built-in)>, 'a': 1, '__name__': '__main__', '__doc__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>}
    View Code
  • locals:返回當前做用域內的局部變量和其值組成的字典
  • >>> def f(): print('before define a ') print(locals()) #做用域內無變量
        a = 1
        print('after define a') print(locals()) #做用域內有一個a變量,值爲1
    
        
    >>> f <function f at 0x03D40588>
    >>> f() before define a {} after define a {'a': 1}
    View Code

 

  交互操做

  文件操做

 

  編譯執行

  裝飾器

  • property:標示屬性的裝飾器
  • >>> class C: def __init__(self): self._name = '' @property def name(self): """i'm the 'name' property."""
            return self._name @name.setter def name(self,value): if value is None: raise RuntimeError('name can not be None') else: self._name = value >>> c = C() >>> c.name # 訪問屬性
    ''
    >>> c.name = None # 設置屬性時進行驗證
    Traceback (most recent call last): File "<pyshell#84>", line 1, in <module> c.name = None File "<pyshell#81>", line 11, in name raise RuntimeError('name can not be None') RuntimeError: name can not be None >>> c.name = 'Kim' # 設置屬性
    >>> c.name # 訪問屬性
    'Kim'
    
    >>> del c.name # 刪除屬性,不提供deleter則不能刪除
    Traceback (most recent call last): File "<pyshell#87>", line 1, in <module>
        del c.name AttributeError: can't delete attribute
    >>> c.name 'Kim'
    View Code
  • classmethod:標示方法爲類方法的裝飾器
  • >>> class C: @classmethod def f(cls,arg1): print(cls) print(arg1) >>> C.f('類對象調用類方法') <class '__main__.C'> 類對象調用類方法 >>> c = C() >>> c.f('類實例對象調用類方法') <class '__main__.C'> 類實例對象調用類方法
    View Code
  • staticmethod:標示方法爲靜態方法的裝飾器
  • # 使用裝飾器定義靜態方法
    >>> class Student(object): def __init__(self,name): self.name = name @staticmethod def sayHello(lang): print(lang) if lang == 'en': print('Welcome!') else: print('你好!') >>> Student.sayHello('en') #類調用,'en'傳給了lang參數
    en Welcome! >>> b = Student('Kim') >>> b.sayHello('zh')  #類實例對象調用,'zh'傳給了lang參數
    zh 你好
    View Code 

 

  菜鳥教程

  

abs() dict() help() min() setattr()
all() dir() hex() next() slice()
any() divmod() id() object() sorted()
ascii() enumerate() input() oct() staticmethod()
bin() eval() int() open() str()
bool() exec() isinstance() ord() sum()
bytearray() filter() issubclass() pow() super()
bytes() float() iter() print() tuple()
callable() format() len() property() type()
chr() frozenset() list() range() vars()
classmethod() getattr() locals() repr() zip()
compile() globals() map() reversed() __import__()
complex() hasattr() max() round()  
delattr() hash() memoryview() set()
相關文章
相關標籤/搜索