1、首先在當(dāng)前目錄下找有沒(méi)有abc、abc.py
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)、做網(wǎng)站、蒲城網(wǎng)絡(luò)推廣、微信平臺(tái)小程序開(kāi)發(fā)、蒲城網(wǎng)絡(luò)營(yíng)銷、蒲城企業(yè)策劃、蒲城品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供蒲城建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com
2、找python的安裝目錄:F:\Python2.7Exe\Lib\site-packages;F:\Python2.7Exe\Lib;
3、找電腦中path下面的目錄
于是我改變路徑,將保存的abc.py文件直接放在python的安裝目錄下,使用import abc命令,然后在Python交互界面用 abc.XXX(XXX是abc.py文件中的定義函數(shù)的函數(shù)名),解決了調(diào)用自定義函數(shù)問(wèn)題。
在python中,除了調(diào)用下載的擴(kuò)展庫(kù)之外,還可以自定義函數(shù),方便自己。把基礎(chǔ)模塊放在固定文件夾(或相對(duì)固定文件夾),使用sys.append(r’自定義的模塊路徑’)實(shí)例如下:
1、在E:pycharm新建hello.py實(shí)現(xiàn)基礎(chǔ)功能函數(shù)(定義一個(gè)hello()函數(shù))
2、 調(diào)用自定義的函數(shù)
3、 運(yùn)行結(jié)果為:
更多Python相關(guān)技術(shù)文章,請(qǐng)?jiān)L問(wèn)Python教程欄目進(jìn)行學(xué)習(xí)!以上就是小編分享的關(guān)于python中如何調(diào)用自己寫(xiě)的函數(shù)的詳細(xì)內(nèi)容希望對(duì)大家有所幫助,更多有關(guān)python教程請(qǐng)關(guān)注環(huán)球青藤其它相關(guān)文章!
函數(shù)是組織好,可重復(fù)使用的,用來(lái)實(shí)現(xiàn)相關(guān)功能的代碼段
函數(shù)提高了代碼的重復(fù)利用率和應(yīng)用的模塊性。
除Python自帶的函數(shù)之外,也可以自己創(chuàng)建函數(shù),叫做自定義函數(shù)
語(yǔ)法:
函數(shù)代碼塊以 def 開(kāi)頭
參數(shù)為 輸入值 ,放于函數(shù)名后口號(hào)里面,
函數(shù)內(nèi)容以冒號(hào):開(kāi)始,函數(shù)體縮進(jìn), return 返回 輸出值
函數(shù)調(diào)用使用關(guān)鍵字參數(shù)來(lái)確定傳入的參數(shù)值,此時(shí),如果多個(gè)函數(shù)則不需要按照指定順序。
在定義函數(shù)時(shí),指定參數(shù)默認(rèn)值。調(diào)用時(shí)如果不傳入?yún)?shù),則使用默認(rèn)值
不定長(zhǎng)部分如果沒(méi)有指定參數(shù),傳入是一個(gè)空元組
加了 兩個(gè)星號(hào) ** 的參數(shù)會(huì)以字典的形式導(dǎo)入
/ 用來(lái)指明函數(shù)形參必須使用指定位置參數(shù),不能使用關(guān)鍵字參數(shù)的形式。
3.8版本之后的才能使用
不使用 def 定義函數(shù),沒(méi)有函數(shù)名
lamdba主體時(shí)一個(gè)表達(dá)式,而不是代碼塊,函數(shù)體比def簡(jiǎn)單很多
定義在函數(shù)內(nèi)部的為局部變量,僅能在函數(shù)內(nèi)部使用
定義在函數(shù)外部的為全局變量,可在全局使用
模塊是將包含所有定義的函數(shù)和變量的文件,一般將同類功能的函數(shù)組和在一起稱為模塊。
模塊需要導(dǎo)入后,在調(diào)用相應(yīng)函數(shù)進(jìn)行使用
模塊導(dǎo)入的方法:
從模塊中導(dǎo)入一個(gè)指定的部分
把一個(gè)模塊的所有內(nèi)容全都導(dǎo)入
已有字符串形式的函數(shù)名稱,那么如何調(diào)用這個(gè)函數(shù)呢?
通過(guò)調(diào)用內(nèi)置函數(shù)locals()和globals()返回的字典對(duì)象,就可以可以獲得名稱與對(duì)象的映射關(guān)系。其中,locals()僅在全局范圍內(nèi)調(diào)用時(shí)可以獲得函數(shù)對(duì)象。 我們來(lái)看以下的例子。
需要注意的是,使用上述方法通過(guò)字符串調(diào)用函數(shù)時(shí),為了系統(tǒng)的安全,防止執(zhí)行任意函數(shù),需要對(duì)函數(shù)名做一些處理,也就是使用統(tǒng)一的前綴為這些函數(shù)命名。例如在上述例子中,使用前綴cmd_+函數(shù)名的形式定義函數(shù)(cmd_help,cmd_sum)。
在傳入函數(shù)名字符串時(shí),只傳入函數(shù)名的后半部分(如"help","sum"),由程序添加前綴后組成完整的函數(shù)名,再調(diào)用該函數(shù)。
對(duì)于類的成員函數(shù),則可以使用getattr()獲得類成員函數(shù)。
上述代碼通過(guò)字符串調(diào)用了類成員函數(shù),與前一段代碼執(zhí)行的結(jié)果相同。
此外,還可以使用字典將字符串與函數(shù)對(duì)應(yīng)起來(lái)調(diào)用,缺點(diǎn)就是每增加一個(gè)函數(shù)需要相應(yīng)在字典對(duì)象中添加相應(yīng)的鍵值,增加代碼維護(hù)工作量。
以上代碼在Python 3.6以上運(yùn)行通過(guò)。
import語(yǔ)句
自定義模塊可以采用import語(yǔ)句來(lái)進(jìn)行引入,其操作步驟是先導(dǎo)入模塊,再調(diào)用模塊中包含的函數(shù),可將自定義模塊放入當(dāng)前目錄,便于解釋器路徑搜索,以下是導(dǎo)入自定義hello.py模塊,并調(diào)用World函數(shù)的實(shí)例:
#!/usr/bin/python
#-*- coding: UTF-8 -*-
#導(dǎo)入模塊
import hello
#現(xiàn)在可以調(diào)用模塊里包含的函數(shù)了
support.print_func("World")
輸出結(jié)果為:
Hello World!
以上實(shí)例也可以采用from…import的方法進(jìn)行實(shí)現(xiàn),是指從一個(gè)模塊中導(dǎo)入指定的部分到當(dāng)前命名空間中,以上功能可寫(xiě)成:
#!/usr/bin/python
#-*- coding: UTF-8 -*-
from hello import World
如果要將模塊中的所有內(nèi)容全部導(dǎo)入當(dāng)前命名空間,可采用from…import*的方法,具體實(shí)例如下:
#!/usr/bin/python
#-*- coding: UTF-8 -*-
from hello import *
還需注意,當(dāng)要導(dǎo)入一個(gè)模塊時(shí),Python解釋器會(huì)對(duì)模塊的位置進(jìn)行搜索,具體搜索順序規(guī)律如下:
1.當(dāng)前目錄;
2.如果不在當(dāng)前目錄,Python則搜索在shell變量PYTHONPATH下的每個(gè)目錄;
3.如果都找不到,Python會(huì)察看默認(rèn)路徑。
有什么辦法省略掉那些被調(diào)用函數(shù)的參數(shù)?
也就是func2只想在調(diào)用是傳入一個(gè)c。
那么func2在定義的時(shí)候必須喂飽func1,也就是func2在調(diào)用 func1時(shí),當(dāng)前作用域中要有a,b。
明顯圖中是沒(méi)有做到的,沒(méi)有實(shí)際ab
b可以試試在這個(gè)文件中直接定義 ab兩個(gè)變量,那么在第三個(gè)文件中引入 func2,就可以直接傳c給func2了,因?yàn)閍b已經(jīng)在上一步被配置好。