python函數的作用是:
成都創新互聯是一家專注于成都網站設計、成都網站建設與策劃設計,昭平網站建設哪家好?成都創新互聯做網站,專注于網站建設十多年,網設計領域的專業建站公司;建站業務涵蓋:昭平等地區。昭平做網站價格咨詢:13518219792
1、函數其實是把某個功能的代碼封裝到一個代碼塊中,用來為某個重復使用的功能做調用的一個代碼塊,可以稱為一個函數的代碼封裝。可以在自定義函數的小括號中傳入多個參數。
2、形參:在定義函數時,小括號中的參數名稱。實參:在函數名稱的小括號中,傳入實際的值代替了形參的這個值。函數可以有返回值(使用return進行返回),也可以沒有返回值。
3、形參可以當做函數內部的一個變量使用,往往只在函數內部進行使用,不影響函數外部的相同名稱的變量。
4、在函數內部可以返回某個值。直接在函數內部退出來,而不再繼續執行函數下面的代碼。
更多關于python函數的作用,進入:查看更多內容
python的常用內置函數
1.abs() 函數返回數字的絕對值
abs(-40)=40
2. dict() 函數用于創建一個字典
dict()
{} ? ? ?#創建一個空字典類似于u={},字典的存取方式一般為key-value
例如u = {"username":"tom", ?"age":18}
3. help() 函數用于查看函數或模塊用途的詳細說明
help('math')查看math模塊的用處
a=[1,2,3,4]
help(a)查看列表list幫助信息
4.dir()獲得當前模塊的屬性列表
dir(help)
['__call__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
5.min() 方法返回給定參數的最小值 /參數可以為序列
a=? min(10,20,30,40)
a
10
6. next() 返回迭代器的下一個項目
it = iter([1, 2, 3, 4, 5])
next(it)
1
next(it)
2
7. id() 函數用于獲取對象的內存地址
a=12
id(a)
1550569552
8.enumerate() 函數用于將一個可遍歷的數據對象(如列表、元組或字符串)組合為一個索引序列,同時列出數據和數據下標,一般用在 for 循環當中。
a=["tom","marry","leblan"]
list(enumerate(a))
[(0, 'tom'), (1, 'marry'), (2, 'leblan')]
9. oct() 函數將一個整數轉換成8進制字符串
oct(15)
'0o17'
oct(10)
'0o12'
10. bin() 返回一個整數 int 或者長整數 long int 的二進制表示
bin(10)
'0b1010'
bin(15)
'0b1111'
11.eval() 函數用來執行一個字符串表達式,并返回表達式的值
eval('2+2')
4
12.int() 函數用于將一個字符串會數字轉換為整型
int(3)
3
int(3.6)
3
int(3.9)
3
int(4.0)
4
13.open() 函數用于打開一個文件,創建一個file對象,相關的方法才可以調用它進行讀寫
f=open('test.txt')
14.str() 函數將對象轉化為適于人閱讀的形式
str(3)
'3'
15. bool() 函數用于將給定參數轉換為布爾類型,如果沒有參數,返回 False
bool()
False
bool(1)
True
bool(10)
True
bool(10.0)
True
16.isinstance() 函數來判斷一個對象是否是一個已知的類型
a=5
isinstance(a,int)
True
isinstance(a,str)
False
17. sum() 方法對系列進行求和計算
sum([1,2,3],5)
11
sum([1,2,3])
6
18. super() 函數用于調用下一個父類(超類)并返回該父類實例的方法。super 是用來解決多重繼承問題的,直接用類名調用父類方法
class ? User(object):
? def__init__(self):
class Persons(User):
? ? ? ? super(Persons,self).__init__()
19. float() 函數用于將整數和字符串轉換成浮點數
float(1)
1.0
float(10)
10.0
20. iter() 函數用來生成迭代器
a=[1,2,3,4,5,6]
iter(a)
for i in iter(a):
... ? ? ? ? print(i)
...
1
2
3
4
5
6
21.tuple 函數將列表轉換為元組
a=[1,2,3,4,5,6]
tuple(a)
(1, 2, 3, 4, 5, 6)
22.len() 方法返回對象(字符、列表、元組等)長度或項目個數
s = "playbasketball"
len(s)
14
a=[1,2,3,4,5,6]
len(a)
6
23. property() 函數的作用是在新式類中返回屬性值
class User(object):
?def __init__(self,name):
? ? ? ? ? self.name = name
def get_name(self):
? ? ? ? ? return self.get_name
@property
?def name(self):
? ? ? ? ?return self_name
24.type() 函數返回對象的類型
25.list() 方法用于將元組轉換為列表
b=(1,2,3,4,5,6)
list(b)
[1, 2, 3, 4, 5, 6]
26.range() 函數可創建一個整數列表,一般用在 for 循環中
range(10)
range(0, 10)
range(10,20)
range(10, 20)
27. getattr() 函數用于返回一個對象屬性值
class w(object):
... ? ? ? ? ? ? s=5
...
a = w()
getattr(a,'s')
5
28. complex() 函數用于創建一個復數或者轉化一個字符串或數為復數。如果第一個參數為字符串,則不需要指定第二個參數
complex(1,2)
(1+2j)
complex(1)
(1+0j)
complex("1")
(1+0j)
29.max() 方法返回給定參數的最大值,參數可以為序列
b=(1,2,3,4,5,6)
max(b)
6
30. round() 方法返回浮點數x的四舍五入值
round(10.56)
11
round(10.45)
10
round(10.45,1)
10.4
round(10.56,1)
10.6
round(10.565,2)
10.56
31. delattr 函數用于刪除屬性
class Num(object):
...? ? a=1
...? ? b=2
...? ? c=3.
.. print1 = Num()
print('a=',print1.a)
a= 1
print('b=',print1.b)
b= 2
print('c=',print1.c)
c= 3
delattr(Num,'b')
print('b=',print1.b)
Traceback (most recent call last):? File "", line 1, inAttributeError: 'Num' object has no attribute 'b'
32. hash() 用于獲取取一個對象(字符串或者數值等)的哈希值
hash(2)
2
hash("tom")
-1675102375494872622
33. set() 函數創建一個無序不重復元素集,可進行關系測試,刪除重復數據,還可以計算交集、差集、并集等。
a= set("tom")
b = set("marrt")
a,b
({'t', 'm', 'o'}, {'m', 't', 'a', 'r'})
ab#交集
{'t', 'm'}
a|b#并集
{'t', 'm', 'r', 'o', 'a'}
a-b#差集
{'o'}
python中eval函數作用是計算字符串中有效的表達式,并返回結果。將字符串轉成相應的對象(如list、tuple、dict和string之間的轉換)。利用反引號轉換的字符串再反轉回對象。
eval()函數用來執行一個字符串表達式,并返回表達式的值。eval函數功能:將字符串str當成有效的表達式來求值并返回計算結果。eval函數可以實現list、dict、tuple與str之間的轉化。
Python語言的介紹
Python是一種計算機程序設計語言,由吉多·范羅蘇姆創造,第一版發布于1991年,可以視之為一種改良的LISP。Python的設計哲學強調代碼的可讀性和簡潔的語法。相比于C++或Java,Python讓開發者能夠用更少的代碼表達想法。
Python語言的簡潔性、易讀性以及可擴展性,在國外用Python做科學計算的研究機構日益增多,一些知名大學已經采用Python來教授程序設計課程。
目錄
許多編程語言都有一個特殊的函數,當操作系統開始運行程序時會自動執行該函數。這個函數通常被命名為main(),并且依據語言標準具有特定的返回類型和參數。另一方面,Python解釋器從文件頂部開始執行腳本,并且沒有自動執行的特殊函數。
盡管如此,為程序的執行定義一個起始點有助于理解程序是如何運行的。Python程序員提出了幾種方式對此進行實現。
本文結束時,您將了解以下內容:
Python中的基本main()函數
一些Python腳本中,包含一個函數定義和一個條件語句,如下所示:
此代碼中,包含一個main()函數,在程序執行時打印Hello World!。此外,還包含一個條件(或if)語句,用于檢查__name__的值并將其與字符串"__main__"進行比較。當if語句為True時,Python解釋器將執行main()函數。更多關于Python條件語句的信息可以由此獲得。
這種代碼模式在Python文件中非常常見,它將作為腳本執行并導入另一個模塊。為了幫助理解這段代碼的執行方式,首先需要了解Python解釋器如何根據代碼的執行方式設置__name__。
Python中的執行模式
Python解釋器執行代碼有兩種方式:
更多內容可參考如何運行Python腳本。無論采用哪種方式,Python都會定義一個名為__name__的特殊變量,該變量包含一個字符串,其值取決于代碼的使用方式。
本文將如下示例文件保存為execution_methods.py,以 探索 代碼如何根據上下文改變行為:
在此文件中,定義了三個對print()函數的調用。前兩個打印一些介紹性短語。第三個print()會先打印短語The value __name__ is,之后將使用Python內置的repr()函數打印出__name__變量。
在Python中,repr()函數將對象轉化為供解釋器讀取的形式。上述示例通過使用repr()函數來強調__name__的值為字符串。更多關于repr()的內容可參考Python文檔。
在本文中,您將隨處可見文件(file),模塊(module)和腳本(script)這三個字眼。實際上,三者之間并無太大的差別。不過,在強調代碼目的時,還是存在細微的差異:
“如何運行Python腳本”一文也討論了三者的差別。
基于命令行執行
在這類方法中,Python腳本將通過命令行來執行。
執行腳本時,無法與Python解釋器正在執行的代碼交互。關于如何通過命令行執行代碼的詳細信息對本文而言并不重要,但您可以通過展開下框閱讀更多有關Windows,Linux和macOS之間命令行差異的內容。
命令行環境
不同的操作系統在使用命令行執行代碼時存在細微的差異。
在Linux和macOS中,通常使用如下命令:
美元符號($)之前的內容可能有所不同,具體取決于您的用戶名和計算機名稱。您鍵入的命令位于$之后。在Linux或macOS上,Python3的可執行文件名為python3,因此可以通過輸入python3 script_name.py來運行python腳本。
在Windows上,命令提示符通常如下所示:
根據您的用戶名,之前的內容可能會有所不同,您輸入的命令位于之后。在Windows上,Python3的可執行文件通常為python。因此可以通過輸入python script_name.py來運行python腳本。
無論哪種操作系統,本文的Python腳本的輸出結果都是相同的。因此本文以Linux和macOS為例。
使用命令行執行execution_methods.py,如下所示:
在這個示例中,__name__具有值'__main__',其中引號(')表明該值為字符串類型。
請記住,在Python中,使用單引號(')和雙引號(")定義的字符串沒有區別。更多關于字符串的內容請參考Python的基本數據類型。
如果在腳本中包含"shebang行"并直接執行它(./execution_methods.py),或者使用IPython或Jupyter Notebook的%run,將會獲取相同的結果。
您還可以通過向命令行添加-m參數的方法實現以模塊的方式執行。通常情況下,推薦如下方式pip: python3 -m pip install package_name。
添加-m參數將會運行包中__main__.py的代碼。更多關于__main__.py文件的內容可參考如何將開源Python包發布到PyPI中。
在三種情況中,__name__都具有相同的值:字符串'__main__'。
技術細節:Python文檔中具體定義了__name__何時取值為'__main__'。
當通過標準輸入,腳本或者交互提示中讀取數據時,模塊的__name__將取值為'__main__'。(來源)
__name__與__doc__,__package__和其他屬性一起存儲在模塊的全局命名空間。更多關于屬性的信息可參考Python數據模型文檔,特別是關于模塊和包的信息,請參閱Python Import文檔。
導入模塊或解釋器
接下來是Python解釋器執行代碼的第二種方式:導入。在開發模塊或腳本時,可以使用import關鍵字導入他人已經構建的模塊。
在導入過程中,Python執行指定模塊中定義的語句(但僅在第一次導入模塊時)。要演示導入execution_methods.py文件的結果,需要啟動Python解釋器,然后導入execution_methods.py文件:
在此代碼輸出中,Python解釋器執行了三次print()函數調用。前兩行由于沒有變量,在輸出方面與在命令行上作為腳本執行時完全相同。但是第三個輸出存在差異。
當Python解釋器導入代碼時,__name__的值與要導入的模塊的名稱相同。您可以通過第三行的輸出了解這一點。__name__的值為'execution_methods',是Python導入的.py文件。
注意如果您在沒有退出Python時再次導入模塊,將不會有輸出。
注意:更多關于導入在Python中如何工作的內容請參考官方文檔和Python中的絕對和相對導入。
Main函數的最佳實踐
既然您已經了解兩種執行方式上的差異,那么掌握一些最佳實踐方案還是很有用的。它們將適用于編寫作為腳本運行的代碼或者在另一個模塊導入的代碼。
如下是四種實踐方式:
將大部分代碼放入函數或類中
請記住,Python解釋器在導入模塊時會執行模塊中的所有代碼。有時如果想要實現用戶可控的代碼,會導致一些副作用,例如:
在這種情況下,想要實現用戶控制觸發此代碼的執行,而不是讓Python解釋器在導入模塊時執行代碼。
因此,最佳方法是將大部分代碼包含在函數或類中。這是因為當Python解釋器遇到def或class關鍵字時,它只存儲這些定義供以后使用,并且在用戶通知之前不會實際執行。
將如下代碼保存在best_practices.py以證明這個想法:
在此代碼中,首先從time模塊中導入sleep()。
在這個示例中,參數以秒的形式傳入sleep()函數中,解釋器將暫停一段時間再運行。隨后,使用print()函數打印關于代碼描述的語句。
之后,定義一個process_data()函數,執行如下五項操作:
在命令行中執行
當你將此文件作為腳本用命令行執行時會發生什么呢?
Python解釋器將執行函數定義之外的from time import sleep和print(),之后將創建函數process_data()。然后,腳本將退出而不做任何進一步的操作,因為腳本沒有任何執行process_data()的代碼。
如下是這段腳本的執行結果:
我們在這里看到的輸出是第一個print()的結果。注意,從time導入和定義process_data()函數不產生結果。具體來說,調用定義在process_data()內部的print()不會打印結果。
導入模塊或解釋器執行
在會話(或其他模塊)中導入此文件時,Python解釋器將執行相同的步驟。
Python解釋器導入文件后,您可以使用已導入模塊中定義的任何變量,類或函數。為了證明這一點,我們將使用可交互的Python解釋器。啟動解釋器,然后鍵入import best_practices:
導入best_practices.py后唯一的輸出來自process_data()函數外定義的print()。導入模塊或解釋器執行與基于命令行執行類似。
使用__name__控制代碼的執行
如何實現基于命令行而不使用Python解釋器導入文件來執行呢?
您可以使用__name__來決定執行上下文,并且當__name__等于"__main__"時才執行process_data()。在best_practices.py文件中添加如下代碼:
這段代碼添加了一個條件語句來檢驗__name__的值。當值為"__main__"時,條件為True。記住當__name__變量的特殊值為"__main__"時意味著Python解釋器會執行腳本而不是將其導入。
條件語塊內添加了四行代碼(第12,13,14和15行):
現在,在命令行中運行best_practices.py,并觀察輸出的變化:
首先,輸出顯示了process_data()函數外的print()的調用結果。
之后,data的值被打印。因為當Python解釋器將文件作為腳本執行時,變量__name__具有值"__main__",因此條件語句被計算為True。
接下來,腳本將調用process_data()并傳入data進行修改。當process_data執行時,將輸出一些狀態信息。最終,將輸出modified_data的值。
現在您可以驗證從解釋器(或其他模塊)導入best_practices.py后發生的事情了。如下示例演示了這種情況:
注意,當前結果與將條件語句添加到文件末尾之前相同。因為此時__name__變量的值為"best_practices",因此條件語句結果為False,Python將不執行process_data()。
創建名為main()的函數來包含要運行的代碼
現在,您可以編寫作為腳本由從命令行執行并導入且沒有副作用的Python代碼。接下來,您將學習如何編寫代碼并使其他程序員能輕松地理解其含義。
許多語言,如C,C++,Java以及其他的一些語言,都會定義一個叫做main()的函數,當編譯程序時,操作系統會自動調用該函數。此函數通常被稱為入口點(entry point),因為它是程序進入執行的起始位置。
相比之下,Python沒有一個特殊的函數作為腳本的入口點。實際上在Python中可以將入口點定義成任何名稱。
盡管Python不要求將函數命名為main(),但是最佳的做法是將入口點函數命名為main()。這樣方便其他程序員定位程序的起點。
此外,main()函數應該包含Python解釋器執行文件時要運行的任何代碼。這比將代碼放入條件語塊中更好,因為用戶可以在導入模塊時重復使用main()函數。
修改best_practices.py文件如下所示:
在這個示例中,定義了一個main()函數,它包含了上面的條件語句塊。之后修改條件語塊執行main()。如果您將此代碼作為腳本運行或導入,將獲得與上一節相同的輸出。
在main()中調用其他函數
另一種常見的實現方式是在main()中調用其他函數,而不是直接將代碼寫入main()。這樣做的好處在于可以實現將幾個獨立運行的子任務整合。
例如,某個腳本有如下功能:
如果在單獨的函數中各自實現這些子任務,您(或其他用戶)可以很容易地實現代碼重用。之后您可以在main()函數中創建默認的工作流。
您可以根據自己的情況選擇是否使用此方案。將任務拆分為多個函數會使重用更容易,但會增加他人理解代碼的難度。
修改best_practices.py文件如下所示:
在此示例代碼中,文件的前10行具有與之前相同的內容。第12行的第二個函數創建并返回一些示例數據,第17行的第三個函數模擬將修改后的數據寫入數據庫。
第21行定義了main()函數。在此示例中,對main()做出修改,它將調用數據讀取,數據處理以及數據寫入等功能。
首先,從read_data_from_web()中創建data。將data作為參數傳入process_data(),之后將返回modified_data。最后,將modified_data傳入write_data_to_database()。
腳本的最后兩行是條件語塊用于驗證__name__,并且如果if語句為True,則執行main()。
在命令行中運行如下所示:
根據執行結果,Python解釋器在執行main()函數時,將依次執行read_data_from_web(),process_data()以及write_data_to_database()。當然,您也可以導入best_practices.py文件并重用process_data()作為不同的數據輸入源,如下所示:
在此示例中,導入了best_practices并且將其簡寫為bp。
導入過程會導致Python解釋器執行best_practices.py的全部代碼,因此輸出顯示解釋文件用途的信息。
然后,從文件中存儲數據而不是從Web中讀取數據。之后,可以重用best_practices.py文件中的process_data()和write_data_to_database()函數。在此情況下,可以利用代碼重寫來取代在main()函數中實現全部的代碼邏輯。
實踐總結
以下是Python中main()函數的四個關鍵最佳實踐:
結論
恭喜!您現在已經了解如何創建Python main()函數了。
本文介紹了如下內容:
現在,您可以開始編寫一些非常棒的關于Python main()函數代碼啦!
def 函數名():? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ?函數體? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ?return? 返回值? ? ? ? ? ? ? ? ? ? ? ? ? ??
def 函數名(非可選參數,可選參數):
???函數體?
return 返回值
def 函數名(參數,*b):
? ? 函數體
? ? return 返回值
函數名 = lambda 參數 : 表達式
例1:f = lambda x , y? :? x + y? ? ? ? ? ? ? ? ? ? ? ??
調用:f(6 + 8)? ? ?輸出:14? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
例2:?f = lambda : "沒有參數的lambda函數!"
調用:?print(f())? ? 輸出: 沒有參數的lambda函數!
文章題目:python發布函數,python程序如何發布
網頁地址:http://m.newbst.com/article16/dssepdg.html
成都網站建設公司_創新互聯,為您提供定制網站、移動網站建設、企業網站制作、域名注冊、動態網站、云服務器
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯