15個最近才知道的Python實用操作
1)映射代理(不可變字典)
映射代理是創(chuàng)建后無法更改的字典。如果我們不希望用戶能夠更改我們的值,就可以使用它。
from types import MappingProxyType mp = MappingProxyType({'apple':4, 'orange':5}) print(mp) # {'apple': 4, 'orange': 5}
如果我們嘗試更改映射代理中的內(nèi)容,就會出現(xiàn)錯誤。
from types import MappingProxyType mp = MappingProxyType({'apple':4, 'orange':5}) print(mp) ''' Traceback (most recent call last): File "some/path/a.py", line 4, in <module> mp['apple'] = 10 ~~^^^^^^^^^ TypeError: 'mappingproxy' object does not support item assignment '''
2) dict 對于類和對象是不同的
class Dog: def __init__(self, name, age): self.name = name self.age = age rocky = Dog('rocky', 5) print(type(rocky.__dict__)) # <class 'dict'> print(rocky.__dict__) # {'name': 'rocky', 'age': 5} print(type(Dog.__dict__)) # <class 'mappingproxy'> print(Dog.__dict__) # {'__module__': '__main__', # '__init__': <function Dog.__init__ at 0x108f587c0>, # '__dict__': <attribute '__dict__' of 'Dog' objects>, # '__weakref__': <attribute '__weakref__' of 'Dog' objects>, # '__doc__': None}
對象的 dict 屬性是普通字典,而類的 dict 屬性是映射代理,它們本質(zhì)上是不可變字典(無法更改)。
3) any() 和 all()
any([True, False, False]) # True any([False, False, False]) # False all([True, False, False]) # False all([True, True, True]) # True
any() 和 all() 函數(shù)都接受可迭代對象(例如列表)。
any() 如果至少有一個元素為 True,則返回 True。
all() 只有當所有元素都為 True 時才返回 True。
4) divmod()
內(nèi)置的divmod()函數(shù)可以同時執(zhí)行//和%運算符。
quotient, remainder = divmod(27, 10) ???????print(quotient) # 2 print(remainder) # 7
這里,27 // 10 的值為2,而 27 % 10 的值為7。因此,返回元組2,7。
5) 使用格式化字符串輕松檢查變量
name = 'rocky' age = 5 string = f'{name=} {age=}' print(string) # name='rocky' age=5
在格式化字符串中,我們可以在變量后面添加 = 以使用 var_name=var_value 的語法打印它。
6) 我們可以將浮點數(shù)轉(zhuǎn)換為比率
print(float.as_integer_ratio(0.5)) # (1, 2) print(float.as_integer_ratio(0.25)) # (1, 4) print(float.as_integer_ratio(1.5)) # (3, 2)
內(nèi)置的 float.as_integer_ratio() 函數(shù)允許我們將浮點數(shù)轉(zhuǎn)換為表示分數(shù)的元組。但有時它會表現(xiàn)得很奇怪。
print(float.as_integer_ratio(0.1)) # (3602879701896397, 36028797018963968) print(float.as_integer_ratio(0.2)) # (3602879701896397, 18014398509481984)
7) 用globals()和locals()顯示現(xiàn)有的全局/本地變量
x = 1 print(globals()) # {'__name__': '__main__', '__doc__': None, ..., 'x': 1}
內(nèi)置的 globals() 函數(shù)返回一個包含所有全局變量及其值的字典。
def test(): x = 1 y = 2 print(locals()) test() # {'x': 1, 'y': 2}
內(nèi)置函數(shù) locals() 返回一個包含所有局部變量及其值的字典。
8) import() 函數(shù)
import numpy as np import pandas as pd
^ 導入模塊的常規(guī)方式。
np = __import__('numpy') pd = __import__('pandas')
^ 這與上面的代碼塊執(zhí)行相同的操作。
9) Python中的無限值
a = float('inf') b = float('-inf')
^ 我們可以定義正無窮和負無窮。 正無窮大于所有其他數(shù)字,而負無窮小于所有其他數(shù)字。
10) 我們可以使用 ‘pprint’ 來漂亮地打印東西
from pprint import pprint d = {"A":{"apple":1, "orange":2, "pear":3}, "B":{"apple":4, "orange":5, "pear":6}, "C":{"apple":7, "orange":8, "pear":9}} pprint(d)
11) 我們可以在Python中打印彩色輸出
我們需要先安裝colorama。
from colorama import Fore print(Fore.RED + "hello world") print(Fore.BLUE + "hello world") print(Fore.GREEN + "hello world")
12) 創(chuàng)建字典的更快方法
d1 = {'apple':'pie', 'orange':'juice', 'pear':'cake'}
^ 正常的方式
d2 = dict(apple='pie', orange='juice', pear='cake')
^更快的方法。這與上面的代碼塊完全相同,但我們輸入較少的引號。
13) 我們可以在Python中取消打印的內(nèi)容
CURSOR_UP = '\033[1A' CLEAR = '\x1b[2K' print('apple') print('orange') print('pear') print((CURSOR_UP + CLEAR)*2, end='') # this unprints 2 lines print('pineapple')
14) 對象中的私有變量并不是真正的私有
class Dog: def __init__(self, name): self.__name = name @property def name(self): return self.__name
這里,self.__name變量應(yīng)該是私有的。我們不應(yīng)該能夠從類外部訪問它。但實際上我們可以。
rocky = Dog('rocky') print(rocky.__dict__) # {'_Dog__name': 'rocky'}
我們可以使用 dict 屬性來訪問或編輯這些屬性。
15) 我們可以使用’type()'創(chuàng)建類
classname = type(name, bases, dict)
name 是一個字符串,代表類的名稱
bases 是包含類父類的元組
dict 是包含屬性和方法的字典
class Dog: def __init__(self, name, age): self.name = name self.age = age def bark(self): print(f'Dog({self.name}, {self.age})')
^ 以正常方式創(chuàng)建一個 Dog 類
def __init__(self, name, age): self.name = name self.age = age def bark(self): print(f'Dog({self.name}, {self.age})') Dog = type('Dog', (), {'__init__':__init__, 'bark':bark})
^ 使用 type() 創(chuàng)建與上面完全相同的 Dog 類
以上就是15個最近才知道的Python實用操作的詳細內(nèi)容,更多關(guān)于Python操作的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python 百度aip實現(xiàn)文字識別的實現(xiàn)示例
百度aip將圖片或掃描件中的文字識別成可編輯的文本,本文主要介紹了python 百度aip實現(xiàn)文字識別,具有一定的參考價值,感興趣的可以了解一下2021-08-08django認證系統(tǒng)實現(xiàn)自定義權(quán)限管理的方法
這篇文章主要介紹了django認證系統(tǒng)實現(xiàn)自定義權(quán)限管理的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07Python的Django框架實現(xiàn)數(shù)據(jù)庫查詢(不返回QuerySet的方法)
這篇文章主要介紹了Python的Django框架實現(xiàn)數(shù)據(jù)庫查詢(不返回QuerySet的方法)2020-05-05Python turtle庫繪制菱形的3種方式小結(jié)
今天小編就為大家分享一篇Python turtle庫繪制菱形的3種方式小結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11利用Python腳本生成sitemap.xml的實現(xiàn)方法
最近項目中需要用腳本生成sitemap,中間學習了一下sitemap的格式和lxml庫的用法。把結(jié)果記錄一下,方便以后需要直接拿來用。下面這篇文章主要介紹了利用Python腳本生成sitemap.xml的實現(xiàn)方法,需要的朋友可以參考借鑒,一起來看看吧。2017-01-01python中pd.cut()與pd.qcut()的對比及示例
本文主要介紹了python中pd.cut()與pd.qcut()的對比及示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-06-06django使用sqlite3統(tǒng)計前臺站點訪問數(shù)量示例
這篇文章主要為大家介紹了django使用sqlite3統(tǒng)計前臺站點訪問數(shù)量示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08