Python函數(shù)與模塊
Python中可以將函數(shù)存儲(chǔ)在文件中,這個(gè)文件被稱為模塊。將模塊導(dǎo)入到主程序中。import語句允許在當(dāng)前運(yùn)行的程序文件中使用模塊中的代碼,一個(gè)py文件就是一個(gè)模塊
優(yōu)點(diǎn)
- 可隱藏程序代碼的細(xì)節(jié),將重點(diǎn)放在程序的高層邏輯上
導(dǎo)入模塊的方法
導(dǎo)入整個(gè)模塊
- 先創(chuàng)建模塊,模塊是擴(kuò)展名為.py的文件。模塊中包含要導(dǎo)入到程序中的代碼
- 我們先創(chuàng)建一個(gè)函數(shù) 這個(gè)函數(shù)的作用是將多個(gè)字符串拼接在一起 strappend.py
def strappend(*strs):
current_str = ''.join(strs)
print(current_str)
很簡(jiǎn)單,就是將多個(gè)字符串拼接起來
接下來我們?cè)賱?chuàng)建另一個(gè)文件 importmodule.py
在這個(gè)文件中導(dǎo)入剛創(chuàng)建的模塊。
import moduledemo
moduledemo.strappend('1', '2', '3')
moduledemo.strappend('hello', 'i', 'miss', 'you')
輸出結(jié)果:
123
helloimissyou
導(dǎo)入模塊的方法
執(zhí)行過程解釋
在Python讀取這個(gè)文件時(shí),代碼行讀取到import pizza 讓Python打開文件moduledemo.py,并將其中的所有函數(shù)都復(fù)制到這個(gè)程序中。
導(dǎo)入特定的函數(shù)
還可以導(dǎo)入模塊中的特定函數(shù),導(dǎo)入方法的語法如下:
from module_name import function_name
通過用逗號(hào)分隔函數(shù)名,可根據(jù)需要從模塊中導(dǎo)入任意數(shù)量的函數(shù)
from moduledemo import strappend
strappend('1', '2', '3')
strappend('a', 'b', 'c')
這種語法,調(diào)用函數(shù)時(shí)無需使用句點(diǎn)。
使用as給函數(shù)指定別名
如果要導(dǎo)入的函數(shù)的名稱可能和程序中現(xiàn)有的名稱沖突,可指定簡(jiǎn)短而獨(dú)一無二的別名,
下面將函數(shù)strappend指定別名 sp
語法格式為
from module_name import function_name as fn
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2017/9/29 下午4:57
# @Author : xinWang
# @File : importmodule.py
# @Software: PyCharm
from moduledemo import strappend as sp
sp('1', '2', '3')
sp('a', 'b', 'c')
使用as給模塊指定別名
也可以使用as為模塊指定別名,指定模塊別名的通用語法如下:
import module_name as mn
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2017/9/29 下午4:57
# @Author : xinWang
# @File : importmodule.py
# @Software: PyCharm
import part2.defdemo.moduledemo as p
p.strappend('1', '3', '5')
p.strappend('a', 'b', 'c')
導(dǎo)入模塊中的所有函數(shù)
使用*(星號(hào))運(yùn)算符可以讓Python導(dǎo)入模塊中的所有函數(shù)
from module_name import *
import語句中的星號(hào)讓python將模塊moduledemo中的每個(gè)函數(shù)都復(fù)制到這個(gè)程序文件中。由于導(dǎo)入了每個(gè)函數(shù),可以通過名稱來調(diào)用每個(gè)函數(shù)。無需使用句點(diǎn)表示法。
包
按模塊來組織文件就是包
包本質(zhì)上也是文件夾,但是包和文件夾的區(qū)別是 包中有init.py文件,而普通文件夾沒有
導(dǎo)入模塊和導(dǎo)入包
- 導(dǎo)入模塊相當(dāng)于執(zhí)行了一次模塊的文件
- 導(dǎo)入包相當(dāng)于執(zhí)行了init.py
所以導(dǎo)入包中的模塊要使用from 包路徑 import 模塊名,而不能使用import導(dǎo)入一個(gè)包