python入門與進階篇(四)之包、模組、函式與變數作用域
python專案的組織結構
包(資料夾)-->模組(檔案)-->類-->函式和變數
seven.c4、six.c4:(seven)包名.模組名(c4) 構成名稱空間
seven包的結構:
seven
--t(子包)
-- __init__.py (成為一個包必需的檔案)
--c5.py
-- __init__.py (成為一個包必需的檔案)
--c1.py
--c2.py
--c3.py
--c4.py
--c6.py
import 匯入模組
c5: a=1
c2: import t.c5 as m
print(m.a) # 1
# import 匯入模組名 as 改變模組名 # import t.c3 as m # print(m.a) # from t.c3 import a 從c3模組下匯入a變數 # * 代表所有c3中 __all__=['a','b'] 匯出的變數 預設是所有變數 from t.c3 import * print(a) print(b) print(c) ''' 結果: 1 2 Traceback (most recent call last): File "D:\前端\python視訊\python\one\c2.py", line 11, in <module> print(c) NameError: name 'c' is not defined '''
t子包 __init__.py: 包管理
import sys
import io
import datetime
c6中匯入
import t
print(t.sys.path)
包和模組是不會重複匯入的,避免迴圈匯入模組
函式
內建函式:
round() 四捨五入保留幾位小數
a=1.12386
result=round(a,2)
print(result) # 1.12
檢視python內建函式 python-->回車-->help(print)-->more-->回車
自定義函式
def fun(parame_list):
pass
1.def關鍵字定義一個函式 js 直接function fun(){} 或者var fun=function(){}
2.parame_list引數列表可以沒有
3.沒有return 預設返回None js 返回null
4.python函式的定義需放在呼叫之前 js 有函式宣告提升
5.使用函式名呼叫 fun()
6.函式可以返回多個值 構成一個元組 js只能有一個返回值
7.必需引數 skill1和skill2 js引數可以不是必需引數
8.關鍵字引數 呼叫時不需要記住引數的順序 如damage(skill2=6,skill1=1) js沒有關鍵字引數這個說話
9.可以設定預設引數 定義和呼叫時預設引數都放在後面
def damage(skill1,skill2):
damage1=skill1*3
damage2=skill2*3+2
return damage1,damage2
# <class 'tuple'>
print( type(damage(3,6)) )
# 序列解包
skill1_damage,skill2_damage=damage(3,6)
print(skill1_damage) #9
print(skill2_damage) #20
序列解包
a,b,c=1,2,3
d='345' # ['3','4','5'] '3','4','5'
e,f,g=d
print(a) #1
print(b) #2
print(c) #3
print(e) #3
print(f) #4
print(g) #5