開頭用import函數
海滄網站建設公司創新互聯建站,海滄網站設計制作,有大型網站制作公司豐富經驗。已為海滄千余家提供企業網站建設服務。企業網站搭建\外貿營銷網站建設要多少錢,請找那個售后服務好的海滄做網站的公司定做!
Python中后面引用前面的代碼,在開頭import函數。在程序里直接使用之前寫的函數代碼就可以了。
1、函數定義
①使用def關鍵字定義函數
②
def 函數名(參數1.參數2.參數3...):
"""文檔字符串,docstring,用來說明函數的作用"""
#函數體
return 表達式
注釋的作用:說明函數是做什么的,函數有什么功能。
③遇到冒號要縮進,冒號后面所有的縮進的代碼塊構成了函數體,描述了函數是做什么的,即函數的功能是什么。Python函數的本質與數學中的函數的本質是一致的。
2、函數調用
①函數必須先定義,才能調用,否則會報錯。
②無參數時函數的調用:函數名(),有參數時函數的調用:函數名(參數1.參數2.……)
③不要在定義函數的時候在函數體里面調用本身,否則會出不來,陷入循環調用。
④函數需要調用函數體才會被執行,單純的只是定義函數是不會被執行的。
⑤Debug工具中Step into進入到調用的函數里,Step Into My Code進入到調用的模塊里函數。
下面的例子演示了用3種方法來在外部引用函數內部定義的列表:
#返回函數內部定義的列表
def int_list1():
l=[1,2]
return l
#將函數內部列表定義成全局的
def int_list2():
global l
l=[3,4]
#將函數內部列表定義成函數的一個屬性
def int_list3():
l=[5,6]
int_list3.l=l
print(int_list1())
int_list2()
print(l)
int_list3()
print(int_list3.l)
這是截圖:
首先,Python中一切事物皆對象,變量是對對象在內存中的存儲和地址的抽象。所有的變量都可以理解是內存中一個對象的“引用”,或者,也可以看似c中void*的感覺。
python中統一都是引用傳遞,同時要注意類型是屬于對象的,而不是變量。而對象有兩種,“可更改”(mutable)與“不可更改”(immutable)對象。在python中,strings, tuples, 和numbers是不可更改的對象,而list,dict等則是可以修改的對象。
當我們寫下面語句時:
Python解釋器其實順序干了兩件事情:
從這里可以看出strings類型是不可變量,不可變實際上指的是不會更該字符串,比如把a = '123' 變為 a ='1234' 實際上是先創建了 “1234” 再用a去指向它。
但是,像list,dict等“可更改”的變量,他們會直接再本地更改,不會進行副本拷貝。
簡言之,當在 Python 中 a = sth 應該理解為給 sth 貼上了一個標簽 a。當再賦值給 a 的時候,就好象把 a 這個標簽從原來的 sth 上拿下來,貼到其他對象上,建立新的"引用"。
既然Python只允許引用傳遞,那有沒有辦法可以讓兩個變量不再指向同一內存地址呢?
copy對于一個復雜對象的子對象并不會完全復制,什么是復雜對象的子對象呢?就比如序列里的嵌套序列,字典里的嵌套序列等都是復雜對象的子對象。對于子對象,python會把它當作一個公共鏡像存儲起來,所有對他的復制都被當成一個引用,所以說當其中一個引用將鏡像改變了之后另一個引用使用鏡像的時候鏡像已經被改變了。
deepcopy的時候會將復雜對象的每一層復制一個單獨的個體出來。 當然其中主要的操作還是地址問題。
當一個引用傳遞給函數的時候,函數自動復制一份引用,這個函數里的引用和外邊的引用沒有半毛關系了.所以第一個例子里函數把引用指向了一個不可變對象,當函數返回的時候,外面的引用沒半毛感覺.而第二個例子就不一樣了,函數內的引用指向的是可變對象,對它的操作就和定位了指針地址一樣,在內存里進行修改.
引用計數
PyObject是每個對象必有的內容,其中ob_refcnt就是做為引用計數。當一個對象有新的引用時,它的ob_refcnt就會增加,當引用它的對象被刪除,它的ob_refcnt就會減少.引用計數為0時,該對象生命就結束了。
優點:
缺點:
如果知道每個函數的名字,可以from math import 函數1,函數2,...,函數n
如果導入全部函數就from math import *,但是一般不建議這么做,還是import math比較好。
分享名稱:python里函數引用,python引入函數
文章URL:http://vcdvsql.cn/article24/hsogje.html
成都網站建設公司_創新互聯,為您提供網站維護、企業建站、建站公司、外貿網站建設、手機網站建設、品牌網站設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯